Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


Am 27.04.2011 13:01:36 schrieb Christoph Noack:
Just a small question ... do I get it right that the disabled menu items 
get hidden instead of being "grayed out"? Real interest: could you 
please explain what the rationale for the change is? As far as I know, 
there is currently no platform guideline that requires that (or even 
allows that) - but I might be wrong. 

Yes, disabled becomes hidden effectively. That is *current* behaviour on all systems as far as I 
can tell, so I'm not introducing anything new, to make that clear.
I explicitly want to change this for GTK+ because it is wrong behaviour.

As far as I know, OS X and KDE are the only platforms doing this (I'll ignore Maemo). I don't know 
the exact guideline, I didn't find clear documentation about it but for example the web page 
context menu on OS X does it and editor popups I saw in KDE.
That said, Lubos or anyone else, please correct me if my observation is wrong, I'll adapt the patch 
accordingly.

I updated the patch and attached a second one to get ird of UpdateApplicationSettings which for no 
good reason tries to flip the same switch in a very misleading way.

ciao,
    Christian
From e6d2363785af7e8021afe358be66db233d360fc4 Mon Sep 17 00:00:00 2001
From: Christian Dywan <christian.dywan@lanedo.com>
Date: Thu, 21 Apr 2011 15:14:32 +0200
Subject: [PATCH] Introduce HideDisabledMenuItems style setting

The STYLE_OPTION_HIDEDISABLED flag is removed.

The setting is enabled for KDE and OSX.
---
 svtools/source/edit/svmedit.cxx      |    3 ---
 vcl/aqua/source/window/salframe.cxx  |    1 +
 vcl/inc/vcl/settings.hxx             |    6 +++++-
 vcl/source/app/settings.cxx          |    3 +++
 vcl/source/control/edit.cxx          |    7 ++++---
 vcl/unx/kde/salnativewidgets-kde.cxx |    1 +
 vcl/unx/kde4/KDESalFrame.cxx         |    1 +
 7 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/svtools/source/edit/svmedit.cxx b/svtools/source/edit/svmedit.cxx
index b182446..b1f8919 100644
--- a/svtools/source/edit/svmedit.cxx
+++ b/svtools/source/edit/svmedit.cxx
@@ -859,9 +859,6 @@ void TextWindow::Command( const CommandEvent& rCEvt )
     if ( rCEvt.GetCommand() == COMMAND_CONTEXTMENU )
     {
         PopupMenu* pPopup = Edit::CreatePopupMenu();
-        const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
-        if ( rStyleSettings.GetOptions() & STYLE_OPTION_HIDEDISABLED )
-            pPopup->SetMenuFlags( MENU_FLAG_HIDEDISABLEDENTRIES );
         if ( !mpExtTextView->HasSelection() )
         {
             pPopup->EnableItem( SV_MENU_EDIT_CUT, sal_False );
diff --git a/vcl/aqua/source/window/salframe.cxx b/vcl/aqua/source/window/salframe.cxx
index f37182f..4b41148 100644
--- a/vcl/aqua/source/window/salframe.cxx
+++ b/vcl/aqua/source/window/salframe.cxx
@@ -1320,6 +1320,7 @@ void AquaSalFrame::UpdateSettings( AllSettings& rSettings )
 
     // images in menus false for MacOSX
     aStyleSettings.SetPreferredUseImagesInMenus( false );
+    aStyleSettings.SetHideDisabledMenuItems( sal_True );
     aStyleSettings.SetAcceleratorsInContextMenus( sal_False );
     
     rSettings.SetStyleSettings( aStyleSettings );
diff --git a/vcl/inc/vcl/settings.hxx b/vcl/inc/vcl/settings.hxx
index e5a824c..4f16997 100644
--- a/vcl/inc/vcl/settings.hxx
+++ b/vcl/inc/vcl/settings.hxx
@@ -434,6 +434,7 @@ private:
     sal_uLong                           mnSymbolsStyle;
     sal_uLong                           mnPreferredSymbolsStyle;
     sal_uInt16                          mnSkipDisabledInMenus;
+    sal_Bool                            mbHideDisabledMenuItems;
     sal_Bool                            mnAcceleratorsInContextMenus;
     Wallpaper                       maWorkspaceGradient;
     const void*                     mpFontOptions;
@@ -456,7 +457,6 @@ private:
 #define STYLE_OPTION_SPINARROW      ((sal_uLong)0x00000080)
 #define STYLE_OPTION_SPINUPDOWN     ((sal_uLong)0x00000100)
 #define STYLE_OPTION_NOMNEMONICS    ((sal_uLong)0x00000200)
-#define STYLE_OPTION_HIDEDISABLED   ((sal_uLong)0x00100000)
 
 #define DRAGFULL_OPTION_WINDOWMOVE  ((sal_uLong)0x00000001)
 #define DRAGFULL_OPTION_WINDOWSIZE  ((sal_uLong)0x00000002)
@@ -736,6 +736,10 @@ public:
                                         { CopyData(); mpData->mnSkipDisabledInMenus = 
bSkipDisabledInMenus; }
     sal_Bool                                                   GetSkipDisabledInMenus() const
                                         { return (sal_Bool) mpData->mnSkipDisabledInMenus; }
+    void                                                       SetHideDisabledMenuItems( sal_Bool 
bHideDisabledMenuItems )
+                                        { CopyData(); mpData->mbHideDisabledMenuItems = 
bHideDisabledMenuItems; }
+    sal_Bool                                                   GetHideDisabledMenuItems() const
+                                        { return mpData->mbHideDisabledMenuItems; }
     void                                                       SetAcceleratorsInContextMenus( 
sal_Bool bAcceleratorsInContextMenus )
                                         { CopyData(); mpData->mnAcceleratorsInContextMenus = 
bAcceleratorsInContextMenus; }
     sal_Bool                                                   GetAcceleratorsInContextMenus() 
const
diff --git a/vcl/source/app/settings.cxx b/vcl/source/app/settings.cxx
index b256f04..388a043 100644
--- a/vcl/source/app/settings.cxx
+++ b/vcl/source/app/settings.cxx
@@ -529,6 +529,7 @@ ImplStyleData::ImplStyleData( const ImplStyleData& rData ) :
     mnUseImagesInMenus                 = rData.mnUseImagesInMenus;
     mbPreferredUseImagesInMenus        = rData.mbPreferredUseImagesInMenus;
     mnSkipDisabledInMenus              = rData.mnSkipDisabledInMenus;
+    mbHideDisabledMenuItems              = rData.mbHideDisabledMenuItems;
     mnAcceleratorsInContextMenus       = rData.mnAcceleratorsInContextMenus;
     mnToolbarIconSize                  = rData.mnToolbarIconSize;
     mnSymbolsStyle                             = rData.mnSymbolsStyle;
@@ -618,6 +619,7 @@ void ImplStyleData::SetStandardStyles()
     mnUseFlatMenues                    = 0;
     mbPreferredUseImagesInMenus                = sal_True;
     mnSkipDisabledInMenus              = (sal_uInt16)sal_False;
+    mbHideDisabledMenuItems            = sal_False;
     mnAcceleratorsInContextMenus       = sal_True;
 
     Gradient aGrad( GRADIENT_LINEAR, DEFAULT_WORKSPACE_GRADIENT_START_COLOR, 
DEFAULT_WORKSPACE_GRADIENT_END_COLOR );
@@ -1079,6 +1081,7 @@ sal_Bool StyleSettings::operator ==( const StyleSettings& rSet ) const
          (mpData->mnUseImagesInMenus           == rSet.mpData->mnUseImagesInMenus)                 
    &&
          (mpData->mbPreferredUseImagesInMenus == rSet.mpData->mbPreferredUseImagesInMenus) &&
          (mpData->mnSkipDisabledInMenus                == rSet.mpData->mnSkipDisabledInMenus)      
    &&
+         (mpData->mbHideDisabledMenuItems      == rSet.mpData->mbHideDisabledMenuItems)        &&
          (mpData->mnAcceleratorsInContextMenus == rSet.mpData->mnAcceleratorsInContextMenus)       
    &&
          (mpData->maFontColor                          == rSet.mpData->maFontColor ))
         return sal_True;
diff --git a/vcl/source/control/edit.cxx b/vcl/source/control/edit.cxx
index fb352f3..14c69a0 100644
--- a/vcl/source/control/edit.cxx
+++ b/vcl/source/control/edit.cxx
@@ -2094,9 +2094,6 @@ void Edit::Command( const CommandEvent& rCEvt )
     if ( rCEvt.GetCommand() == COMMAND_CONTEXTMENU )
     {
         PopupMenu* pPopup = Edit::CreatePopupMenu();
-        const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
-        if ( rStyleSettings.GetOptions() & STYLE_OPTION_HIDEDISABLED )
-            pPopup->SetMenuFlags( MENU_FLAG_HIDEDISABLEDENTRIES );
 
         if ( !maSelection.Len() )
         {
@@ -2934,6 +2931,10 @@ PopupMenu* Edit::CreatePopupMenu()
 
     PopupMenu* pPopup = new PopupMenu( ResId( SV_RESID_MENU_EDIT, *pResMgr ) );
     const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
+    if ( rStyleSettings.GetHideDisabledMenuItems() )
+        pPopup->SetMenuFlags( MENU_FLAG_HIDEDISABLEDENTRIES );
+    else
+        pPopup->SetMenuFlags ( MENU_FLAG_ALWAYSSHOWDISABLEDENTRIES );
     if ( rStyleSettings.GetAcceleratorsInContextMenus() )
     {
         pPopup->SetAccelKey( SV_MENU_EDIT_UNDO, KeyCode( KEYFUNC_UNDO ) );
diff --git a/vcl/unx/kde/salnativewidgets-kde.cxx b/vcl/unx/kde/salnativewidgets-kde.cxx
index d0fa4a0..5707586 100644
--- a/vcl/unx/kde/salnativewidgets-kde.cxx
+++ b/vcl/unx/kde/salnativewidgets-kde.cxx
@@ -1970,6 +1970,7 @@ void KDESalFrame::UpdateSettings( AllSettings& rSettings )
 
     // Menu
     aStyleSettings.SetSkipDisabledInMenus( sal_True );
+    aStyleSettings.SetHideDisabledMenuItems( sal_True );
     KMenuBar *pMenuBar = qMainWindow.menuBar();
     if ( pMenuBar )
     {
diff --git a/vcl/unx/kde4/KDESalFrame.cxx b/vcl/unx/kde4/KDESalFrame.cxx
index 8ed5078..68f9e5c 100644
--- a/vcl/unx/kde4/KDESalFrame.cxx
+++ b/vcl/unx/kde4/KDESalFrame.cxx
@@ -308,6 +308,7 @@ void KDESalFrame::UpdateSettings( AllSettings& rSettings )
 
     // Menu
     style.SetSkipDisabledInMenus( TRUE );
+    style.SetHideDisabledMenuItems( sal_True );
     KMenuBar* pMenuBar = new KMenuBar();
     if ( pMenuBar )
     {
-- 
1.7.1

From ebb9e1b2991a96bc82e177a876c14d7b3de85972 Mon Sep 17 00:00:00 2001
From: Christian Dywan <christian.dywan@lanedo.com>
Date: Wed, 27 Apr 2011 12:56:40 +0200
Subject: [PATCH] Remove UpdateApplicationSettings function

The function did nothing else than set STYLE_OPTION_HIDEDISABLED.

It was also extremely misleading when reading the code.
---
 sfx2/source/appl/app.cxx     |    1 -
 sfx2/source/appl/appdata.cxx |   14 --------------
 sfx2/source/inc/appdata.hxx  |    1 -
 3 files changed, 0 insertions(+), 16 deletions(-)

diff --git a/sfx2/source/appl/app.cxx b/sfx2/source/appl/app.cxx
index 4f7a7bd..4d4e9c6 100644
--- a/sfx2/source/appl/app.cxx
+++ b/sfx2/source/appl/app.cxx
@@ -330,7 +330,6 @@ SfxApplication::SfxApplication()
     SvtViewOptions::AcquireOptions();
 
     pAppData_Impl = new SfxAppData_Impl( this );
-    pAppData_Impl->UpdateApplicationSettings( SvtMenuOptions().IsEntryHidingEnabled() );
     pAppData_Impl->m_xImeStatusWindow->init();
     pApp->PreInit();
 
diff --git a/sfx2/source/appl/appdata.cxx b/sfx2/source/appl/appdata.cxx
index 0eb99fa..327af69 100644
--- a/sfx2/source/appl/appdata.cxx
+++ b/sfx2/source/appl/appdata.cxx
@@ -149,20 +149,6 @@ SfxAppData_Impl::~SfxAppData_Impl()
     delete pBasMgrListener;
 }
 
-void SfxAppData_Impl::UpdateApplicationSettings( sal_Bool bDontHide )
-{
-    AllSettings aAllSet = Application::GetSettings();
-    StyleSettings aStyleSet = aAllSet.GetStyleSettings();
-    sal_uInt32 nStyleOptions = aStyleSet.GetOptions();
-    if ( bDontHide )
-        nStyleOptions &= ~STYLE_OPTION_HIDEDISABLED;
-    else
-        nStyleOptions |= STYLE_OPTION_HIDEDISABLED;
-    aStyleSet.SetOptions( nStyleOptions );
-    aAllSet.SetStyleSettings( aStyleSet );
-    Application::SetSettings( aAllSet );
-}
-
 SfxDocumentTemplates* SfxAppData_Impl::GetDocumentTemplates()
 {
     if ( !pTemplates )
diff --git a/sfx2/source/inc/appdata.hxx b/sfx2/source/inc/appdata.hxx
index 8df9b89..1b6f286 100644
--- a/sfx2/source/inc/appdata.hxx
+++ b/sfx2/source/inc/appdata.hxx
@@ -164,7 +164,6 @@ public:
                                 SfxAppData_Impl( SfxApplication* );
                                 ~SfxAppData_Impl();
 
-    void                        UpdateApplicationSettings( sal_Bool bDontHide );
     SfxDocumentTemplates*       GetDocumentTemplates();
     void                        DeInitDDE();
 
-- 
1.7.1


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.