Bug 234323 - crash when requesting context menu on duchain tooltip
Summary: crash when requesting context menu on duchain tooltip
Status: RESOLVED FIXED
Alias: None
Product: kdevplatform
Classification: Developer tools
Component: language (show other bugs)
Version: 0.9.94
Platform: Debian testing Linux
: VHI crash
Target Milestone: 1.0.0
Assignee: kdevelop-bugs-null
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-04-14 11:41 UTC by Milian Wolff
Modified: 2012-01-13 15:15 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Milian Wolff 2010-04-14 11:41:40 UTC
Related to bug 204332 which shows the error in the code completion which is kate-only-code.

This bug also triggers, at least in kde 4.3.4 / Qt 4.5.x, when you request the context menu on the DUChain popup. Afaik I could not reproduce that with KDE 4.4.x / Qt 4.6.x.

The cause for this bug should be the same, i.e. that the context menu get's the focus and hence the popup gets deleted triggering the race.

Imo a quite severe bug, any ideas on how to fix it would be greatly appreciated.
Comment 1 Milian Wolff 2010-04-14 12:25:04 UTC
Damn I cannot reproduce in valgrind (maybe because everything is too slow then...), but I bet it's the same reason as in the above mentioned kate bug. Here's the GDB bt for now:

Application: KDevelop (kdevelop.bin), signal: Segmentation fault
[Current thread is 1 (Thread 0xb4cbf700 (LWP 28617))]

Thread 10 (Thread 0xb1956b70 (LWP 28618)):
#0  0xb7856424 in __kernel_vsyscall ()
#1  0xb513a3d2 in pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/pthread_cond_timedwait.S:179
#2  0xb59e6864 in __pthread_cond_timedwait (cond=0x8e38b10, mutex=0x8e38af8, abstime=0xb195630c) at forward.c:152
#3  0xb65ec59c in QWaitConditionPrivate::wait (this=0x90a9c14, mutex=0x90a9c18, time=200000) at thread/qwaitcondition_unix.cpp:85
#4  QWaitCondition::wait (this=0x90a9c14, mutex=0x90a9c18, time=200000) at thread/qwaitcondition_unix.cpp:159
#5  0xb551378e in KDevelop::DUChainPrivate::CleanupThread::run (this=0x90a9c08) at /home/milianw/projects/kde4/kdevplatform/language/duchain/duchain.cpp:286
#6  0xb65eb5e2 in QThreadPrivate::start (arg=0x90a9c08) at thread/qthread_unix.cpp:188
#7  0xb5136585 in start_thread (arg=0xb1956b70) at pthread_create.c:300
#8  0xb59d929e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130

Thread 9 (Thread 0xb0632b70 (LWP 28619)):
#0  0xb7856424 in __kernel_vsyscall ()
#1  0xb513a0a5 in pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/pthread_cond_wait.S:122
#2  0xb59e680d in __pthread_cond_wait (cond=0x91e8ce8, mutex=0x91e8cd0) at forward.c:139
#3  0xb65ec5c2 in QWaitConditionPrivate::wait (this=0x91e1070, mutex=0x91e5b90, time=4294967295) at thread/qwaitcondition_unix.cpp:87
#4  QWaitCondition::wait (this=0x91e1070, mutex=0x91e5b90, time=4294967295) at thread/qwaitcondition_unix.cpp:159
#5  0xb715eb10 in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned (this=0x91e1058, th=0x91d1f10) at ../../../threadweaver/Weaver/WeaverImpl.cpp:365
#6  0xb71610cc in ThreadWeaver::WorkingHardState::waitForAvailableJob (this=0x91d1400, th=0x91d1f10) at ../../../threadweaver/Weaver/WorkingHardState.cpp:80
#7  0xb715d1db in ThreadWeaver::WeaverImpl::waitForAvailableJob (this=0x91e1058, th=0x91d1f10) at ../../../threadweaver/Weaver/WeaverImpl.cpp:356
#8  0xb71611c2 in ThreadWeaver::WorkingHardState::applyForWork (this=0x91d1400, th=0x91d1f10) at ../../../threadweaver/Weaver/WorkingHardState.cpp:71
#9  0xb715ed93 in ThreadWeaver::WeaverImpl::applyForWork (this=0x91e1058, th=0x91d1f10, previous=0x91ef728) at ../../../threadweaver/Weaver/WeaverImpl.cpp:351
#10 0xb715f39e in ThreadWeaver::ThreadRunHelper::run (this=0xb0632324, parent=0x91e1058, th=0x91d1f10) at ../../../threadweaver/Weaver/Thread.cpp:87
#11 0xb715fabb in ThreadWeaver::Thread::run (this=0x91d1f10) at ../../../threadweaver/Weaver/Thread.cpp:142
#12 0xb65eb5e2 in QThreadPrivate::start (arg=0x91d1f10) at thread/qthread_unix.cpp:188
#13 0xb5136585 in start_thread (arg=0xb0632b70) at pthread_create.c:300
#14 0xb59d929e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130

