[Libreoffice-commits] core.git: 4 commits - chart2/source include/sfx2 include/svx sfx2/source

Markus Mohrhard markus.mohrhard at googlemail.com
Fri Oct 9 11:42:43 PDT 2015


 chart2/source/controller/main/ChartController.cxx   |    4 +-
 chart2/source/controller/sidebar/ChartAreaPanel.cxx |    2 -
 include/sfx2/sidebar/SidebarController.hxx          |    2 +
 include/svx/sidebar/AreaPropertyPanelBase.hxx       |    3 --
 sfx2/source/sidebar/SidebarController.cxx           |   30 +++++++++++++-------
 5 files changed, 24 insertions(+), 17 deletions(-)

New commits:
commit 33972dea7d8849842929060be8f970e090077e4c
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Thu Oct 8 19:14:35 2015 +0200

    correctly dispose the chart sidebar when leaving chart, tdf#94292
    
    This is a much better approach than my old one that tried to use the
    correct XModel with the chart sidebar. Now everytime we leave the chart
    edit mdoe we destroy the chart sidebar panels and recreate them when we
    go back to chart edit mode.
    As a result we no longer need to have worry that much about using the
    correct ChartModel and about the lifecycle of the ChartModel.
    
    Change-Id: Ie85ad82968e20a81f059d4bd930a83a70da35fc9

diff --git a/chart2/source/controller/main/ChartController.cxx b/chart2/source/controller/main/ChartController.cxx
index 8b16543..754bc07 100644
--- a/chart2/source/controller/main/ChartController.cxx
+++ b/chart2/source/controller/main/ChartController.cxx
@@ -807,8 +807,6 @@ void SAL_CALL ChartController::dispose()
     throw(uno::RuntimeException, std::exception)
 {
     m_bDisposed = true;
-    mpSelectionChangeHandler->selectionChanged(css::lang::EventObject());
-    mpSelectionChangeHandler->Disconnect();
 
     if (getModel().is())
     {
@@ -819,6 +817,8 @@ void SAL_CALL ChartController::dispose()
             sfx2::sidebar::SidebarController::unregisterSidebarForFrame(pSidebar, this);
         }
     }
