[Libreoffice-commits] core.git: 2 commits - include/vcl vcl/source

Jan Holesovsky kendy at collabora.com
Mon Sep 15 03:08:19 PDT 2014


 include/vcl/menu.hxx       |   13 ++++++--
 vcl/source/window/menu.cxx |   71 +++++++++++++++++++++++----------------------
 2 files changed, 48 insertions(+), 36 deletions(-)

New commits:
commit 5ac2c503c04282b3b456ccb8bf39d886e568d1fa
Author: Jan Holesovsky <kendy at collabora.com>
Date:   Mon Sep 15 10:30:18 2014 +0200

    vcl menu: Make DeactivateMenuBar() virtual to eliminate IsMenuBar() call.
    
    Change-Id: I33ba324a13e2addb678fb801222bd25a21c3ef1b

diff --git a/include/vcl/menu.hxx b/include/vcl/menu.hxx
index 8045963..db133e6 100644
--- a/include/vcl/menu.hxx
+++ b/include/vcl/menu.hxx
@@ -190,7 +190,7 @@ protected:
     virtual void CloseStartedFrom() = 0;
 
     /// Deactivate the MenuBarWindow.
-    SAL_DLLPRIVATE sal_uLong DeactivateMenuBar(sal_uLong nFocusId);
+    virtual sal_uLong DeactivateMenuBar(sal_uLong nFocusId);
 
     /// Forward the KeyInput call to the MenuBar.
     SAL_DLLPRIVATE void MenuBarKeyInput(const KeyEvent& rEvent);
@@ -423,6 +423,9 @@ public:
     /// Close the 'pStartedFrom' menu window.
     virtual void CloseStartedFrom() SAL_OVERRIDE;
 
+    /// Deactivate the MenuBarWindow.
+    virtual sal_uLong DeactivateMenuBar(sal_uLong nFocusId) SAL_OVERRIDE;
+
     void                ShowCloseButton( bool bShow = true );
     bool                HasCloseButton() const { return mbCloseBtnVisible; }
     bool            HasFloatButton() const { return mbFloatBtnVisible; }
diff --git a/vcl/source/window/menu.cxx b/vcl/source/window/menu.cxx
index 0a58c2d..60e2425 100644
--- a/vcl/source/window/menu.cxx
+++ b/vcl/source/window/menu.cxx
@@ -2265,16 +2265,6 @@ bool Menu::HasValidEntries( bool bCheckPopups )
 
 sal_uLong Menu::DeactivateMenuBar(sal_uLong nFocusId)
 {
-    if (!IsMenuBar())
-        return nFocusId;
-
-    nFocusId = ((MenuBarWindow*)(dynamic_cast<MenuBar*>(this))->ImplGetWindow())->GetFocusId();
-    if (nFocusId)
-    {
-        ((MenuBarWindow*)(dynamic_cast<MenuBar*>(this))->ImplGetWindow())->SetFocusId(0);
-        ImplGetSVData()->maWinData.mbNoDeactivate = false;
-    }
-
     return nFocusId;
 }
 
@@ -2479,6 +2469,18 @@ void MenuBar::CloseStartedFrom()
         p->PopupClosed(this);
 }
 