Thread 8 (Thread 0xafe31b70 (LWP 28620)):
#0  0xb7856424 in __kernel_vsyscall ()
#1  0xb513a3d2 in pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/pthread_cond_timedwait.S:179
#2  0xb59e6864 in __pthread_cond_timedwait (cond=0x91f3c90, mutex=0x91f3c78, abstime=0xafe312ac) at forward.c:152
#3  0xb65ec59c in QWaitConditionPrivate::wait (this=0x91f3be0, mutex=0x91f3bdc, time=30000) at thread/qwaitcondition_unix.cpp:85
#4  QWaitCondition::wait (this=0x91f3be0, mutex=0x91f3bdc, time=30000) at thread/qwaitcondition_unix.cpp:159
#5  0xb65e1d7e in QThreadPoolThread::run (this=0x91f3d28) at concurrent/qthreadpool.cpp:140
#6  0xb65eb5e2 in QThreadPrivate::start (arg=0x91f3d28) at thread/qthread_unix.cpp:188
#7  0xb5136585 in start_thread (arg=0xafe31b70) at pthread_create.c:300
#8  0xb59d929e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130

Thread 7 (Thread 0xad27fb70 (LWP 28790)):
#0  0xb7856424 in __kernel_vsyscall ()
#1  0xb59cbb27 in *__GI___poll (fds=0xb1003728, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:87
#2  0xb508104b in g_poll () from /lib/libglib-2.0.so.0
#3  0xb507420b in ?? () from /lib/libglib-2.0.so.0
#4  0xb5074503 in g_main_context_iteration () from /lib/libglib-2.0.so.0
#5  0xb670705f in QEventDispatcherGlib::processEvents (this=0x94fd5d8, flags=...) at kernel/qeventdispatcher_glib.cpp:409
#6  0xb66da83a in QEventLoop::processEvents (this=0xad27f2f0, flags=...) at kernel/qeventloop.cpp:149
#7  0xb66dac82 in QEventLoop::exec (this=0xad27f2f0, flags=...) at kernel/qeventloop.cpp:201
#8  0xb65e8309 in QThread::exec (this=0x964b938) at thread/qthread.cpp:487
#9  0xb5626059 in KDevelop::CompletionWorkerThread::run (this=0x964b938) at /home/milianw/projects/kde4/kdevplatform/language/codecompletion/codecompletionmodel.cpp:82
#10 0xb65eb5e2 in QThreadPrivate::start (arg=0x964b938) at thread/qthread_unix.cpp:188
#11 0xb5136585 in start_thread (arg=0xad27fb70) at pthread_create.c:300
#12 0xb59d929e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130

