From kde-core-devel Thu Aug 30 08:33:27 2001 From: "F () lk Brettschneider" Date: Thu, 30 Aug 2001 08:33:27 +0000 To: kde-core-devel Subject: Re: KDockWidget problem X-MARC-Message: https://marc.info/?l=kde-core-devel&m=99916056812062 Hi, > I just found out that quanta crashes with the following backtrace: > > #4 0x8074277 in QuantaApp::slotDockChanged () > #5 0x40b7ba5d in QObject::activate_signal () from /usr/lib/libqt.so.2 > #6 0x4078f304 in KDockManager::change () from /opt/kde2/lib/libkdeui.so.3 > #7 0x407842e8 in KDockWidget::undock () from /opt/kde2/lib/libkdeui.so.3 > #8 0x40782b03 in KDockWidget::~KDockWidget () from /opt/kde2/lib/libkdeui.so.3 > #9 0x40784cf3 in KDockManager::~KDockManager () > from /opt/kde2/lib/libkdeui.so.3 > #10 0x40781680 in KDockMainWindow::~KDockMainWindow () > from /opt/kde2/lib/libkdeui.so.3 > #11 0x8075a6f in QuantaApp::~QuantaApp () > > Is that on purpose that change() is emitted during destruction? > > Looks like KDockWidget::undock() shouldn't emit manager->change() during destruction. Seems your right. Can you test it by replacing this one ----------- } manager->blockSignals(false); emit manager->change(); manager->undockProcess = false; if (!d->blockHasUndockedSignal) emit hasUndocked(); } ------------ with this one (in KDockWidget::undock()), please?: ----------- } manager->blockSignals(false); if (!d->blockHasUndockedSignal) emit manager->change(); manager->undockProcess = false; if (!d->blockHasUndockedSignal) emit hasUndocked(); } ------------ Tell me whether it works or not, OK? > In fact, I wouldn't think that the huge undock() method should be called at all No, undock() must be called to clean up the place where the dying dockwidget was. For instance the dockmanager resizes the neighbours which take over the area of that demized widget. > Cheers > Carsten Pfeiffer Cheers, F@lk _________________________________________________________ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com