summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorMaxim Monastirsky <momonasmon@gmail.com>2016-09-14 02:02:38 +0300
committerMaxim Monastirsky <momonasmon@gmail.com>2016-09-13 23:06:38 +0000
commit74fd959945dbbfbc3dcc331a08ff8fc7c6410295 (patch)
treedbabc8792b2d774cb8d7d456bb3b2765a73484e4 /vcl
parentebe46f14a266f7e538bc8b8fa6b9f7d78c5e308d (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.cxx2
-rw-r--r--vcl/source/app/settings.cxx41
-rw-r--r--vcl/source/control/edit.cxx2
-rw-r--r--vcl/unx/gtk/salnativewidgets-gtk.cxx2
-rw-r--r--vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx2
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);