[Libreoffice-commits] core.git: framework/source

Maxim Monastirsky momonasmon at gmail.com
Tue Oct 6 12:00:37 PDT 2015


 framework/source/uielement/menubarmanager.cxx |   55 +++++++++++++++++---------
 1 file changed, 36 insertions(+), 19 deletions(-)

New commits:
commit fedf965c51a9f57e5cde203a3d15a6c244558002
Author: Maxim Monastirsky <momonasmon at gmail.com>
Date:   Tue Oct 6 21:46:50 2015 +0300

    Related: tdf#91097 Support of enum commands in MenuBarManager
    
    Change-Id: Id7fe3075c21030e050c26aaf7ec068935f275b44

diff --git a/framework/source/uielement/menubarmanager.cxx b/framework/source/uielement/menubarmanager.cxx
index 405fb9d..eff5bdb 100644
--- a/framework/source/uielement/menubarmanager.cxx
+++ b/framework/source/uielement/menubarmanager.cxx
@@ -77,6 +77,7 @@
 #include <svtools/miscopt.hxx>
 #include <uielement/menubarmerger.hxx>
 #include <boost/noncopyable.hpp>
+#include <tools/urlobj.hxx>
 
 // Be careful removing this "bad" construct. There are serious problems
 // with #define STRICT and including windows.h. Changing this needs some
@@ -437,29 +438,45 @@ throw ( RuntimeException, std::exception )
                 }
                 else if ( Event.State >>= aItemText )
                 {
-                    // Replacement for place holders
-                    if ( aItemText.startsWith("($1)") )
+                    INetURLObject aURL( aFeatureURL );
+                    OUString aEnumPart = aURL.GetURLPath().getToken( 1, '.' );
+                    if ( !aEnumPart.isEmpty() && aURL.GetProtocol() == INetProtocol::Uno )
                     {
-                        OUString aTmp(FWK_RESSTR(STR_UPDATEDOC));
-                        aTmp += " ";
-                        aTmp += aItemText.copy( 4 );
-                        aItemText = aTmp;
+                        // Checkmark or RadioButton
+                        m_pVCLMenu->ShowItem( pMenuItemHandler->nItemId );
+                        m_pVCLMenu->CheckItem( pMenuItemHandler->nItemId, ( aItemText == aEnumPart ) ? true : false );
+
+                        MenuItemBits nBits = m_pVCLMenu->GetItemBits( pMenuItemHandler->nItemId );
+                        //If not already designated RadioButton set as CheckMark
+                        if (!(nBits & MenuItemBits::RADIOCHECK))
+                            m_pVCLMenu->SetItemBits( pMenuItemHandler->nItemId, nBits | MenuItemBits::CHECKABLE );
                     }
-                    else if ( aItemText.startsWith("($2)") )
-                    {
-                        OUString aTmp(FWK_RESSTR(STR_CLOSEDOC_ANDRETURN));
-                        aTmp += aItemText.copy( 4 );
-                        aItemText = aTmp;
-                    }
-                    else if ( aItemText.startsWith("($3)") )
+                    else
                     {
-                        OUString aTmp(FWK_RESSTR(STR_SAVECOPYDOC));
-                        aTmp += aItemText.copy( 4 );
-                        aItemText = aTmp;
-                    }
+                        // Replacement for place holders
+                        if ( aItemText.startsWith("($1)") )
+                        {
+                            OUString aTmp(FWK_RESSTR(STR_UPDATEDOC));
+                            aTmp += " ";
+                            aTmp += aItemText.copy( 4 );
+                            aItemText = aTmp;
+                        }
+                        else if ( aItemText.startsWith("($2)") )
+                        {
+                            OUString aTmp(FWK_RESSTR(STR_CLOSEDOC_ANDRETURN));
+                            aTmp += aItemText.copy( 4 );
+                            aItemText = aTmp;
+                        }
+                        else if ( aItemText.startsWith("($3)") )
+                        {
+                            OUString aTmp(FWK_RESSTR(STR_SAVECOPYDOC));
+                            aTmp += aItemText.copy( 4 );
+                            aItemText = aTmp;
+                        }
 
-                    m_pVCLMenu->ShowItem( pMenuItemHandler->nItemId );
-                    m_pVCLMenu->SetItemText( pMenuItemHandler->nItemId, aItemText );
+                        m_pVCLMenu->ShowItem( pMenuItemHandler->nItemId );
+                        m_pVCLMenu->SetItemText( pMenuItemHandler->nItemId, aItemText );
+                    }
                 }
                 else if ( Event.State >>= aVisibilityStatus )
                 {


More information about the Libreoffice-commits mailing list