Thread 6 (Thread 0xada80b70 (LWP 28791)):
#0  0xb50f0e4c in *__GI_clock_gettime (clock_id=-1257287692, tp=0xada80048) at ../sysdeps/unix/clock_gettime.c:100
#1  0xb6708e9b in QTimerInfoList::getTime (this=0xaed416bc, t=...) at kernel/qeventdispatcher_unix.cpp:339
#2  0xb6709061 in QTimerInfoList::updateCurrentTime (this=0xaed416bc) at kernel/qeventdispatcher_unix.cpp:297
#3  0xb670921a in QTimerInfoList::timerWait (this=0xaed416bc, tm=...) at kernel/qeventdispatcher_unix.cpp:420
#4  0xb6707220 in timerSourcePrepareHelper (src=0xada80048, timeout=0xada8014c) at kernel/qeventdispatcher_glib.cpp:136
#5  0xb67072a5 in timerSourcePrepare (source=0x0, timeout=0xb50f4ff4) at kernel/qeventdispatcher_glib.cpp:169
#6  0xb5073c30 in g_main_context_prepare () from /lib/libglib-2.0.so.0
#7  0xb5073ff1 in ?? () from /lib/libglib-2.0.so.0
#8  0xb5074503 in g_main_context_iteration () from /lib/libglib-2.0.so.0
#9  0xb670705f in QEventDispatcherGlib::processEvents (this=0x94eb9d8, flags=...) at kernel/qeventdispatcher_glib.cpp:409
#10 0xb66da83a in QEventLoop::processEvents (this=0xada802f0, flags=...) at kernel/qeventloop.cpp:149
#11 0xb66dac82 in QEventLoop::exec (this=0xada802f0, flags=...) at kernel/qeventloop.cpp:201
#12 0xb65e8309 in QThread::exec (this=0xb10ca670) at thread/qthread.cpp:487
#13 0xb5626059 in KDevelop::CompletionWorkerThread::run (this=0xb10ca670) at /home/milianw/projects/kde4/kdevplatform/language/codecompletion/codecompletionmodel.cpp:82
#14 0xb65eb5e2 in QThreadPrivate::start (arg=0xb10ca670) at thread/qthread_unix.cpp:188
#15 0xb5136585 in start_thread (arg=0xada80b70) at pthread_create.c:300
#16 0xb59d929e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130

Thread 5 (Thread 0xaa15fb70 (LWP 28792)):
#0  0xb7856424 in __kernel_vsyscall ()
#1  0xb513a3d2 in pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/pthread_cond_timedwait.S:179
#2  0xb59e6864 in __pthread_cond_timedwait (cond=0xaa15f284, mutex=0xaa15f2b4, abstime=0xaa15f2f0) at forward.c:152
#3  0xb65eafee in thread_sleep (ti=0xaa15f2f0) at thread/qthread_unix.cpp:297
#4  0xb65eb11b in QThread::msleep (msecs=<value optimized out>) at thread/qthread_unix.cpp:323
#5  0xaab3f3e0 in UIBlockTester::UIBlockTesterThread::run (this=0xac9173d0) at /home/milianw/projects/kde4/kdevelop/languages/cpp/cpplanguagesupport.cpp:678
#6  0xb65eb5e2 in QThreadPrivate::start (arg=0xac9173d0) at thread/qthread_unix.cpp:188
#7  0xb5136585 in start_thread (arg=0xaa15fb70) at pthread_create.c:300
#8  0xb59d929e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130
The current source language is "auto; currently c".

Thread 4 (Thread 0xa923eb70 (LWP 28800)):
#0  0xb7856424 in __kernel_vsyscall ()
#1  0xb513a0a5 in pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/pthread_cond_wait.S:122
#2  0xb59e680d in __pthread_cond_wait (cond=0x8f21eb0, mutex=0x8f21e98) at forward.c:139
#3  0xb65ec5c2 in QWaitConditionPrivate::wait (this=0x8ef8238, mutex=0x8f21fe0, time=4294967295) at thread/qwaitcondition_unix.cpp:87
#4  QWaitCondition::wait (this=0x8ef8238, mutex=0x8f21fe0, time=4294967295) at thread/qwaitcondition_unix.cpp:159
#5  0xb715eb10 in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned (this=0x8ef8220, th=0x9458058) at ../../../threadweaver/Weaver/WeaverImpl.cpp:365
#6  0xb71610cc in ThreadWeaver::WorkingHardState::waitForAvailableJob (this=0x8ef81b8, th=0x9458058) at ../../../threadweaver/Weaver/WorkingHardState.cpp:80
#7  0xb715d1db in ThreadWeaver::WeaverImpl::waitForAvailableJob (this=0x8ef8220, th=0x9458058) at ../../../threadweaver/Weaver/WeaverImpl.cpp:356
#8  0xb71611c2 in ThreadWeaver::WorkingHardState::applyForWork (this=0x8ef81b8, th=0x9458058) at ../../../threadweaver/Weaver/WorkingHardState.cpp:71
#9  0xb715ed93 in ThreadWeaver::WeaverImpl::applyForWork (this=0x8ef8220, th=0x9458058, previous=0x9a6c8e8) at ../../../threadweaver/Weaver/WeaverImpl.cpp:351
#10 0xb715f39e in ThreadWeaver::ThreadRunHelper::run (this=0xa923e324, parent=0x8ef8220, th=0x9458058) at ../../../threadweaver/Weaver/Thread.cpp:87
#11 0xb715fabb in ThreadWeaver::Thread::run (this=0x9458058) at ../../../threadweaver/Weaver/Thread.cpp:142
#12 0xb65eb5e2 in QThreadPrivate::start (arg=0x9458058) at thread/qthread_unix.cpp:188
#13 0xb5136585 in start_thread (arg=0xa923eb70) at pthread_create.c:300
#14 0xb59d929e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130

