[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    koffice/libs/kofficeui
From:       Peter Simonsson <psn () linux ! se>
Date:       2006-12-16 0:05:17
Message-ID: 1166227517.253203.11752.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 614006 by psn:

Fix dipesh's KoToolDocker crash...


 M  +5 -0      KoToolDocker.cpp  
 M  +9 -0      KoToolManager.cpp  
 M  +7 -0      KoToolManager.h  


--- trunk/koffice/libs/kofficeui/KoToolDocker.cpp #614005:614006
@@ -27,6 +27,8 @@
 #include <klocale.h>
 #include <kdebug.h>
 
+#include <KoToolManager.h>
+
 KoToolDocker::KoToolDocker()
     : QDockWidget(i18n("Tool Options"))
 {
@@ -55,6 +57,9 @@
         w->setParent(0);
     }
     delete m_label;
+
+    // Hack to avoid crashes due to dangling pointers
+    KoToolManager::instance()->unsetToolOptionDocker(this);
 }
 
 void KoToolDocker::setOptionWidget(QWidget * widget)
--- trunk/koffice/libs/kofficeui/KoToolManager.cpp #614005:614006
@@ -540,6 +540,15 @@
     return m_activeCanvas;
 }
 
+void KoToolManager::unsetToolOptionDocker(KoToolDocker* docker)
+{
+    foreach(KoCanvasController *controller, m_canvases) {
+        if(controller->toolOptionDocker() == docker) {
+            controller->setToolOptionDocker(0);
+        }
+    }
+}
+
 //static
 KoToolManager* KoToolManager::s_instance = 0;
 static KStaticDeleter<KoToolManager> staticToolManagerDeleter;
--- trunk/koffice/libs/kofficeui/KoToolManager.h #614005:614006
@@ -40,6 +40,7 @@
 class KActionCollection;
 class KoShape;
 class KoToolSelection;
+class KoToolDocker;
 
 
 /**
@@ -176,6 +177,12 @@
     /// @return the currently active pointing device
     KoInputDevice currentInputDevice() const;
 
+    /**
+     * Unset the toolOptionDocker @p docker in all canvasControllers using it.
+     * This is called from the KoToolDocker destructor to avoid dangling pointers.
+     */
+    void unsetToolOptionDocker(KoToolDocker* docker);
+
 public slots:
     /**
      * Request switching tool
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic