diff options
-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; |