From 0cc4549fa01366530b6c0d3050ed4992e29da27a Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Nov 07 2012 11:03:50 +0000 Subject: Resolves: fdo#56198/rhbz#868002 honour gtk-scrollbar-warp-preference --- diff --git a/0001-Resolves-fdo-56198-collect-scrollbar-click-preferenc.patch b/0001-Resolves-fdo-56198-collect-scrollbar-click-preferenc.patch new file mode 100644 index 0000000..1b8bba8 --- /dev/null +++ b/0001-Resolves-fdo-56198-collect-scrollbar-click-preferenc.patch @@ -0,0 +1,258 @@ +From 2efa35a812a6f1e35e4959a357f50feff7e598f5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= +Date: Tue, 6 Nov 2012 23:21:06 +0000 +Subject: [PATCH] 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 +--- + vcl/aqua/source/window/salframe.cxx | 6 +++--- + vcl/inc/svdata.hxx | 1 - + vcl/inc/vcl/settings.hxx | 17 ++++++++++++----- + vcl/source/app/settings.cxx | 15 +++++++++------ + vcl/source/control/scrbar.cxx | 24 ++++++++++++++++-------- + vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx | 10 +++++++--- + 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 924210d..cf7c048 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([NSScroller scrollerWidth]) ); +diff --git a/vcl/inc/svdata.hxx b/vcl/inc/svdata.hxx +index af547e9..974a67f 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 9a0a856..1052b49 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 273e118..a2acdad 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 dad66f6..9e90362 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 65df181..1451476 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 0774699f..1037d9d 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; +-- +1.7.11.7 + diff --git a/libreoffice.spec b/libreoffice.spec index a19b1c8..749f5f3 100644 --- a/libreoffice.spec +++ b/libreoffice.spec @@ -40,7 +40,7 @@ Summary: Free Software Productivity Suite Name: libreoffice Epoch: 1 Version: %{libo_version}.2 -Release: 5%{?libo_prerelease}%{?dist} +Release: 6%{?libo_prerelease}%{?dist} License: (MPLv1.1 or LGPLv3+) and LGPLv3 and LGPLv2+ and BSD and (MPLv1.1 or GPLv2 or LGPLv2 or Netscape) and Public Domain and ASL 2.0 and Artistic and MPLv2.0 Group: Applications/Productivity URL: http://www.documentfoundation.org/develop @@ -189,6 +189,7 @@ Patch25: 0004-remove-all-traces-of-saxon.patch Patch26: 0001-resolved-rhbz865058-retard-overflow-of-internal-tabl.patch Patch27: 0001-fdo-47157-adding-Keywords-to-.desktop-files.patch Patch28: 0001-do-not-strip-install-set.patch +Patch29: 0001-Resolves-fdo-56198-collect-scrollbar-click-preferenc.patch %{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")} %define instdir %{_libdir} @@ -813,6 +814,7 @@ mv -f redhat.soc extras/source/palettes/standard.soc %patch26 -p1 -b .rhbz865058-retard-overflow-of-internal-tabl.patch %patch27 -p1 -b .fdo-47157-adding-Keywords-to-.desktop-files.patch %patch28 -p1 -b .do-not-strip-install-set.patch +%patch29 -p1 -b .fdo-56198-collect-scrollbar-click-preferenc.patch # TODO: check this # these are horribly incomplete--empty translations and copied english @@ -2041,6 +2043,9 @@ update-desktop-database %{_datadir}/applications &> /dev/null || : %endif %changelog +* Wed Nov 08 2012 Caolán McNamara - 1:3.6.3.2-6 +- Resolves: fdo#56198/rhbz#868002 honour gtk-scrollbar-warp-preference + * Mon Nov 06 2012 Caolán McNamara - 1:3.6.3.2-5 - bump for libexttextcat