Thread 3 (Thread 0xa8a3db70 (LWP 28801)):
#0  0xb7856424 in __kernel_vsyscall ()
#1  0xb513a0a5 in pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/pthread_cond_wait.S:122
#2  0xb59e680d in __pthread_cond_wait (cond=0x8f21eb0, mutex=0x8f21e98) at forward.c:139
#3  0xb65ec5c2 in QWaitConditionPrivate::wait (this=0x8ef8238, mutex=0x8f21fe0, time=4294967295) at thread/qwaitcondition_unix.cpp:87
#4  QWaitCondition::wait (this=0x8ef8238, mutex=0x8f21fe0, time=4294967295) at thread/qwaitcondition_unix.cpp:159
#5  0xb715eb10 in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned (this=0x8ef8220, th=0xaed0d838) at ../../../threadweaver/Weaver/WeaverImpl.cpp:365
#6  0xb71610cc in ThreadWeaver::WorkingHardState::waitForAvailableJob (this=0x8ef81b8, th=0xaed0d838) at ../../../threadweaver/Weaver/WorkingHardState.cpp:80
#7  0xb715d1db in ThreadWeaver::WeaverImpl::waitForAvailableJob (this=0x8ef8220, th=0xaed0d838) at ../../../threadweaver/Weaver/WeaverImpl.cpp:356
#8  0xb71611c2 in ThreadWeaver::WorkingHardState::applyForWork (this=0x8ef81b8, th=0xaed0d838) at ../../../threadweaver/Weaver/WorkingHardState.cpp:71
#9  0xb715ed93 in ThreadWeaver::WeaverImpl::applyForWork (this=0x8ef8220, th=0xaed0d838, previous=0x9905890) at ../../../threadweaver/Weaver/WeaverImpl.cpp:351
#10 0xb715f39e in ThreadWeaver::ThreadRunHelper::run (this=0xa8a3d324, parent=0x8ef8220, th=0xaed0d838) at ../../../threadweaver/Weaver/Thread.cpp:87
#11 0xb715fabb in ThreadWeaver::Thread::run (this=0xaed0d838) at ../../../threadweaver/Weaver/Thread.cpp:142
#12 0xb65eb5e2 in QThreadPrivate::start (arg=0xaed0d838) at thread/qthread_unix.cpp:188
#13 0xb5136585 in start_thread (arg=0xa8a3db70) at pthread_create.c:300
#14 0xb59d929e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130

