diff options
author | Caolán McNamara <caolanm@redhat.com> | 2012-11-06 23:21:06 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2012-11-07 10:58:39 +0000 |
commit | 2efa35a812a6f1e35e4959a357f50feff7e598f5 (patch) | |
tree | d0776e997922a1ab0db17ad474be483903dfbd54 /vcl | |
parent | b634cd4473bcd8170bfd7d53596893e65208ad88 (diff) |
Resolves: fdo#56198 collect scrollbar click preference settings
for gtk and merge with aqua equivalent so as to alternate "jump to here"
behavior for primary button vs primary means scroll by single page. Secondary
button takes the alternative behaviour
Change-Id: I0a96f3131f41ec87052da39cbe96bfd895ca53f6
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/aqua/source/window/salframe.cxx | 6 | ||||
-rw-r--r-- | vcl/inc/svdata.hxx | 1 | ||||
-rw-r--r-- | vcl/inc/vcl/settings.hxx | 17 | ||||
-rw-r--r-- | vcl/source/app/settings.cxx | 15 | ||||
-rw-r--r-- | vcl/source/control/scrbar.cxx | 24 | ||||
-rw-r--r-- | vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx | 10 | ||||
-rw-r--r-- | vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx | 10 |
7 files changed, 54 insertions, 29 deletions
diff --git a/vcl/aqua/source/window/salframe.cxx b/vcl/aqua/source/window/salframe.cxx index 924210d56911..cf7c048fe3a6 100644 --- a/vcl/aqua/source/window/salframe.cxx +++ b/vcl/aqua/source/window/salframe.cxx @@ -1146,7 +1146,7 @@ rtl::OUString AquaSalFrame::GetKeyName( sal_uInt16 nKeyCode ) // ----------------------------------------------------------------------- -static void getAppleScrollBarVariant(void) +static void getAppleScrollBarVariant(StyleSettings &rSettings) { bool bIsScrollbarDoubleMax = true; // default is DoubleMax @@ -1183,7 +1183,7 @@ static void getAppleScrollBarVariant(void) if( jumpStr ) { if( CFGetTypeID( jumpStr ) == CFBooleanGetTypeID() ) - ImplGetSVData()->maNWFData.mbScrollbarJumpPage = (jumpStr == kCFBooleanTrue); + rSettings.SetPrimaryButtonWarpsSlider(jumpStr == kCFBooleanTrue); CFRelease( jumpStr ); } CFRelease( jumpScroll ); @@ -1324,7 +1324,7 @@ void AquaSalFrame::UpdateSettings( AllSettings& rSettings ) // no mnemonics on aqua aStyleSettings.SetOptions( aStyleSettings.GetOptions() | STYLE_OPTION_NOMNEMONICS ); - getAppleScrollBarVariant(); + getAppleScrollBarVariant(aStyleSettings); // set scrollbar size aStyleSettings.SetScrollBarSize( static_cast<long int>([NSScroller scrollerWidth]) ); diff --git a/vcl/inc/svdata.hxx b/vcl/inc/svdata.hxx index af547e9b892c..974a67fc24eb 100644 --- a/vcl/inc/svdata.hxx +++ b/vcl/inc/svdata.hxx @@ -294,7 +294,6 @@ struct ImplSVNWFData bool mbCheckBoxNeedsErase:1; // set true for platforms that should draw the // window background before drawing the native // checkbox - bool mbScrollbarJumpPage:1; // true for "jump to here" behavior bool mbCanDrawWidgetAnySize:1; // set to true currently on gtk }; diff --git a/vcl/inc/vcl/settings.hxx b/vcl/inc/vcl/settings.hxx index 9a0a856f8eed..1052b49aaf75 100644 --- a/vcl/inc/vcl/settings.hxx +++ b/vcl/inc/vcl/settings.hxx @@ -348,7 +348,10 @@ private: sal_uLong mnPreferredSymbolsStyle; sal_uInt16 mnSkipDisabledInMenus; sal_Bool mbHideDisabledMenuItems; - sal_Bool mnAcceleratorsInContextMenus; + sal_Bool mbAcceleratorsInContextMenus; + //mbPrimaryButtonWarpsSlider == true for "jump to here" behavior for primary button, otherwise + //primary means scroll by single page. Secondary button takes the alternative behaviour + sal_Bool mbPrimaryButtonWarpsSlider; Wallpaper maWorkspaceGradient; DialogStyle maDialogStyle; FrameStyle maFrameStyle; @@ -649,10 +652,14 @@ public: { CopyData(); mpData->mbHideDisabledMenuItems = bHideDisabledMenuItems; } sal_Bool GetHideDisabledMenuItems() const { return mpData->mbHideDisabledMenuItems; } - void SetAcceleratorsInContextMenus( sal_Bool bAcceleratorsInContextMenus ) - { CopyData(); mpData->mnAcceleratorsInContextMenus = bAcceleratorsInContextMenus; } - sal_Bool GetAcceleratorsInContextMenus() const - { return mpData->mnAcceleratorsInContextMenus; } + void SetAcceleratorsInContextMenus( sal_Bool bAcceleratorsInContextMenus ) + { CopyData(); mpData->mbAcceleratorsInContextMenus = bAcceleratorsInContextMenus; } + sal_Bool GetAcceleratorsInContextMenus() const + { return mpData->mbAcceleratorsInContextMenus; } + void SetPrimaryButtonWarpsSlider( sal_Bool bPrimaryButtonWarpsSlider ) + { CopyData(); mpData->mbPrimaryButtonWarpsSlider = bPrimaryButtonWarpsSlider; } + sal_Bool GetPrimaryButtonWarpsSlider() const + { return mpData->mbPrimaryButtonWarpsSlider; } void SetCairoFontOptions( const void *pOptions ) { CopyData(); mpData->mpFontOptions = pOptions; } diff --git a/vcl/source/app/settings.cxx b/vcl/source/app/settings.cxx index 273e1186f430..a2acdadc02da 100644 --- a/vcl/source/app/settings.cxx +++ b/vcl/source/app/settings.cxx @@ -337,11 +337,12 @@ ImplStyleData::ImplStyleData( const ImplStyleData& rData ) : mnUseImagesInMenus = rData.mnUseImagesInMenus; mbPreferredUseImagesInMenus = rData.mbPreferredUseImagesInMenus; mnSkipDisabledInMenus = rData.mnSkipDisabledInMenus; - mbHideDisabledMenuItems = rData.mbHideDisabledMenuItems; - mnAcceleratorsInContextMenus = rData.mnAcceleratorsInContextMenus; + mbHideDisabledMenuItems = rData.mbHideDisabledMenuItems; + mbAcceleratorsInContextMenus = rData.mbAcceleratorsInContextMenus; + mbPrimaryButtonWarpsSlider = rData.mbPrimaryButtonWarpsSlider; mnToolbarIconSize = rData.mnToolbarIconSize; mnSymbolsStyle = rData.mnSymbolsStyle; - mnPreferredSymbolsStyle = rData.mnPreferredSymbolsStyle; + mnPreferredSymbolsStyle = rData.mnPreferredSymbolsStyle; mpFontOptions = rData.mpFontOptions; } @@ -425,10 +426,11 @@ void ImplStyleData::SetStandardStyles() mnUseSystemUIFonts = 1; mnUseFlatBorders = 0; mnUseFlatMenues = 0; - mbPreferredUseImagesInMenus = sal_True; + mbPreferredUseImagesInMenus = sal_True; mnSkipDisabledInMenus = (sal_uInt16)sal_False; mbHideDisabledMenuItems = sal_False; - mnAcceleratorsInContextMenus = sal_True; + mbAcceleratorsInContextMenus = sal_True; + mbPrimaryButtonWarpsSlider = sal_False; Gradient aGrad( GradientStyle_LINEAR, DEFAULT_WORKSPACE_GRADIENT_START_COLOR, DEFAULT_WORKSPACE_GRADIENT_END_COLOR ); maWorkspaceGradient = Wallpaper( aGrad ); @@ -852,7 +854,8 @@ sal_Bool StyleSettings::operator ==( const StyleSettings& rSet ) const (mpData->mbPreferredUseImagesInMenus == rSet.mpData->mbPreferredUseImagesInMenus) && (mpData->mnSkipDisabledInMenus == rSet.mpData->mnSkipDisabledInMenus) && (mpData->mbHideDisabledMenuItems == rSet.mpData->mbHideDisabledMenuItems) && - (mpData->mnAcceleratorsInContextMenus == rSet.mpData->mnAcceleratorsInContextMenus) && + (mpData->mbAcceleratorsInContextMenus == rSet.mpData->mbAcceleratorsInContextMenus)&& + (mpData->mbPrimaryButtonWarpsSlider == rSet.mpData->mbPrimaryButtonWarpsSlider) && (mpData->maFontColor == rSet.mpData->maFontColor )) return sal_True; else diff --git a/vcl/source/control/scrbar.cxx b/vcl/source/control/scrbar.cxx index dad66f61c175..9e90362d7fb9 100644 --- a/vcl/source/control/scrbar.cxx +++ b/vcl/source/control/scrbar.cxx @@ -946,7 +946,12 @@ void ScrollBar::ImplDragThumb( const Point& rMousePos ) void ScrollBar::MouseButtonDown( const MouseEvent& rMEvt ) { - if ( rMEvt.IsLeft() || rMEvt.IsMiddle() ) + bool bPrimaryWarps = GetSettings().GetStyleSettings().GetPrimaryButtonWarpsSlider(); + bool bWarp = bPrimaryWarps ? rMEvt.IsLeft() : rMEvt.IsMiddle(); + bool bPrimaryWarping = bWarp && rMEvt.IsLeft(); + bool bPage = bPrimaryWarps ? rMEvt.IsRight() : rMEvt.IsLeft(); + + if (rMEvt.IsLeft() || rMEvt.IsMiddle() || rMEvt.IsRight()) { const Point& rMousePos = rMEvt.GetPosPixel(); sal_uInt16 nTrackFlags = 0; @@ -962,7 +967,7 @@ void ScrollBar::MouseButtonDown( const MouseEvent& rMEvt ) bIsInside: maBtn1Rect.IsInside( rMousePos ) ) { - if ( !(mnStateFlags & SCRBAR_STATE_BTN1_DISABLE) ) + if (rMEvt.IsLeft() && !(mnStateFlags & SCRBAR_STATE_BTN1_DISABLE) ) { nTrackFlags = STARTTRACK_BUTTONREPEAT; meScrollType = SCROLL_LINEUP; @@ -974,7 +979,7 @@ void ScrollBar::MouseButtonDown( const MouseEvent& rMEvt ) bIsInside: maBtn2Rect.IsInside( rMousePos ) ) { - if ( !(mnStateFlags & SCRBAR_STATE_BTN2_DISABLE) ) + if (rMEvt.IsLeft() && !(mnStateFlags & SCRBAR_STATE_BTN2_DISABLE) ) { nTrackFlags = STARTTRACK_BUTTONREPEAT; meScrollType = SCROLL_LINEDOWN; @@ -986,7 +991,10 @@ void ScrollBar::MouseButtonDown( const MouseEvent& rMEvt ) bool bThumbHit = HitTestNativeControl( CTRL_SCROLLBAR, bHorizontal? PART_THUMB_HORZ : PART_THUMB_VERT, maThumbRect, rMousePos, bIsInside ) ? bIsInside : maThumbRect.IsInside( rMousePos ); - bool bDragHandling = rMEvt.IsMiddle() || bThumbHit || ImplGetSVData()->maNWFData.mbScrollbarJumpPage; + + bool bThumbAction = bWarp || bPage; + + bool bDragHandling = bWarp || (bThumbHit && bThumbAction); if( bDragHandling ) { if( mpData ) @@ -1003,7 +1011,7 @@ void ScrollBar::MouseButtonDown( const MouseEvent& rMEvt ) mnDragDraw = SCRBAR_DRAW_THUMB; // calculate mouse offset - if( rMEvt.IsMiddle() || (ImplGetSVData()->maNWFData.mbScrollbarJumpPage && !bThumbHit) ) + if (bWarp && (!bThumbHit || !bPrimaryWarping)) { bDragToMouse = sal_True; if ( GetStyle() & WB_HORZ ) @@ -1023,9 +1031,9 @@ void ScrollBar::MouseButtonDown( const MouseEvent& rMEvt ) ImplDraw( mnDragDraw, this ); } } - else if( HitTestNativeControl( CTRL_SCROLLBAR, bHorizontal? PART_TRACK_HORZ_AREA : PART_TRACK_VERT_AREA, - aControlRegion, rMousePos, bIsInside )? - bIsInside : sal_True ) + else if(bPage && (HitTestNativeControl( CTRL_SCROLLBAR, bHorizontal? PART_TRACK_HORZ_AREA : PART_TRACK_VERT_AREA, + aControlRegion, rMousePos, bIsInside ) ? + bIsInside : sal_True) ) { nTrackFlags = STARTTRACK_BUTTONREPEAT; diff --git a/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx b/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx index 65df181aefbc..14514766d84b 100644 --- a/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx +++ b/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx @@ -3987,9 +3987,13 @@ void GtkSalGraphics::updateSettings( AllSettings& rSettings ) aMouseSettings.SetMenuDelay( iMenuPopupDelay ); rSettings.SetMouseSettings( aMouseSettings ); - gboolean showmenuicons = true; - g_object_get( pSettings, "gtk-menu-images", &showmenuicons, (char *)NULL ); - aStyleSet.SetPreferredUseImagesInMenus( showmenuicons ); + gboolean showmenuicons = true, primarybuttonwarps = false; + g_object_get( pSettings, + "gtk-menu-images", &showmenuicons, + "gtk-primary-button-warps-slider", &primarybuttonwarps, + (char *)NULL ); + aStyleSet.SetPreferredUseImagesInMenus(showmenuicons); + aStyleSet.SetPrimaryButtonWarpsSlider(primarybuttonwarps); // set scrollbar settings gint slider_width = 14; diff --git a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx index 0774699fb0e6..1037d9d7e11e 100644 --- a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx +++ b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx @@ -1376,9 +1376,13 @@ void GtkSalGraphics::updateSettings( AllSettings& rSettings ) aMouseSettings.SetMenuDelay( iMenuPopupDelay ); rSettings.SetMouseSettings( aMouseSettings ); - gboolean showmenuicons = true; - g_object_get( pSettings, "gtk-menu-images", &showmenuicons, (char *)NULL ); - aStyleSet.SetPreferredUseImagesInMenus( showmenuicons ); + gboolean showmenuicons = true, primarybuttonwarps = false; + g_object_get( pSettings, + "gtk-menu-images", &showmenuicons, + "gtk-primary-button-warps-slider", &primarybuttonwarps, + (char *)NULL ); + aStyleSet.SetPreferredUseImagesInMenus(showmenuicons); + aStyleSet.SetPrimaryButtonWarpsSlider(primarybuttonwarps); // set scrollbar settings gint slider_width = 14; |