Summary: | first accessed window crashes kdevelop | ||
---|---|---|---|
Product: | [Unmaintained] kdelibs | Reporter: | tnagy <tnagy256> |
Component: | kmdi | Assignee: | KDevelop Developers <kdevelop-devel> |
Status: | RESOLVED FIXED | ||
Severity: | crash | ||
Priority: | NOR | ||
Version: | SVN | ||
Target Milestone: | --- | ||
Platform: | Compiled Sources | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: | |||
Attachments: |
improves the kdevelop "view" menu
patch |
Description
tnagy
2004-01-19 20:57:05 UTC
Damn. Just another crashing one... Seems as if we've forgotton to disconnect somewhere. This is a backtrace after closing all open files and pressing Alt+Up: #3 <signal handler called> #4 KMdiMainFrm::activateLastWin() (this=0x816a748) at kmdichildview.h:326 #5 0x08066354 in MainWindow::gotoLastWindow() (this=0xfffffe00) at mainwindow.cpp:786 #6 0x08069519 in MainWindow::qt_invoke(int, QUObject*) (this=0x816a748, _id=149, _o=0xbfffea90) at mainwindow.moc:163 #7 0x411f4210 in QObject::activate_signal(QConnectionList*, QUObject*) () from /opt/qt3/lib/libqt-mt.so.3 #8 0x411f4044 in QObject::activate_signal(int) () from /opt/qt3/lib/libqt-mt.so.3 #9 0x0808ada0 in MainWindowShare::gotoLastWindow() (this=0xfffffe00) at qmetaobject.h:261 #10 0x0808afaa in MainWindowShare::qt_emit(int, QUObject*) (this=0x8172ad8, _id=5, _o=0xfffffe00) at mainwindowshare.moc:209 #11 0x411f4245 in QObject::activate_signal(QConnectionList*, QUObject*) () from /opt/qt3/lib/libqt-mt.so.3 #12 0x411f4044 in QObject::activate_signal(int) () from /opt/qt3/lib/libqt-mt.so.3 #13 0x40b427ab in KAction::activated() (this=0xfffffe00) at qmetaobject.h:261 #14 0x40b41d7f in KAction::slotActivated() (this=0xfffffe00) at kaction.cpp:1054 #15 0x40b429b1 in KAction::qt_invoke(int, QUObject*) (this=0x81c3c58, _id=14, _o=0xbfffec70) at kaction.moc:181 #16 0x411f4210 in QObject::activate_signal(QConnectionList*, QUObject*) () from /opt/qt3/lib/libqt-mt.so.3 #17 0x4150e262 in QSignal::signal(QVariant const&) () from /opt/qt3/lib/libqt-mt.so.3 #18 0x4120e148 in QSignal::activate() () from /opt/qt3/lib/libqt-mt.so.3 #19 0x41193016 in QAccelPrivate::activateAmbiguously(QAccelItem*) () from /opt/qt3/lib/libqt-mt.so.3 Does this happen in other ui modes, too? Yes, it does. Created attachment 4247 [details]
improves the kdevelop "view" menu
This patch is for removing the actions "switch to" "next window", "previous
window" from the menu (and only from the menus).
Same BT again with QT-Copy and with -debug: #4 KMdiMainFrm::activateLastWin() (this=0x81bc360) at kmdichildview.h:326 #5 0x08066354 in MainWindow::gotoLastWindow() (this=0xfffffe00) at mainwindow.cpp:786 #6 0x08069519 in MainWindow::qt_invoke(int, QUObject*) (this=0x81bc360, _id=149, _o=0xbfffea90) at mainwindow.moc:163 #7 0x4127acbb in QObject::activate_signal(QConnectionList*, QUObject*) ( this=0x8196070, clist=0x819df38, o=0xbfffea90) at kernel/qobject.cpp:2359 #8 0x4127ab5b in QObject::activate_signal(int) (this=0x8196070, signal=5) at kernel/qobject.cpp:2328 #9 0x0808aef0 in MainWindowShare::gotoLastWindow() (this=0xfffffe00) at qmetaobject.h:261 #10 0x0808b0fa in MainWindowShare::qt_emit(int, QUObject*) (this=0x8196070, _id=-1073747312, _o=0xfffffe00) at mainwindowshare.moc:209 #11 0x4127ac8f in QObject::activate_signal(QConnectionList*, QUObject*) ( this=0x819bec0, clist=0x819bef8, o=0xbfffeb70) at kernel/qobject.cpp:2357 #12 0x4127ab5b in QObject::activate_signal(int) (this=0x819bec0, signal=2) at kernel/qobject.cpp:2328 #13 0x40b427ab in KAction::activated() (this=0xfffffe00) at qmetaobject.h:261 #14 0x40b41d7f in KAction::slotActivated() (this=0xfffffe00) at kaction.cpp:1054 #15 0x40b429b1 in KAction::qt_invoke(int, QUObject*) (this=0x819bec0, _id=-1073747312, _o=0x81bc360) at kaction.moc:181 #16 0x4127acbb in QObject::activate_signal(QConnectionList*, QUObject*) ( this=0x81eefd8, clist=0x890c648, o=0xbfffec70) at kernel/qobject.cpp:2359 #17 0x4127ab5b in QObject::activate_signal(int) (this=0x81eefd8, signal=2) at kernel/qobject.cpp:2328 #18 0x40e1f9ab in KAccelPrivate::menuItemActivated() (this=0xfffffe00) at qmetaobject.h:261 #19 0x40e1c449 in KAccelPrivate::eventFilter(QObject*, QEvent*) ( this=0x81eefd8, pEvent=0xbffff0e0) at kaccel.cpp:319 #20 0x4127856f in QObject::activate_filters(QEvent*) (this=0x81bc360, e=0xbffff0e0) at kernel/qobject.cpp:902 #21 0x412783ed in QObject::event(QEvent*) (this=0x81bc360, e=0xbffff0e0) at kernel/qobject.cpp:735 #22 0x412b2c7b in QWidget::event(QEvent*) (this=0x81bc360, e=0xbffff0e0) at kernel/qwidget.cpp:4630 #23 0x4137ac3c in QMainWindow::event(QEvent*) (this=0x81bc360, e=0xbffff0e0) at widgets/qmainwindow.cpp:1686 KMDI bug. One would think calling KMdiMainFrm::activateLastWin() should be safe at any time, and not crash when there was no "last window". That said, I'm all for removing it from the view menu. It contains a lot of clutter with minimal usefulness. Created attachment 4252 [details]
patch
This fixes the crash for me. Can anyone verify?
Subject: kdelibs/kmdi CVS commit by dagerbo: Quck fix for bug: 72991 CCMAIL: 72991-done@bugs.kde.org M +82 -78 kmdimainfrm.cpp 1.54 --- kdelibs/kmdi/kmdimainfrm.cpp #1.53:1.54 @@ -2023,4 +2023,6 @@ void KMdiMainFrm::activateFirstWin() } + if ( !activeWindow() ) return; + QDateTime current = activeWindow()->getTimeStamp(); QMap<QDateTime,KMdiChildView*>::iterator pos(m.find(current)); @@ -2049,4 +2051,6 @@ void KMdiMainFrm::activateLastWin() } + if ( !activeWindow() ) return; + QDateTime current = activeWindow()->getTimeStamp(); QMap<QDateTime,KMdiChildView*>::iterator pos(m.find(current)); Should be backported to KDE_3_2_BRANCH. Subject: KDE_3_2_BRANCH: kdelibs/kmdi CVS commit by lukas: backport crash fix for #72991 CCMAIL: 72991@bugs.kde.org M +82 -78 kmdimainfrm.cpp 1.53.2.1 --- kdelibs/kmdi/kmdimainfrm.cpp #1.53:1.53.2.1 @@ -2023,4 +2023,6 @@ void KMdiMainFrm::activateFirstWin() } + if ( !activeWindow() ) return; + QDateTime current = activeWindow()->getTimeStamp(); QMap<QDateTime,KMdiChildView*>::iterator pos(m.find(current)); @@ -2049,4 +2051,6 @@ void KMdiMainFrm::activateLastWin() } + if ( !activeWindow() ) return; + QDateTime current = activeWindow()->getTimeStamp(); QMap<QDateTime,KMdiChildView*>::iterator pos(m.find(current)); |