Thread 2 (Thread 0xa823cb70 (LWP 28802)):
#0  0xb7856424 in __kernel_vsyscall ()
#1  0xb513a0a5 in pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/pthread_cond_wait.S:122
#2  0xb59e680d in __pthread_cond_wait (cond=0x8f21eb0, mutex=0x8f21e98) at forward.c:139
#3  0xb65ec5c2 in QWaitConditionPrivate::wait (this=0x8ef8238, mutex=0x8f21fe0, time=4294967295) at thread/qwaitcondition_unix.cpp:87
#4  QWaitCondition::wait (this=0x8ef8238, mutex=0x8f21fe0, time=4294967295) at thread/qwaitcondition_unix.cpp:159
#5  0xb715eb10 in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned (this=0x8ef8220, th=0xb1004a30) at ../../../threadweaver/Weaver/WeaverImpl.cpp:365
#6  0xb71610cc in ThreadWeaver::WorkingHardState::waitForAvailableJob (this=0x8ef81b8, th=0xb1004a30) at ../../../threadweaver/Weaver/WorkingHardState.cpp:80
#7  0xb715d1db in ThreadWeaver::WeaverImpl::waitForAvailableJob (this=0x8ef8220, th=0xb1004a30) at ../../../threadweaver/Weaver/WeaverImpl.cpp:356
#8  0xb71611c2 in ThreadWeaver::WorkingHardState::applyForWork (this=0x8ef81b8, th=0xb1004a30) at ../../../threadweaver/Weaver/WorkingHardState.cpp:71
#9  0xb715ed93 in ThreadWeaver::WeaverImpl::applyForWork (this=0x8ef8220, th=0xb1004a30, previous=0x0) at ../../../threadweaver/Weaver/WeaverImpl.cpp:351
#10 0xb715f39e in ThreadWeaver::ThreadRunHelper::run (this=0xa823c324, parent=0x8ef8220, th=0xb1004a30) at ../../../threadweaver/Weaver/Thread.cpp:87
#11 0xb715fabb in ThreadWeaver::Thread::run (this=0xb1004a30) at ../../../threadweaver/Weaver/Thread.cpp:142
#12 0xb65eb5e2 in QThreadPrivate::start (arg=0xb1004a30) at thread/qthread_unix.cpp:188
#13 0xb5136585 in start_thread (arg=0xa823cb70) at pthread_create.c:300
#14 0xb59d929e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130

Thread 1 (Thread 0xb4cbf700 (LWP 28617)):
[KCrash Handler]
#6  0x00000000 in ?? ()
#7  0xb5d1f0e4 in QWidget::event (this=0x985e4b0, event=0xbf961cc4) at kernel/qwidget.cpp:7713
#8  0xb60c4543 in QFrame::event (this=0x985e4b0, e=0xbf961cc4) at widgets/qframe.cpp:559
#9  0xb616259f in QAbstractScrollArea::viewportEvent (this=0x985e4b0, e=0x94141e0) at widgets/qabstractscrollarea.cpp:962
#10 0xb6164b75 in QAbstractScrollAreaPrivate::viewportEvent (this=0x9159508, o=0x9a26778, e=0xbf961cc4) at widgets/qabstractscrollarea_p.h:100
#11 QAbstractScrollAreaFilter::eventFilter (this=0x9159508, o=0x9a26778, e=0xbf961cc4) at widgets/qabstractscrollarea_p.h:111
#12 0xb66db41a in QCoreApplicationPrivate::sendThroughObjectEventFilters (this=0x8d8ad28, receiver=0x9a26778, event=0xbf961cc4) at kernel/qcoreapplication.cpp:726
#13 0xb5cc8a6c in QApplicationPrivate::notify_helper (this=0x8d8ad28, receiver=0x9a26778, e=0xbf961cc4) at kernel/qapplication.cpp:4061
#14 0xb5cd111d in QApplication::notify (this=0xbf96363c, receiver=0x9a26778, e=0xbf961cc4) at kernel/qapplication.cpp:3854
#15 0xb6a16e2a in KApplication::notify (this=0xbf96363c, receiver=0x9a26778, event=0xbf961cc4) at ../../kdeui/kernel/kapplication.cpp:302
#16 0xb66dc1eb in QCoreApplication::notifyInternal (this=0xbf96363c, receiver=0x9a26778, event=0xbf961cc4) at kernel/qcoreapplication.cpp:610
#17 0xb5cd39ce in QCoreApplication::sendSpontaneousEvent (receiver=0x9a26778, event=0x94141e0) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:216
#18 0xb5d3f8ff in QETWidget::translateMouseEvent (this=0x9824490, event=0xbf96324c) at kernel/qapplication_x11.cpp:4417
#19 0xb5d3e646 in QApplication::x11ProcessEvent (this=0xbf96363c, event=0xbf96324c) at kernel/qapplication_x11.cpp:3430
#20 0xb5d68bc2 in x11EventSourceDispatch (s=0x8d8de70, callback=0, user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:146
#21 0xb5070b38 in g_main_context_dispatch () from /lib/libglib-2.0.so.0
#22 0xb50743d0 in ?? () from /lib/libglib-2.0.so.0
#23 0xb5074503 in g_main_context_iteration () from /lib/libglib-2.0.so.0
#24 0xb6707041 in QEventDispatcherGlib::processEvents (this=0x8cea090, flags=...) at kernel/qeventdispatcher_glib.cpp:407
#25 0xb5d68305 in QGuiEventDispatcherGlib::processEvents (this=0x8cea090, flags=...) at kernel/qguieventdispatcher_glib.cpp:202
#26 0xb66da83a in QEventLoop::processEvents (this=0xbf963500, flags=...) at kernel/qeventloop.cpp:149
#27 0xb66dac82 in QEventLoop::exec (this=0xbf963500, flags=...) at kernel/qeventloop.cpp:201
#28 0xb66dd0d9 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:888
#29 0xb5cc8917 in QApplication::exec () at kernel/qapplication.cpp:3525
#30 0x0804fef4 in main (argc=1, argv=0xbf963cb4) at /home/milianw/projects/kde4/kdevelop/app/main_internal.cpp:232
Comment 2 Milian Wolff 2010-04-14 12:35:16 UTC
This would fix the issue, but I find it rather hackisch. Any better ideas?

