[Libreoffice-commits] core.git: Branch 'libreoffice-5-0' - vcl/unx
Jan-Marek Glogowski
glogow at fbihome.de
Thu Jul 9 12:50:44 PDT 2015
vcl/unx/kde4/KDESalGraphics.cxx | 60 +++++++++++++++++++++++++++-------------
1 file changed, 41 insertions(+), 19 deletions(-)
New commits:
commit 073936d374ded0e2374b4146ec32cb30149ba35e
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date: Wed Jul 8 18:02:00 2015 +0000
tdf#92115 KDE4: better listbox theming
This is not a final fix to apply full theming, but it makes
the listboxes at least usable again.
Change-Id: Ic83b8209208fddafe34e04f4e5e531f0d28e62bd
(cherry picked from commit 57792314c7b05f71c66834ee47bfaa09003df765)
Reviewed-on: https://gerrit.libreoffice.org/16900
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Katarina Behrens <Katarina.Behrens at cib.de>
diff --git a/vcl/unx/kde4/KDESalGraphics.cxx b/vcl/unx/kde4/KDESalGraphics.cxx
index 25ffb0c..e4412e2 100644
--- a/vcl/unx/kde4/KDESalGraphics.cxx
+++ b/vcl/unx/kde4/KDESalGraphics.cxx
@@ -101,7 +101,6 @@ bool KDESalGraphics::IsNativeControlSupported( ControlType type, ControlPart par
case CTRL_EDITBOX:
case CTRL_COMBOBOX:
case CTRL_TOOLBAR:
- case CTRL_LISTBOX:
case CTRL_FRAME:
case CTRL_SCROLLBAR:
case CTRL_WINDOW_BACKGROUND:
@@ -109,6 +108,12 @@ bool KDESalGraphics::IsNativeControlSupported( ControlType type, ControlPart par
case CTRL_FIXEDLINE:
return true;
+ case CTRL_LISTBOX:
+ return (part == PART_ENTIRE_CONTROL
+ || part == PART_SUB_EDIT
+ || part == PART_WINDOW
+ || part == PART_BUTTON_DOWN);
+
case CTRL_SPINBOX:
return (part == PART_ENTIRE_CONTROL || part == HAS_BACKGROUND_TEXTURE);
@@ -408,24 +413,26 @@ bool KDESalGraphics::drawNativeControl( ControlType type, ControlPart part,
}
else if (type == CTRL_LISTBOX)
{
- if( part == PART_WINDOW )
- {
- lcl_drawFrame( QStyle::PE_Frame, m_image,
- vclStateValue2StateFlag(nControlState, value) );
- }
- else
- {
- QStyleOptionComboBox option;
- if (part == PART_SUB_EDIT)
- {
+ QStyleOptionComboBox option;
+ switch (part) {
+ case PART_WINDOW:
+ lcl_drawFrame( QStyle::PE_Frame, m_image,
+ vclStateValue2StateFlag(nControlState, value) );
+ break;
+ case PART_SUB_EDIT:
draw( QStyle::CE_ComboBoxLabel, &option, m_image,
vclStateValue2StateFlag(nControlState, value) );
- }
- else
- {
+ break;
+ case PART_ENTIRE_CONTROL:
draw( QStyle::CC_ComboBox, &option, m_image,
vclStateValue2StateFlag(nControlState, value) );
- }
+ break;
+ case PART_BUTTON_DOWN:
+ m_image->fill( Qt::transparent );
+ option.subControls = QStyle::SC_ComboBoxArrow;
+ draw( QStyle::CC_ComboBox, &option, m_image,
+ vclStateValue2StateFlag(nControlState, value) );
+ break;
}
}
else if (type == CTRL_LISTNODE)
@@ -646,6 +653,12 @@ bool KDESalGraphics::getNativeControlRegion( ControlType type, ControlPart part,
const OUString&,
Rectangle &nativeBoundingRegion, Rectangle &nativeContentRegion )
{
+ bool nativeSupport = IsNativeControlSupported( type, part );
+ if( ! nativeSupport ) {
+ assert( ! nativeSupport && "drawNativeControl called without native support!" );
+ return false;
+ }
+
bool retVal = false;
QRect boundingRect = region2QRect( controlRegion );
@@ -727,8 +740,6 @@ bool KDESalGraphics::getNativeControlRegion( ControlType type, ControlPart part,
{
case PART_ENTIRE_CONTROL:
{
- int size = QApplication::style()->pixelMetric(QStyle::PM_ComboBoxFrameWidth) - 2;
-
// find out the minimum size that should be used
// assume contents is a text ling
int nHeight = QApplication::fontMetrics().height();
@@ -741,8 +752,10 @@ bool KDESalGraphics::getNativeControlRegion( ControlType type, ControlPart part,
// FIXME: why this difference between comboboxes and listboxes ?
// because a combobox has a sub edit and that is positioned
// inside the outer bordered control ?
- if( type == CTRL_COMBOBOX )
+ if( type == CTRL_COMBOBOX ) {
+ int size = QApplication::style()->pixelMetric(QStyle::PM_ComboBoxFrameWidth) - 2;
contentRect.adjust(-size,-size,size,size);
+ }
retVal = true;
break;
}
@@ -755,13 +768,22 @@ bool KDESalGraphics::getNativeControlRegion( ControlType type, ControlPart part,
retVal = true;
break;
case PART_SUB_EDIT:
+ {
contentRect = QApplication::style()->subControlRect(
QStyle::CC_ComboBox, &cbo, QStyle::SC_ComboBoxEditField );
- contentRect.translate( boundingRect.left(), boundingRect.top() );
+ int hmargin = QApplication::style()->pixelMetric(
+ QStyle::PM_FocusFrameHMargin, &styleOption);
+ int vmargin = QApplication::style()->pixelMetric(
+ QStyle::PM_FocusFrameVMargin, &styleOption);
+
+ contentRect.translate( boundingRect.left() + hmargin, boundingRect.top() + vmargin );
+ contentRect.adjust( 0, 0, -2 * hmargin, -2 * vmargin );
+ boundingRect = contentRect;
retVal = true;
break;
+ }
case PART_WINDOW:
retVal = true;
break;
More information about the Libreoffice-commits
mailing list