[Libreoffice-commits] core.git: Branch 'feature/vclref' - 2 commits - include/vcl vcl/source

Michael Meeks michael.meeks at collabora.com
Fri Mar 27 08:00:13 PDT 2015


 include/vcl/dockwin.hxx        |    2 +-
 include/vcl/syswin.hxx         |    2 +-
 vcl/source/window/dialog.cxx   |    2 +-
 vcl/source/window/dockwin.cxx  |    8 ++++----
 vcl/source/window/syswin.cxx   |    2 +-
 vcl/source/window/toolbox2.cxx |   14 ++++++++------
 6 files changed, 16 insertions(+), 14 deletions(-)

New commits:
commit 77cc543a194a1df6664ed7f4931559010d929401
Author: Michael Meeks <michael.meeks at collabora.com>
Date:   Fri Mar 27 14:51:14 2015 +0000

    Encourage disposed toolbox items to play nicely.
    
    Change-Id: I4a28ba4740e9c84666cd85c046598862f20a7a96

diff --git a/vcl/source/window/toolbox2.cxx b/vcl/source/window/toolbox2.cxx
index 85c4d68..16a467b9 100644
--- a/vcl/source/window/toolbox2.cxx
+++ b/vcl/source/window/toolbox2.cxx
@@ -880,7 +880,7 @@ void ToolBox::SetPageScroll( bool b )
 
 sal_uInt16 ToolBox::GetItemCount() const
 {
-    return (sal_uInt16)mpData->m_aItems.size();
+    return mpData ? (sal_uInt16)mpData->m_aItems.size() : 0;
 }
 
 ToolBoxItemType ToolBox::GetItemType( sal_uInt16 nPos ) const
@@ -890,11 +890,13 @@ ToolBoxItemType ToolBox::GetItemType( sal_uInt16 nPos ) const
 
 sal_uInt16 ToolBox::GetItemPos( sal_uInt16 nItemId ) const
 {
-    int nCount = mpData->m_aItems.size();
-    for( int nPos = 0; nPos < nCount; nPos++ )
-        if( mpData->m_aItems[nPos].mnId == nItemId )
-            return (sal_uInt16)nPos;
-
+    if (mpData)
+    {
+        int nCount = mpData->m_aItems.size();
+        for( int nPos = 0; nPos < nCount; nPos++ )
+            if( mpData->m_aItems[nPos].mnId == nItemId )
+                return (sal_uInt16)nPos;
+    }
     return TOOLBOX_ITEM_NOTFOUND;
 }
 
commit a0f96f343ef43a75710e36cc6137a2e63c003eec
Author: Michael Meeks <michael.meeks at collabora.com>
Date:   Fri Mar 27 14:36:47 2015 +0000

    Unwind mpDialogParent oddness.
    
    This pointer is used to pass extra information through dialog
    constructors, and (as such) if implemented with a VclPtr it causes
    us to take and then release a reference on our in-construction
    object, before it can return it's 'this' into the safety of its
    calling VclPtr<> constructor; not good. cf.
    Dialog::doDeferredInit vs. SystemWindow::loadUI.
    
    Change-Id: Idcab40cedcdebed560077cfaa1a14395e6e01cd6

diff --git a/include/vcl/dockwin.hxx b/include/vcl/dockwin.hxx
index 65b78d1..dd9667e 100644
--- a/include/vcl/dockwin.hxx
+++ b/include/vcl/dockwin.hxx
@@ -264,7 +264,7 @@ private:
                     mbIsCalculatingInitialLayoutSize:1,
                     mbInitialLayoutDone:1;
 
-    VclPtr<vcl::Window>  mpDialogParent;
+    vcl::Window *mpDialogParent; // deliberately not a VclPtr
 
     SAL_DLLPRIVATE void    ImplInitDockingWindowData();
     SAL_DLLPRIVATE void setPosSizeOnContainee(Size aSize, Window &rBox);
diff --git a/include/vcl/syswin.hxx b/include/vcl/syswin.hxx
index d44086f..d30cd42 100644
--- a/include/vcl/syswin.hxx
+++ b/include/vcl/syswin.hxx
@@ -155,7 +155,7 @@ private:
     Idle            maLayoutIdle;
 protected:
     bool            mbIsDefferedInit;
-    VclPtr<vcl::Window> mpDialogParent;
+    vcl::Window    *mpDialogParent; // deliberately not a VclPtr
 public:
     using Window::ImplIsInTaskPaneList;
     SAL_DLLPRIVATE bool ImplIsInTaskPaneList( vcl::Window* pWin );
diff --git a/vcl/source/window/dialog.cxx b/vcl/source/window/dialog.cxx
index 8edc7ee..cf4abe8 100644
--- a/vcl/source/window/dialog.cxx
+++ b/vcl/source/window/dialog.cxx
@@ -492,7 +492,7 @@ OUString VclBuilderContainer::getUIRootDir()
 //do the init. Find the real parent stashed in mpDialogParent.
 void Dialog::doDeferredInit(WinBits nBits)
 {
-    VclPtr<vcl::Window> pParent = mpDialogParent;
+    vcl::Window *pParent = mpDialogParent;
     mpDialogParent = NULL;
     ImplInit(pParent, nBits);
     mbIsDefferedInit = false;
diff --git a/vcl/source/window/dockwin.cxx b/vcl/source/window/dockwin.cxx
index 3efb65f..359ee13 100644
--- a/vcl/source/window/dockwin.cxx
+++ b/vcl/source/window/dockwin.cxx
@@ -121,7 +121,7 @@ void ImplDockFloatWin::dispose()
 
     disposeBuilder();
 
-    mpDockWin.disposeAndClear();
+    mpDockWin.clear();
     FloatingWindow::dispose();
 }
 
@@ -482,9 +482,9 @@ void DockingWindow::dispose()
     }
     delete mpImplData;
     mpImplData = NULL;
-    mpFloatWin.disposeAndClear();
-    mpOldBorderWin.disposeAndClear();
-    mpDialogParent.disposeAndClear();
+    mpFloatWin.clear();
+    mpOldBorderWin.clear();
+    mpDialogParent = NULL;
     Window::dispose();
 }
 
diff --git a/vcl/source/window/syswin.cxx b/vcl/source/window/syswin.cxx
index 9622d85..799ce4a 100644
--- a/vcl/source/window/syswin.cxx
+++ b/vcl/source/window/syswin.cxx
@@ -117,7 +117,7 @@ void SystemWindow::dispose()
 
     disposeBuilder();
 
-    mpDialogParent.disposeAndClear();
+    mpDialogParent = NULL;
     Window::dispose();
 }
 


More information about the Libreoffice-commits mailing list