+    mpSelectionChangeHandler->selectionChanged(css::lang::EventObject());
+    mpSelectionChangeHandler->Disconnect();
 
     try
     {
diff --git a/include/sfx2/sidebar/SidebarController.hxx b/include/sfx2/sidebar/SidebarController.hxx
index 0c88901..64bc26e 100644
--- a/include/sfx2/sidebar/SidebarController.hxx
+++ b/include/sfx2/sidebar/SidebarController.hxx
@@ -160,6 +160,8 @@ public:
 
     void updateModel(css::uno::Reference<css::frame::XModel> xModel);
 
+    void disposeDecks(css::uno::Reference<css::frame::XController> xController);
+
 private:
 
     VclPtr<Deck> mpCurrentDeck;
diff --git a/sfx2/source/sidebar/SidebarController.cxx b/sfx2/source/sidebar/SidebarController.cxx
index 5764394..896b06d 100644
--- a/sfx2/source/sidebar/SidebarController.cxx
+++ b/sfx2/source/sidebar/SidebarController.cxx
@@ -174,6 +174,7 @@ void SidebarController::registerSidebarForFrame(SidebarController* pController,
 
 void SidebarController::unregisterSidebarForFrame(SidebarController* pController, css::uno::Reference<css::frame::XController> xController)
 {
+    pController->disposeDecks(xController);
     css::uno::Reference<css::ui::XContextChangeEventMultiplexer> xMultiplexer (
         css::ui::ContextChangeEventMultiplexer::get(
             ::comphelper::getProcessComponentContext()));
@@ -183,22 +184,16 @@ void SidebarController::unregisterSidebarForFrame(SidebarController* pController
             xController);
 }
 
-void SAL_CALL SidebarController::disposing()
+void SidebarController::disposeDecks(css::uno::Reference<css::frame::XController> xController)
 {
-    mpCloseIndicator.disposeAndClear();
-
-    maFocusManager.Clear();
-    mpTabBar.disposeAndClear();
-
-
-        // clear decks
+    // clear decks
     ResourceManager::DeckContextDescriptorContainer aDecks;
 
     mpResourceManager->GetMatchingDecks (
             aDecks,
             GetCurrentContext(),
             IsDocumentReadOnly(),
-            mxFrame->getController());
+            xController);
 
     for (ResourceManager::DeckContextDescriptorContainer::const_iterator
             iDeck(aDecks.begin()), iEnd(aDecks.end());
@@ -206,9 +201,25 @@ void SAL_CALL SidebarController::disposing()
     {
         const DeckDescriptor* deckDesc = mpResourceManager->GetDeckDescriptor(iDeck->msId);
         VclPtr<Deck> aDeck = deckDesc->mpDeck;
+        if (aDeck == mpCurrentDeck)
+        {
+            mpCurrentDeck.clear();
+            maFocusManager.Clear();
+        }
         if (aDeck)
+        {
             aDeck.disposeAndClear();
+            mpResourceManager->SetDeckToDescriptor(iDeck->msId, VclPtr<Deck>());
+        }
     }
+}
+
+void SAL_CALL SidebarController::disposing()
+{
+    mpCloseIndicator.disposeAndClear();
+
+    maFocusManager.Clear();
+    mpTabBar.disposeAndClear();
 
     uno::Reference<css::frame::XController> xController = mxFrame->getController();
     if (!xController.is())
commit c129a415ad0998b1544aed756316ed869148ef7b
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Tue Oct 6 19:24:26 2015 +0200

    no need for using rtl::OUString in core code
    
    Change-Id: I6fc8a928374de48910395685b500ba95e8621d39

diff --git a/sfx2/source/sidebar/SidebarController.cxx b/sfx2/source/sidebar/SidebarController.cxx
index f05a166..5764394 100644
--- a/sfx2/source/sidebar/SidebarController.cxx
+++ b/sfx2/source/sidebar/SidebarController.cxx
@@ -57,7 +57,6 @@
 
 using namespace css;
 using namespace css::uno;
-using ::rtl::OUString;
 
 namespace
 {
commit bfa0c4c9986c87135ef19190ad260999cc1e43fc
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Tue Oct 6 12:24:17 2015 +0200

    remove whitespace
    
    Change-Id: I6390f16a6c2346c4c903a34d702277b931bc0079

diff --git a/chart2/source/controller/sidebar/ChartAreaPanel.cxx b/chart2/source/controller/sidebar/ChartAreaPanel.cxx
index 39f8185..54928df0 100644
--- a/chart2/source/controller/sidebar/ChartAreaPanel.cxx
+++ b/chart2/source/controller/sidebar/ChartAreaPanel.cxx
@@ -99,8 +99,6 @@ DrawModelWrapper* getDrawModelWrapper(css::uno::Reference<css::frame::XModel> xM
 XGradient getXGradientForName(css::uno::Reference<css::frame::XModel> xModel,
         const OUString& rName)
 {
-
-
     try
     {
         ViewElementListProvider aProvider = getViewElementListProvider(xModel);
commit 0ea449d37cf60186ded1372ac0de96c6bac955cd
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Sat Oct 3 16:30:16 2015 +0200

    remove whitespace
    
    Change-Id: I02541a12c893038f090a8e2847b6882669a967df

diff --git a/include/svx/sidebar/AreaPropertyPanelBase.hxx b/include/svx/sidebar/AreaPropertyPanelBase.hxx
index 0d1faf0c..b0ac3e345 100644
--- a/include/svx/sidebar/AreaPropertyPanelBase.hxx
+++ b/include/svx/sidebar/AreaPropertyPanelBase.hxx
@@ -175,11 +175,8 @@ protected:
     void SetTransparency(sal_uInt16 nVal);
 };
 
-
 } } // end of namespace svx::sidebar
 
-
-
 #endif // INCLUDED_SVX_SOURCE_SIDEBAR_AREA_AREAPROPERTYPANEL_HXX
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list