From 082ecb53a9077b6ae01ce66237f48d88bcb0cc00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lubo=C5=A1=20Lu=C5=88=C3=A1k?= Date: Thu, 20 Oct 2011 19:05:13 +0200 Subject: [PATCH] fix horizontal scrollbars with KDE oxygen style (bnc#722918) Apparently there are two style flags for detecting the widget is horizontal. --- vcl/unx/kde4/KDESalGraphics.cxx | 19 +++++++++++++------ 1 files changed, 13 insertions(+), 6 deletions(-) diff --git a/vcl/unx/kde4/KDESalGraphics.cxx b/vcl/unx/kde4/KDESalGraphics.cxx index 749fbf0..b09fe53 100644 --- a/vcl/unx/kde4/KDESalGraphics.cxx +++ b/vcl/unx/kde4/KDESalGraphics.cxx @@ -493,10 +493,9 @@ sal_Bool KDESalGraphics::drawNativeControl( ControlType type, ControlPart part, if (sbVal->mnVisibleSize < sbVal->mnMax) option.state = QStyle::State_MouseOver; - //horizontal or vertical - if (part == PART_DRAW_BACKGROUND_VERT) - option.orientation = Qt::Vertical; - else + bool horizontal = ( part == PART_DRAW_BACKGROUND_HORZ ); //horizontal or vertical + option.orientation = horizontal ? Qt::Horizontal : Qt::Vertical; + if( horizontal ) option.state |= QStyle::State_Horizontal; //setup parameters from the OO values @@ -592,7 +591,10 @@ sal_Bool KDESalGraphics::drawNativeControl( ControlType type, ControlPart part, option.maximum = slVal->mnMax; option.minimum = slVal->mnMin; option.sliderPosition = option.sliderValue = slVal->mnCur; - option.orientation = (part == PART_TRACK_HORZ_AREA) ? Qt::Horizontal : Qt::Vertical; + bool horizontal = ( part == PART_TRACK_HORZ_AREA ); //horizontal or vertical + option.orientation = horizontal ? Qt::Horizontal : Qt::Vertical; + if( horizontal ) + option.state |= QStyle::State_Horizontal; draw( QStyle::CC_Slider, &option, m_image, vclStateValue2StateFlag(nControlState, value) ); } @@ -903,7 +905,10 @@ sal_Bool KDESalGraphics::getNativeControlRegion( ControlType type, ControlPart p QStyleOptionSlider option; OSL_ASSERT( val.getType() == CTRL_SCROLLBAR ); const ScrollbarValue* sbVal = static_cast(&val); - option.orientation = ( part == PART_TRACK_HORZ_AREA ) ? Qt::Horizontal : Qt::Vertical; + bool horizontal = ( part == PART_TRACK_HORZ_AREA ); //horizontal or vertical + option.orientation = horizontal ? Qt::Horizontal : Qt::Vertical; + if( horizontal ) + option.state |= QStyle::State_Horizontal; option.minimum = sbVal->mnMin; option.maximum = sbVal->mnMax; option.sliderValue = sbVal->mnCur; @@ -971,6 +976,8 @@ sal_Bool KDESalGraphics::hitTestNativeControl( ControlType nType, ControlPart nP rect.moveTo( 0, 0 ); QStyleOptionSlider options; options.orientation = bHorizontal ? Qt::Horizontal : Qt::Vertical; + if( bHorizontal ) + options.state |= QStyle::State_Horizontal; options.rect = rect; // some random sensible values, since we call this code only for scrollbar buttons, // the slider position does not exactly matter -- 1.7.6.4