diff options
author | Maxim Monastirsky <momonasmon@gmail.com> | 2016-09-14 02:02:38 +0300 |
---|---|---|
committer | Maxim Monastirsky <momonasmon@gmail.com> | 2016-09-13 23:06:38 +0000 |
commit | 74fd959945dbbfbc3dcc331a08ff8fc7c6410295 (patch) | |
tree | dbabc8792b2d774cb8d7d456bb3b2765a73484e4 /vcl | |
parent | ebe46f14a266f7e538bc8b8fa6b9f7d78c5e308d (diff) |
tdf#74377 Keyboard shortcuts for context menus
Configurable through the options dialog. The default behavior
depends on the current vclplug (hide for gtk2/3 and OS X, show
otherwise).
Menus currently affected by this change:
- SfxDispatcher based context menus
- chart2 context menus
- vcl's Edit control context menu
- Several MenuBarManager based toolbar dropdowns.
Change-Id: Iad9fb99dc90e01c17cba9c07c1a2b262b920e11d
Reviewed-on: https://gerrit.libreoffice.org/28849
Reviewed-by: Maxim Monastirsky <momonasmon@gmail.com>
Tested-by: Maxim Monastirsky <momonasmon@gmail.com>
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/osx/salframe.cxx | 2 | ||||
-rw-r--r-- | vcl/source/app/settings.cxx | 41 | ||||
-rw-r--r-- | vcl/source/control/edit.cxx | 2 | ||||
-rw-r--r-- | vcl/unx/gtk/salnativewidgets-gtk.cxx | 2 | ||||
-rw-r--r-- | vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx | 2 |
5 files changed, 37 insertions, 12 deletions
diff --git a/vcl/osx/salframe.cxx b/vcl/osx/salframe.cxx index b5a149956300..a5214b7c3949 100644 --- a/vcl/osx/salframe.cxx +++ b/vcl/osx/salframe.cxx @@ -1217,7 +1217,7 @@ void AquaSalFrame::UpdateSettings( AllSettings& rSettings ) // images in menus false for MacOSX aStyleSettings.SetPreferredUseImagesInMenus( false ); aStyleSettings.SetHideDisabledMenuItems( true ); - aStyleSettings.SetAcceleratorsInContextMenus( false ); + aStyleSettings.SetPreferredContextMenuShortcuts( false ); rSettings.SetStyleSettings( aStyleSettings ); diff --git a/vcl/source/app/settings.cxx b/vcl/source/app/settings.cxx index f684393a62bf..1c0db6794f8b 100644 --- a/vcl/source/app/settings.cxx +++ b/vcl/source/app/settings.cxx @@ -186,7 +186,8 @@ struct ImplStyleData rtl::OUString mIconTheme; bool mbSkipDisabledInMenus; bool mbHideDisabledMenuItems; - bool mbAcceleratorsInContextMenus; + bool mbPreferredContextMenuShortcuts; + TriState meContextMenuShortcuts; //mbPrimaryButtonWarpsSlider == true for "jump to here" behavior for primary button, otherwise //primary means scroll by single page. Secondary button takes the alternative behaviour bool mbPrimaryButtonWarpsSlider; @@ -544,6 +545,7 @@ ImplStyleData::ImplStyleData() : mbAutoMnemonic = true; mnToolbarIconSize = ToolbarIconSize::Unknown; meUseImagesInMenus = TRISTATE_INDET; + meContextMenuShortcuts = TRISTATE_INDET; mnEdgeBlending = 35; maEdgeBlendingTopLeftColor = RGB_COLORDATA(0xC0, 0xC0, 0xC0); maEdgeBlendingBottomRightColor = RGB_COLORDATA(0x40, 0x40, 0x40); @@ -657,7 +659,8 @@ ImplStyleData::ImplStyleData( const ImplStyleData& rData ) : mbPreferredUseImagesInMenus = rData.mbPreferredUseImagesInMenus; mbSkipDisabledInMenus = rData.mbSkipDisabledInMenus; mbHideDisabledMenuItems = rData.mbHideDisabledMenuItems; - mbAcceleratorsInContextMenus = rData.mbAcceleratorsInContextMenus; + mbPreferredContextMenuShortcuts = rData.mbPreferredContextMenuShortcuts; + meContextMenuShortcuts = rData.meContextMenuShortcuts; mbPrimaryButtonWarpsSlider = rData.mbPrimaryButtonWarpsSlider; mnToolbarIconSize = rData.mnToolbarIconSize; mIconThemeScanner.reset(new vcl::IconThemeScanner(*rData.mIconThemeScanner)); @@ -763,7 +766,7 @@ void ImplStyleData::SetStandardStyles() mbPreferredUseImagesInMenus = true; mbSkipDisabledInMenus = false; mbHideDisabledMenuItems = false; - mbAcceleratorsInContextMenus = true; + mbPreferredContextMenuShortcuts = true; mbPrimaryButtonWarpsSlider = false; } @@ -1511,16 +1514,37 @@ StyleSettings::GetHideDisabledMenuItems() const } void -StyleSettings::SetAcceleratorsInContextMenus( bool bAcceleratorsInContextMenus ) +StyleSettings::SetContextMenuShortcuts( TriState eContextMenuShortcuts ) { CopyData(); - mxData->mbAcceleratorsInContextMenus = bAcceleratorsInContextMenus; + mxData->meContextMenuShortcuts = eContextMenuShortcuts; } bool -StyleSettings::GetAcceleratorsInContextMenus() const +StyleSettings::GetContextMenuShortcuts() const { - return mxData->mbAcceleratorsInContextMenus; + switch (mxData->meContextMenuShortcuts) + { + case TRISTATE_FALSE: + return false; + case TRISTATE_TRUE: + return true; + default: // TRISTATE_INDET: + return GetPreferredUseImagesInMenus(); + } +} + +void +StyleSettings::SetPreferredContextMenuShortcuts( bool bContextMenuShortcuts ) +{ + CopyData(); + mxData->mbPreferredContextMenuShortcuts = bContextMenuShortcuts; +} + +bool +StyleSettings::GetPreferredContextMenuShortcuts() const +{ + return mxData->mbPreferredContextMenuShortcuts; } void @@ -2349,7 +2373,8 @@ bool StyleSettings::operator ==( const StyleSettings& rSet ) const (mxData->mbPreferredUseImagesInMenus == rSet.mxData->mbPreferredUseImagesInMenus) && (mxData->mbSkipDisabledInMenus == rSet.mxData->mbSkipDisabledInMenus) && (mxData->mbHideDisabledMenuItems == rSet.mxData->mbHideDisabledMenuItems) && - (mxData->mbAcceleratorsInContextMenus == rSet.mxData->mbAcceleratorsInContextMenus)&& + (mxData->mbPreferredContextMenuShortcuts == rSet.mxData->mbPreferredContextMenuShortcuts)&& + (mxData->meContextMenuShortcuts == rSet.mxData->meContextMenuShortcuts) && (mxData->mbPrimaryButtonWarpsSlider == rSet.mxData->mbPrimaryButtonWarpsSlider) && (mxData->maFontColor == rSet.mxData->maFontColor) && (mxData->mnEdgeBlending == rSet.mxData->mnEdgeBlending) && diff --git a/vcl/source/control/edit.cxx b/vcl/source/control/edit.cxx index fcd35f9bbeb8..fd1ab81fab22 100644 --- a/vcl/source/control/edit.cxx +++ b/vcl/source/control/edit.cxx @@ -2815,7 +2815,7 @@ VclPtr<PopupMenu> Edit::CreatePopupMenu() pPopup->SetMenuFlags( MenuFlags::HideDisabledEntries ); else pPopup->SetMenuFlags ( MenuFlags::AlwaysShowDisabledEntries ); - if ( rStyleSettings.GetAcceleratorsInContextMenus() ) + if ( rStyleSettings.GetContextMenuShortcuts() ) { pPopup->SetAccelKey( SV_MENU_EDIT_UNDO, vcl::KeyCode( KeyFuncType::UNDO ) ); pPopup->SetAccelKey( SV_MENU_EDIT_CUT, vcl::KeyCode( KeyFuncType::CUT ) ); diff --git a/vcl/unx/gtk/salnativewidgets-gtk.cxx b/vcl/unx/gtk/salnativewidgets-gtk.cxx index bd324269b430..4ba74a436b1b 100644 --- a/vcl/unx/gtk/salnativewidgets-gtk.cxx +++ b/vcl/unx/gtk/salnativewidgets-gtk.cxx @@ -4004,7 +4004,7 @@ void GtkSalGraphics::updateSettings( AllSettings& rSettings ) // menu disabled entries handling aStyleSet.SetSkipDisabledInMenus( true ); - aStyleSet.SetAcceleratorsInContextMenus( false ); + aStyleSet.SetPreferredContextMenuShortcuts( false ); // menu colors GtkStyle* pMenuStyle = gtk_widget_get_style( gWidgetData[m_nXScreen].gMenuWidget ); GtkStyle* pMenuItemStyle = gtk_rc_get_style( gWidgetData[m_nXScreen].gMenuItemMenuWidget ); diff --git a/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx b/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx index d3becb6fbca7..b71c375ab3ad 100644 --- a/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx +++ b/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx @@ -1979,7 +1979,7 @@ void GtkSalGraphics::updateSettings( AllSettings& rSettings ) // menu disabled entries handling aStyleSet.SetSkipDisabledInMenus( true ); - aStyleSet.SetAcceleratorsInContextMenus( false ); + aStyleSet.SetPreferredContextMenuShortcuts( false ); // menu colors gtk_style_context_set_state(mpMenuStyle, GTK_STATE_FLAG_NORMAL); |