summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vcl/aqua/source/window/salframe.cxx6
-rw-r--r--vcl/inc/svdata.hxx1
-rw-r--r--vcl/inc/vcl/settings.hxx17
-rw-r--r--vcl/source/app/settings.cxx15
-rw-r--r--vcl/source/control/scrbar.cxx24
-rw-r--r--vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx10
-rw-r--r--vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx10
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;