[Libreoffice-commits] core.git: include/vcl vcl/source vcl/unx
Caolán McNamara
caolanm at redhat.com
Wed May 13 04:49:30 PDT 2015
include/vcl/salnativewidgets.hxx | 13 -------
vcl/source/control/combobox.cxx | 6 +--
vcl/source/control/edit.cxx | 5 +-
vcl/source/control/ilstbox.cxx | 2 -
vcl/source/control/lstbox.cxx | 8 ++--
vcl/source/control/spinfld.cxx | 6 +--
vcl/source/outdev/nativecontrols.cxx | 19 +---------
vcl/source/window/brdwin.cxx | 13 ++-----
vcl/source/window/toolbox.cxx | 2 -
vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx | 48 +++++++++-----------------
10 files changed, 39 insertions(+), 83 deletions(-)
New commits:
commit b1a9498a1415ca42e4d13f3e56daff0ebffc0ccf
Author: Caolán McNamara <caolanm at redhat.com>
Date: Wed May 13 10:06:02 2015 +0100
Remove EditBoxValue again and just use the native widgets size request
Change-Id: Ib9d0f06bffc9e9d31149a622350145024a9b8a99
diff --git a/include/vcl/salnativewidgets.hxx b/include/vcl/salnativewidgets.hxx
index c8370aa..b61f6e9 100644
--- a/include/vcl/salnativewidgets.hxx
+++ b/include/vcl/salnativewidgets.hxx
@@ -482,19 +482,6 @@ public:
bool mbSingleLine:1;
};
-/* EditBoxValue:
- *
- * Value container for editbox specifying additional drawing hints
- */
-class VCL_DLLPUBLIC EditBoxValue : public ImplControlValue
-{
-public:
- EditBoxValue(long nTextHeight)
- : ImplControlValue(CTRL_EDITBOX, BUTTONVALUE_DONTKNOW, nTextHeight)
- {
- }
- virtual EditBoxValue* clone() const SAL_OVERRIDE;
-};
#endif
diff --git a/vcl/source/control/combobox.cxx b/vcl/source/control/combobox.cxx
index 502ab15..688fff6 100644
--- a/vcl/source/control/combobox.cxx
+++ b/vcl/source/control/combobox.cxx
@@ -109,7 +109,7 @@ void ComboBox::ImplCalcEditHeight()
Rectangle aCtrlRegion( Point( 0, 0 ), Size( 10, 10 ) );
Rectangle aBoundRegion, aContentRegion;
- EditBoxValue aControlValue(GetTextHeight());
+ ImplControlValue aControlValue;
ControlType aType = IsDropDownBox() ? CTRL_COMBOBOX : CTRL_EDITBOX;
if( GetNativeControlRegion( aType, PART_ENTIRE_CONTROL,
aCtrlRegion,
@@ -992,7 +992,7 @@ long ComboBox::getMaxWidthScrollBarAndDownButton() const
long nButtonDownWidth = 0;
vcl::Window *pBorder = GetWindow( WINDOW_BORDER );
- EditBoxValue aControlValue(GetTextHeight());
+ ImplControlValue aControlValue;
Point aPoint;
Rectangle aContent, aBound;
@@ -1425,7 +1425,7 @@ ComboBox::ComboBoxBounds ComboBox::calcComboBoxDropDownComponentBounds(const Siz
long nBottom = rOutSz.Height();
vcl::Window *pBorder = GetWindow( WINDOW_BORDER );
- EditBoxValue aControlValue(GetTextHeight());
+ ImplControlValue aControlValue;
Point aPoint;
Rectangle aContent, aBound;
diff --git a/vcl/source/control/edit.cxx b/vcl/source/control/edit.cxx
index 0d5859e..c642282 100644
--- a/vcl/source/control/edit.cxx
+++ b/vcl/source/control/edit.cxx
@@ -2739,7 +2739,6 @@ void Edit::SetSubEdit( Edit* pEdit )
Size Edit::CalcMinimumSizeForText(const OUString &rString) const
{
int eCtrlType = ImplGetNativeControlType();
- auto nTextHeight = GetTextHeight();
Size aSize;
if (mnWidthInChars != -1)
@@ -2756,7 +2755,7 @@ Size Edit::CalcMinimumSizeForText(const OUString &rString) const
else
aString = rString;
- aSize.Height() = nTextHeight;
+ aSize.Height() = GetTextHeight();
aSize.Width() = GetTextWidth(aString);
aSize.Width() += ImplGetExtraXOffset() * 2;
@@ -2775,7 +2774,7 @@ Size Edit::CalcMinimumSizeForText(const OUString &rString) const
aSize = CalcWindowSize( aSize );
// ask NWF what if it has an opinion, too
- EditBoxValue aControlValue(nTextHeight);
+ ImplControlValue aControlValue;
Rectangle aRect( Point( 0, 0 ), aSize );
Rectangle aContent, aBound;
if( GetNativeControlRegion(
diff --git a/vcl/source/control/ilstbox.cxx b/vcl/source/control/ilstbox.cxx
index 0961df1..8e94b42 100644
--- a/vcl/source/control/ilstbox.cxx
+++ b/vcl/source/control/ilstbox.cxx
@@ -2675,7 +2675,7 @@ void ImplWin::ImplDraw( bool bLayout )
// vcl/source/window/brdwin.cxx
vcl::Window *pWin = GetParent();
- EditBoxValue aControlValue(GetTextHeight());
+ ImplControlValue aControlValue;
if ( !pWin->IsEnabled() )
nState &= ~ControlState::ENABLED;
if ( pWin->HasFocus() )
diff --git a/vcl/source/control/lstbox.cxx b/vcl/source/control/lstbox.cxx
index f45962b..8db825e 100644
--- a/vcl/source/control/lstbox.cxx
+++ b/vcl/source/control/lstbox.cxx
@@ -118,7 +118,7 @@ void ListBox::ImplInit( vcl::Window* pParent, WinBits nStyle )
if( IsNativeWidgetEnabled() &&
IsNativeControlSupported( CTRL_LISTBOX, PART_ENTIRE_CONTROL ) )
{
- EditBoxValue aControlValue(GetTextHeight());
+ ImplControlValue aControlValue;
Rectangle aCtrlRegion( Point( 0, 0 ), Size( 20, mnDDHeight ) );
Rectangle aBoundingRgn( aCtrlRegion );
Rectangle aContentRgn( aCtrlRegion );
@@ -634,7 +634,7 @@ void ListBox::Resize()
// Note: in case of no border, pBorder will actually be this
vcl::Window *pBorder = GetWindow( WINDOW_BORDER );
- EditBoxValue aControlValue(GetTextHeight());
+ ImplControlValue aControlValue;
Point aPoint;
Rectangle aContent, aBound;
@@ -1220,7 +1220,7 @@ Size ListBox::CalcMinimumSize() const
{
// Try native borders; scrollbar size may not be a good indicator
// See how large the edit area inside is to estimate what is needed for the dropdown
- EditBoxValue aControlValue(GetTextHeight());
+ ImplControlValue aControlValue;
Point aPoint;
Rectangle aContent, aBound;
Size aTestSize( 100, 20 );
@@ -1239,7 +1239,7 @@ Size ListBox::CalcMinimumSize() const
if (IsDropDownBox()) // Check minimum height of dropdown box
{
- EditBoxValue aControlValue(GetTextHeight());
+ ImplControlValue aControlValue;
Rectangle aRect( Point( 0, 0 ), aSz );
Rectangle aContent, aBound;
if( GetNativeControlRegion( CTRL_LISTBOX, PART_ENTIRE_CONTROL, aRect, ControlState::NONE,
diff --git a/vcl/source/control/spinfld.cxx b/vcl/source/control/spinfld.cxx
index 00f9a08..aeef55b 100644
--- a/vcl/source/control/spinfld.cxx
+++ b/vcl/source/control/spinfld.cxx
@@ -670,7 +670,7 @@ void SpinField::ImplCalcButtonAreas( OutputDevice* pDev, const Size& rOutSz, Rec
vcl::Window *pBorder = pWin->GetWindow( WINDOW_BORDER );
// get the system's spin button size
- EditBoxValue aControlValue(pWin->GetTextHeight());
+ ImplControlValue aControlValue;
Rectangle aBound;
Point aPoint;
@@ -724,7 +724,7 @@ void SpinField::Resize()
{
ImplCalcButtonAreas( this, aSize, maDropDownRect, maUpperRect, maLowerRect );
- EditBoxValue aControlValue(GetTextHeight());
+ ImplControlValue aControlValue;
Point aPoint;
Rectangle aContent, aBound;
@@ -923,7 +923,7 @@ Size SpinField::CalcMinimumSizeForText(const OUString &rString) const
aSz.Width() += GetSettings().GetStyleSettings().GetScrollBarSize();
if ( GetStyle() & WB_SPIN )
{
- EditBoxValue aControlValue(GetTextHeight());
+ ImplControlValue aControlValue;
Rectangle aArea( Point(), Size(100, aSz.Height()));
Rectangle aEntireBound, aEntireContent, aEditBound, aEditContent;
if (
diff --git a/vcl/source/outdev/nativecontrols.cxx b/vcl/source/outdev/nativecontrols.cxx
index 95fbfaa..e46df33 100644
--- a/vcl/source/outdev/nativecontrols.cxx
+++ b/vcl/source/outdev/nativecontrols.cxx
@@ -150,12 +150,6 @@ PushButtonValue* PushButtonValue::clone() const
return new PushButtonValue( *this );
}
-EditBoxValue* EditBoxValue::clone() const
-{
- assert( typeid( const EditBoxValue ) == typeid( *this ));
- return new EditBoxValue( *this );
-}
-
// These functions are mainly passthrough functions that allow access to
// the SalFrame behind a Window object for native widget rendering purposes.
@@ -254,6 +248,9 @@ static std::shared_ptr< ImplControlValue > TransformControlValue( const ImplCont
aResult.reset( pNew );
}
break;
+ case CTRL_GENERIC:
+ aResult.reset( new ImplControlValue( rVal ) );
+ break;
case CTRL_MENU_POPUP:
{
const MenupopupValue* pMVal = static_cast<const MenupopupValue*>(&rVal);
@@ -262,16 +259,6 @@ static std::shared_ptr< ImplControlValue > TransformControlValue( const ImplCont
aResult.reset( pNew );
}
break;
- case CTRL_EDITBOX:
- {
- auto nTextHeight = rDev.ImplLogicToDevicePixel(Rectangle(0, 0, 0, rVal.getNumericVal())).GetHeight();
- EditBoxValue* pNew = new EditBoxValue(nTextHeight);
- aResult.reset(pNew);
- }
- break;
- case CTRL_GENERIC:
- aResult.reset( new ImplControlValue( rVal ) );
- break;
default:
OSL_FAIL( "unknown ImplControlValue type !" );
break;
diff --git a/vcl/source/window/brdwin.cxx b/vcl/source/window/brdwin.cxx
index 1548757..06a28c0 100644
--- a/vcl/source/window/brdwin.cxx
+++ b/vcl/source/window/brdwin.cxx
@@ -1040,11 +1040,8 @@ void ImplSmallBorderWindowView::Init( OutputDevice* pDev, long nWidth, long nHei
// for native widget drawing we must find out what
// control this border belongs to
ControlType aCtrlType = 0;
- std::unique_ptr<ImplControlValue> xControlValue(new ImplControlValue());
if (pCtrl)
{
- xControlValue.reset(new EditBoxValue(pCtrl->GetTextHeight()));
-
switch( pCtrl->GetType() )
{
case WINDOW_LISTBOX:
@@ -1087,11 +1084,12 @@ void ImplSmallBorderWindowView::Init( OutputDevice* pDev, long nWidth, long nHei
}
if( mbNWFBorder )
{
+ ImplControlValue aControlValue;
Rectangle aCtrlRegion( (const Point&)Point(), Size( mnWidth < 10 ? 10 : mnWidth, mnHeight < 10 ? 10 : mnHeight ) );
Rectangle aBounds( aCtrlRegion );
Rectangle aContent( aCtrlRegion );
if( pWin->GetNativeControlRegion( aCtrlType, PART_ENTIRE_CONTROL, aCtrlRegion,
- ControlState::ENABLED, *xControlValue, OUString(),
+ ControlState::ENABLED, aControlValue, OUString(),
aBounds, aContent ) )
{
mnLeftBorder = aContent.Left() - aBounds.Left();
@@ -1199,10 +1197,8 @@ void ImplSmallBorderWindowView::DrawWindow(sal_uInt16 nDrawFlags, OutputDevice*,
ControlType aCtrlType = 0;
ControlPart aCtrlPart = PART_ENTIRE_CONTROL;
- std::unique_ptr<ImplControlValue> xControlValue(new ImplControlValue());
if (pWin && (pCtrl = mpBorderWindow->GetWindow(WINDOW_CLIENT)) != NULL)
{
- xControlValue.reset(new EditBoxValue(pCtrl->GetTextHeight()));
switch (pCtrl->GetType())
{
case WINDOW_MULTILINEEDIT:
@@ -1266,6 +1262,7 @@ void ImplSmallBorderWindowView::DrawWindow(sal_uInt16 nDrawFlags, OutputDevice*,
if (aCtrlType && pCtrl->IsNativeControlSupported(aCtrlType, aCtrlPart))
{
+ ImplControlValue aControlValue;
ControlState nState = ControlState::ENABLED;
if (!pWin->IsEnabled())
@@ -1299,13 +1296,13 @@ void ImplSmallBorderWindowView::DrawWindow(sal_uInt16 nDrawFlags, OutputDevice*,
Rectangle aContentRgn(aCtrlRegion);
if (!ImplGetSVData()->maNWFData.mbCanDrawWidgetAnySize &&
pWin->GetNativeControlRegion(aCtrlType, aCtrlPart, aCtrlRegion,
- nState, *xControlValue, OUString(),
+ nState, aControlValue, OUString(),
aBoundingRgn, aContentRgn))
{
aCtrlRegion=aContentRgn;
}
- bNativeOK = pWin->DrawNativeControl(aCtrlType, aCtrlPart, aCtrlRegion, nState, *xControlValue, OUString());
+ bNativeOK = pWin->DrawNativeControl(aCtrlType, aCtrlPart, aCtrlRegion, nState, aControlValue, OUString());
// if the native theme draws the spinbuttons in one call, make sure the proper settings
// are passed, this might force a redraw though.... (TODO: improve)
diff --git a/vcl/source/window/toolbox.cxx b/vcl/source/window/toolbox.cxx
index 34f3d0e..41d232f 100644
--- a/vcl/source/window/toolbox.cxx
+++ b/vcl/source/window/toolbox.cxx
@@ -1670,7 +1670,7 @@ bool ToolBox::ImplCalcItem()
{
Rectangle aRect( Point( 0, 0 ), Size( nMinWidth, nMinHeight ) );
Rectangle aReg( aRect );
- EditBoxValue aVal(GetTextHeight());
+ ImplControlValue aVal;
Rectangle aNativeBounds, aNativeContent;
if( IsNativeControlSupported( CTRL_TOOLBAR, PART_BUTTON ) )
{
diff --git a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
index 2aad70e..ce3e88f 100644
--- a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
+++ b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
@@ -1040,25 +1040,12 @@ bool GtkSalGraphics::drawNativeControl( ControlType nType, ControlPart nPart, co
return true;
}
-Rectangle AdjustRectForTextBordersPadding(GtkStyleContext* pStyle, long nContentHeight, const Rectangle& rControlRegion)
+Rectangle GetWidgetSize(const Rectangle& rControlRegion, GtkWidget* widget)
{
- gtk_style_context_save(pStyle);
-
- GtkBorder border;
- gtk_style_context_get_border(pStyle, GTK_STATE_FLAG_NORMAL, &border);
-
- GtkBorder padding;
- gtk_style_context_get_padding(pStyle, GTK_STATE_FLAG_NORMAL, &padding);
-
- gint nWidgetHeight = nContentHeight + padding.top + padding.bottom + border.top + border.bottom;
-
- nWidgetHeight = std::max<gint>(nWidgetHeight, rControlRegion.GetHeight());
-
- Rectangle aEditRect(rControlRegion.TopLeft(), Size(rControlRegion.GetWidth(), nWidgetHeight));
-
- gtk_style_context_restore(pStyle);
-
- return aEditRect;
+ GtkRequisition aReq;
+ gtk_widget_get_preferred_size(widget, NULL, &aReq);
+ long nHeight = (rControlRegion.GetHeight() > aReq.height) ? rControlRegion.GetHeight() : aReq.height;
+ return Rectangle(rControlRegion.TopLeft(), Size(rControlRegion.GetWidth(), nHeight));
}
Rectangle AdjustRectForTextBordersPadding(GtkStyleContext* pStyle, long nContentWidth, long nContentHeight, const Rectangle& rControlRegion)
@@ -1086,6 +1073,8 @@ Rectangle AdjustRectForTextBordersPadding(GtkStyleContext* pStyle, long nContent
static GtkWidget* gCacheWindow;
static GtkWidget* gDumbContainer;
+static GtkWidget* gSpinBox;
+static GtkWidget* gEntryBox;
static GtkWidget* gComboBox;
static GtkWidget* gComboBoxButtonWidget;
static GtkWidget* gComboBoxEntryWidget;
@@ -1170,7 +1159,7 @@ bool GtkSalGraphics::getNativeControlRegion( ControlType nType, ControlPart nPar
((nPart==PART_BUTTON_UP) || (nPart==PART_BUTTON_DOWN) ||
(nPart==PART_SUB_EDIT)) )
{
- Rectangle aControlRegion(AdjustRectForTextBordersPadding(mpSpinStyle, rValue.getNumericVal(), rControlRegion));
+ Rectangle aControlRegion(GetWidgetSize(rControlRegion, gSpinBox));
aEditRect = NWGetSpinButtonRect(nPart, aControlRegion);
}
else if ( (nType==CTRL_COMBOBOX) &&
@@ -1185,25 +1174,19 @@ bool GtkSalGraphics::getNativeControlRegion( ControlType nType, ControlPart nPar
}
else if (nType == CTRL_EDITBOX && nPart == PART_ENTIRE_CONTROL)
{
- aEditRect = AdjustRectForTextBordersPadding(mpEntryStyle, rValue.getNumericVal(), rControlRegion);
+ aEditRect = GetWidgetSize(rControlRegion, gEntryBox);
}
else if (nType == CTRL_LISTBOX && nPart == PART_ENTIRE_CONTROL)
{
- GtkRequisition aReq;
- gtk_widget_get_preferred_size(gComboBox, NULL, &aReq);
- long nHeight = (rControlRegion.GetHeight() > aReq.height) ? rControlRegion.GetHeight() : aReq.height;
- aEditRect = Rectangle(rControlRegion.TopLeft(), Size(rControlRegion.GetWidth(), nHeight));
+ aEditRect = GetWidgetSize(rControlRegion, gListBox);
}
else if (nType == CTRL_COMBOBOX && nPart == PART_ENTIRE_CONTROL)
{
- GtkRequisition aReq;
- gtk_widget_get_preferred_size(gComboBox, NULL, &aReq);
- long nHeight = (rControlRegion.GetHeight() > aReq.height) ? rControlRegion.GetHeight() : aReq.height;
- aEditRect = Rectangle(rControlRegion.TopLeft(), Size(rControlRegion.GetWidth(), nHeight));
+ aEditRect = GetWidgetSize(rControlRegion, gComboBox);
}
else if (nType == CTRL_SPINBOX && nPart == PART_ENTIRE_CONTROL)
{
- aEditRect = AdjustRectForTextBordersPadding(mpSpinStyle, rValue.getNumericVal(), rControlRegion);
+ aEditRect = GetWidgetSize(rControlRegion, gSpinBox);
}
else if (nType == CTRL_TAB_ITEM && nPart == PART_ENTIRE_CONTROL)
{
@@ -1791,7 +1774,8 @@ GtkSalGraphics::GtkSalGraphics( GtkSalFrame *pFrame, GtkWidget *pWindow )
gtk_widget_realize(gDumbContainer);
gtk_widget_realize(gCacheWindow);
- getStyleContext(&mpEntryStyle, gtk_entry_new());
+ gEntryBox = gtk_entry_new();
+ getStyleContext(&mpEntryStyle, gEntryBox);
getStyleContext(&mpButtonStyle, gtk_button_new());
getStyleContext(&mpToolbarStyle, gtk_toolbar_new());
@@ -1840,7 +1824,8 @@ GtkSalGraphics::GtkSalGraphics( GtkSalFrame *pFrame, GtkWidget *pWindow )
gtk_style_context_add_class(mpMenuBarStyle, GTK_STYLE_CLASS_MENU);
/* Spinbutton */
- getStyleContext(&mpSpinStyle, gtk_spin_button_new(NULL, 0, 0));
+ gSpinBox = gtk_spin_button_new(NULL, 0, 0);
+ getStyleContext(&mpSpinStyle, gSpinBox);
/* NoteBook */
getStyleContext(&mpNoteBookStyle, gtk_notebook_new());
@@ -1857,6 +1842,7 @@ GtkSalGraphics::GtkSalGraphics( GtkSalFrame *pFrame, GtkWidget *pWindow )
/* Listbox */
gListBox = gtk_combo_box_text_new();
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(gListBox), "sample");
getStyleContext(&mpListboxStyle, gListBox);
/* Get ComboBox Button */
gtk_container_forall(GTK_CONTAINER(gListBox),
More information about the Libreoffice-commits
mailing list