[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