+sal_uLong MenuBar::DeactivateMenuBar(sal_uLong nFocusId)
+{
+    nFocusId = ((MenuBarWindow*)(dynamic_cast<MenuBar*>(this))->ImplGetWindow())->GetFocusId();
+    if (nFocusId)
+    {
+        ((MenuBarWindow*)(dynamic_cast<MenuBar*>(this))->ImplGetWindow())->SetFocusId(0);
+        ImplGetSVData()->maWinData.mbNoDeactivate = false;
+    }
+
+    return nFocusId;
+}
+
 void MenuBar::ShowCloseButton(bool bShow)
 {
     ShowButtons( bShow, mbFloatBtnVisible, mbHideBtnVisible );
commit fcc49e118c9da28309dce3389d111a546cba19cd
Author: Jan Holesovsky <kendy at collabora.com>
Date:   Mon Sep 15 10:22:49 2014 +0200

    vcl menu: Make CloseStartedFrom() virtual to eliminate IsMenuBar() call.
    
    Change-Id: Ifd89b7a9264075b166dd621fcb2c55225e25ea87

diff --git a/include/vcl/menu.hxx b/include/vcl/menu.hxx
index 5eaa3c9..8045963 100644
--- a/include/vcl/menu.hxx
+++ b/include/vcl/menu.hxx
@@ -187,7 +187,7 @@ protected:
     SAL_DLLPRIVATE void                ImplRemoveDel( ImplMenuDelData &rDel );
 
     /// Close the 'pStartedFrom' menu window.
-    SAL_DLLPRIVATE void CloseStartedFrom();
+    virtual void CloseStartedFrom() = 0;
 
     /// Deactivate the MenuBarWindow.
     SAL_DLLPRIVATE sal_uLong DeactivateMenuBar(sal_uLong nFocusId);
@@ -420,6 +420,9 @@ public:
 
     virtual bool        IsMenuBar() const SAL_OVERRIDE { return true; }
 
+    /// Close the 'pStartedFrom' menu window.
+    virtual void CloseStartedFrom() SAL_OVERRIDE;
+
     void                ShowCloseButton( bool bShow = true );
     bool                HasCloseButton() const { return mbCloseBtnVisible; }
     bool            HasFloatButton() const { return mbFloatBtnVisible; }
@@ -504,6 +507,9 @@ public:
 
     virtual bool        IsMenuBar() const SAL_OVERRIDE { return false; }
 
+    /// Close the 'pStartedFrom' menu window.
+    virtual void CloseStartedFrom() SAL_OVERRIDE;
+
     void                SetText( const OUString& rTitle )  { aTitleText = rTitle; }
     const OUString&     GetText() const                     { return aTitleText; }
 
diff --git a/vcl/source/window/menu.cxx b/vcl/source/window/menu.cxx
index 7923acd..0a58c2d 100644
--- a/vcl/source/window/menu.cxx
+++ b/vcl/source/window/menu.cxx
@@ -2263,30 +2263,6 @@ bool Menu::HasValidEntries( bool bCheckPopups )
     return bValidEntries;
 }
 
-void Menu::CloseStartedFrom()
-{
-    // if the window was closed by TH, there is another menu
-    // which has this window as pActivePopup
-    if (!pStartedFrom)
-        return;
-
-    // pWin from parent could be 0, if the list is
-    // cleaned from the start, now clean up the endpopup-events
-    if (pStartedFrom->IsMenuBar())
-    {
-        MenuBarWindow* p = (MenuBarWindow*) pStartedFrom->ImplGetWindow();
-        if (p)
-            p->PopupClosed(this);
-    }
-    else
-    {
-        MenuFloatingWindow* p = (MenuFloatingWindow*) pStartedFrom->ImplGetWindow();
-        PopupMenu *pMenu = dynamic_cast<PopupMenu*>(this);
-        if (p && pMenu)
-            p->KillActivePopup(pMenu);
-    }
-}
-
 sal_uLong Menu::DeactivateMenuBar(sal_uLong nFocusId)
 {
     if (!IsMenuBar())
@@ -2491,6 +2467,18 @@ MenuBar::~MenuBar()
     ImplDestroy( this, true );
 }
 
+void MenuBar::CloseStartedFrom()
+{
+    // if the window was closed by TH, there is another menu
+    // which has this window as pActivePopup
+    if (!pStartedFrom)
+        return;
+
+    MenuBarWindow* p = (MenuBarWindow*) pStartedFrom->ImplGetWindow();
+    if (p)
+        p->PopupClosed(this);
+}
+
 void MenuBar::ShowCloseButton(bool bShow)
 {
     ShowButtons( bShow, mbFloatBtnVisible, mbHideBtnVisible );
@@ -2717,6 +2705,19 @@ PopupMenu::~PopupMenu()
         *pRefAutoSubMenu = NULL;    // #111060# avoid second delete in ~MenuItemData
 }
 
+void PopupMenu::CloseStartedFrom()
+{
+    // if the window was closed by TH, there is another menu
+    // which has this window as pActivePopup
+    if (!pStartedFrom)
+        return;
+
+    MenuFloatingWindow* p = (MenuFloatingWindow*) pStartedFrom->ImplGetWindow();
+    PopupMenu *pMenu = dynamic_cast<PopupMenu*>(this);
+    if (p && pMenu)
+        p->KillActivePopup(pMenu);
+}
+
 bool PopupMenu::IsInExecute()
 {
     return GetActivePopupMenu() ? true : false;


More information about the Libreoffice-commits mailing list