Index: util/activetooltip.cpp
===================================================================
--- util/activetooltip.cpp      (revision 1114717)
+++ util/activetooltip.cpp      (working copy)
@@ -156,6 +156,9 @@
 void ActiveToolTip::showEvent(QShowEvent*)
 {
     adjustRect();
+    foreach(QWidget* w, findChildren<QWidget*>()) {
+        w->setContextMenuPolicy(Qt::NoContextMenu);
+    }
 }

 void ActiveToolTip::updateMouseDistance()
Comment 3 Andreas Pakulat 2010-04-14 12:44:13 UTC
How about installing an event filter on all child widgets (in the constructor, or wherever they're added) and eating right-click events in it? That would at least make it clearer why this happens (as opposed to a 3 line hack in some painting-related function).
Comment 4 Andreas Pakulat 2010-04-14 12:45:58 UTC
Or how about this: Make the tooltip a real widget as soon as the mouse enters. That way a context menu popup would actually work and not try to hide/delete the "tooltip".

PS: Thats what eclipse does and it seems to work pretty well (doesn't get in my way when using the keyboard and is useful when I use the mouse to navigate the tooltip)
Comment 5 David Nolden 2010-04-17 20:10:20 UTC
I cannot reproduce this here 

It is a real widget. But at some point you have to decide when you hide it again, for example when you switch to another app, and that's the problem here.

I remember that I've fixed this issue by walking the "QObject::parent" chain of the context-menu and see whether it's a child of the tool-tip (see ActiveToolTip::insideThis and ActiveToolTip::eventFilter). We should find out why it doesn't work in some cases.
Comment 6 Milian Wolff 2010-04-17 21:37:37 UTC
afaik only reproducibly with KDE 4.3 / Qt 4.5 - which we still support in KDevelop 4.0.

But I cannot reproduce with KDE 4.4. / Qt 4.6 - so maybe close nevertheless? I don't want to spent time on fixing it for 4.3 :-/
Comment 7 David Nolden 2010-04-18 12:07:43 UTC
SVN commit 1115977 by zwabel:

Completely disable the context-menu within the navigation widget. It is completely useless there, and can lead to crashes in the completion-list and navigation-tooltip due to the focus-change.
BUG: 234323

 M  +3 -0      abstractnavigationwidget.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1115977
Comment 8 Raphael Kubo da Costa 2012-01-13 15:14:34 UTC
*** Bug 240716 has been marked as a duplicate of this bug. ***
Comment 9 Raphael Kubo da Costa 2012-01-13 15:15:14 UTC
Sorry, wrong report.