Blame SOURCES/0001-Resolves-rhbz-1121341-crash-on-closing-shrunk-validi.patch

f085be
From efb02fcddb7abe7f6f163ee8a47878b06d15a610 Mon Sep 17 00:00:00 2001
f085be
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
f085be
Date: Mon, 21 Jul 2014 13:14:19 +0100
f085be
Subject: [PATCH] Resolves: rhbz#1121341 crash on closing shrunk validity
f085be
 window
f085be
f085be
Change-Id: I5fc1d6b909b3281ec3799b60bc3fd7b5f1163a75
f085be
---
f085be
 sc/source/ui/dbgui/validate.cxx | 29 ++++++++++++++++++++++++-----
f085be
 sc/source/ui/inc/validate.hxx   |  2 ++
f085be
 2 files changed, 26 insertions(+), 5 deletions(-)
f085be
f085be
diff --git a/sc/source/ui/dbgui/validate.cxx b/sc/source/ui/dbgui/validate.cxx
f085be
index f40981c..d119747 100644
f085be
--- a/sc/source/ui/dbgui/validate.cxx
f085be
+++ b/sc/source/ui/dbgui/validate.cxx
f085be
@@ -151,12 +151,14 @@ void            ScTPValidationValue::RefInputDonePostHdl()
f085be
 
f085be
 }
f085be
 
f085be
-
f085be
 sal_Bool ScValidationDlg::Close()
f085be
 {
f085be
-    if( m_bOwnRefHdlr )
f085be
-        if( SfxTabPage* pPage = GetTabPage( TP_VALIDATION_VALUES ) )
f085be
-            static_cast<ScTPValidationValue*>(pPage)->RemoveRefDlg();
f085be
+    SfxTabPage* pPage = GetTabPage(TP_VALIDATION_VALUES);
f085be
+    if (pPage)
f085be
+        static_cast<ScTPValidationValue*>(pPage)->ParkRefs();
f085be
+
f085be
+    if (m_bOwnRefHdlr && pPage)
f085be
+        static_cast<ScTPValidationValue*>(pPage)->RemoveRefDlg();
f085be
 
f085be
     return ScValidationDlgBase::Close();
f085be
 }
f085be
@@ -168,7 +170,6 @@ ScValidationDlg::~ScValidationDlg()
f085be
     delete mpHBox;
f085be
 }
f085be
 
f085be
-
f085be
 // ============================================================================
f085be
 
f085be
 namespace {
f085be
@@ -338,6 +339,22 @@ ScTPValidationValue::ScTPValidationValue( Window* pParent, const SfxItemSet& rAr
f085be
     m_btnRef.Hide(); // cell range picker
f085be
 }
f085be
 
f085be
+void ScTPValidationValue::ParkRefs()
f085be
+{
f085be
+    //if there are children of the mpHBox, i.e.
f085be
+    //in shrunk mode, this will crash
f085be
+    //after the mpHBox is deleted
f085be
+    if( m_pRefEdit && m_pRefEdit->GetParent()!= this )
f085be
+    {
f085be
+        m_pRefEdit->SetParent( this );
f085be
+    }
f085be
+
f085be
+    if( m_btnRef.GetParent()!=this )
f085be
+    {
f085be
+        m_btnRef.SetParent( this );
f085be
+    }
f085be
+}
f085be
+
f085be
 ScTPValidationValue::~ScTPValidationValue()
f085be
 {
f085be
 }
f085be
diff --git a/sc/source/ui/inc/validate.hxx b/sc/source/ui/inc/validate.hxx
f085be
index 5cac401..12d1cec 100644
f085be
--- a/sc/source/ui/inc/validate.hxx
f085be
+++ b/sc/source/ui/inc/validate.hxx
f085be
@@ -182,6 +182,8 @@ public:
f085be
     virtual sal_Bool                FillItemSet( SfxItemSet& rArgSet );
f085be
     virtual void                Reset( const SfxItemSet& rArgSet );
f085be
 
f085be
+    void                        ParkRefs();
f085be
+
f085be
 private:
f085be
     void                        Init();
f085be
 
f085be
-- 
f085be
1.9.3
f085be