Summary: | Umbrello using 100% of CPU when dragging | ||
---|---|---|---|
Product: | [Applications] umbrello | Reporter: | Emmanuel Pinault <seatmanu> |
Component: | general | Assignee: | Umbrello Development Group <umbrello-devel> |
Status: | RESOLVED FIXED | ||
Severity: | normal | ||
Priority: | NOR | ||
Version: | 1.3.1 | ||
Target Milestone: | --- | ||
Platform: | Debian testing | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
Emmanuel Pinault
2004-12-28 23:36:49 UTC
I cannot reproduce this here and I also cannot reproduce the related bugs 57667 and 90506. It would be great help if you could provide more information: Does this problem also happen when running in the debugger? If so, please press Control-C in the debugger and attach the backtrace. Backtrace: #0 0xb713f04b in QListViewItem::listView () from /usr/lib/libqt-mt.so.3 #1 0xb7138fb0 in QListViewItem::setText () from /usr/lib/libqt-mt.so.3 #2 0xb7136643 in QListViewItem::QListViewItem () from /usr/lib/libqt-mt.so.3 #3 0x081aea8f in UMLListViewItem (this=0x85e1c90, parent=0x85e1b28, name=@0xbffc5aa0, t=lvt_Class, o=0x858efc0) at /home/jr/devel/kdesdk/umbrello/umbrello/umllistviewitem.cpp:67 #4 0x081b0bb0 in UMLListViewItem::deepCopy (this=0x85e1b28, newParent=0x85e1b28) at /home/jr/devel/kdesdk/umbrello/umbrello/umllistviewitem.cpp:544 #5 0x081b0c32 in UMLListViewItem::deepCopy (this=0x85e19c0, newParent=0x85e19c0) at /home/jr/devel/kdesdk/umbrello/umbrello/umllistviewitem.cpp:549 #6 0x081b0c32 in UMLListViewItem::deepCopy (this=0x85e1858, newParent=0x85e1858) at /home/jr/devel/kdesdk/umbrello/umbrello/umllistviewitem.cpp:549 #7 0x081b0c32 in UMLListViewItem::deepCopy (this=0x85e16f0, newParent=0x85e16f0) at /home/jr/devel/kdesdk/umbrello/umbrello/umllistviewitem.cpp:549 #8 0x081b0c32 in UMLListViewItem::deepCopy (this=0x85e1588, newParent=0x85e1588) at /home/jr/devel/kdesdk/umbrello/umbrello/umllistviewitem.cpp:549 ....... #2048 0x081b0c32 in UMLListViewItem::deepCopy (this=0x87b1860, newParent=0x87b1860) at /home/jr/devel/kdesdk/umbrello/umbrello/umllistviewitem.cpp:549 #2049 0x081b0c32 in UMLListViewItem::deepCopy (this=0x8787730, newParent=0x8787730) at /home/jr/devel/kdesdk/umbrello/umbrello/umllistviewitem.cpp:549 #2050 0x081a6ce5 in UMLListView::moveObject (this=0x85186e8, srcId= {static npos = 4294967295, _M_dataplus = {<std::allocator<char>> = {<No data fields>}, _M_p = 0x8786634 "152"}, static _S_empty_rep_storage = {0, 0, 0, 0}}, srcType=lvt_Class, newParent=0x8787730) ---Type <return> to continue, or q <return> to quit--- at /home/jr/devel/kdesdk/umbrello/umbrello/umllistview.cpp:1133 #2051 0x081a6f1b in UMLListView::slotDropped (this=0x85186e8, de=0xbfffe0c0, item=0x8787730) at /home/jr/devel/kdesdk/umbrello/umbrello/umllistview.cpp:1174 #2052 0x081ad25d in UMLListView::qt_invoke (this=0x85186e8, _id=116, _o=0xbfffdb10) at umllistview.moc:203 #2053 0xb705b51c in QObject::activate_signal () from /usr/lib/libqt-mt.so.3 #2054 0xb79cbe85 in KListView::dropped (this=0x85186e8, t0=0xbfffe0c0, t1=0x8523b30, t2=0x8787730) at klistview.moc:420 #2055 0xb79c6006 in KListView::contentsDropEvent (this=0x85186e8, e=0xbfffe0c0) at /home/jr/devel/kdelibs/kdeui/klistview.cpp:912 #2056 0xb717126a in QScrollView::viewportDropEvent () from /usr/lib/libqt-mt.so.3 #2057 0xb7170907 in QScrollView::eventFilter () from /usr/lib/libqt-mt.so.3 #2058 0xb713edb8 in QListView::eventFilter () from /usr/lib/libqt-mt.so.3 #2059 0xb7058e4e in QObject::activate_filters () from /usr/lib/libqt-mt.so.3 #2060 0xb7058d7c in QObject::event () from /usr/lib/libqt-mt.so.3 #2061 0xb70915ff in QWidget::event () from /usr/lib/libqt-mt.so.3 #2062 0xb6ffebbf in QApplication::internalNotify () from /usr/lib/libqt-mt.so.3 #2063 0xb6ffe1be in QApplication::notify () from /usr/lib/libqt-mt.so.3 #2064 0xb76944f0 in KApplication::notify (this=0xbffff710, receiver=0x8519220, event=0xbfffe0c0) at /home/jr/devel/kdelibs/kdecore/kapplication.cpp:543 #2065 0xb6fa34f1 in qt_handle_xdnd_drop () from /usr/lib/libqt-mt.so.3 #2066 0xb6fa48d8 in QDragManager::drop () from /usr/lib/libqt-mt.so.3 #2067 0xb6fa380c in QDragManager::eventFilter () from /usr/lib/libqt-mt.so.3 #2068 0xb6ffec5d in QApplication::internalNotify () from /usr/lib/libqt-mt.so.3 #2069 0xb6ffe2b4 in QApplication::notify () from /usr/lib/libqt-mt.so.3 #2070 0xb76944f0 in KApplication::notify (this=0xbffff710, receiver=0x8726490, event=0xbfffe510) at /home/jr/devel/kdelibs/kdecore/kapplication.cpp:543 #2071 0xb6f93630 in QETWidget::translateMouseEvent () from /usr/lib/libqt-mt.so.3 #2072 0xb6f912be in QApplication::x11ProcessEvent () from /usr/lib/libqt-mt.so.3 #2073 0xb6fa8194 in QEventLoop::processEvents () from /usr/lib/libqt-mt.so.3 #2074 0xb7010f18 in QEventLoop::enterLoop () from /usr/lib/libqt-mt.so.3 #2075 0xb6ffee71 in QApplication::enter_loop () from /usr/lib/libqt-mt.so.3 #2076 0xb6fa54ba in QDragManager::drag () from /usr/lib/libqt-mt.so.3 #2077 0xb70084e8 in QDragObject::drag () from /usr/lib/libqt-mt.so.3 #2078 0xb700847a in QDragObject::dragCopy () from /usr/lib/libqt-mt.so.3 #2079 0x00000001 in ?? () #2080 0x081a5e0d in UMLListView::startDrag (this=0x85186e8) at /home/jr/devel/kdesdk/umbrello/umbrello/umllistview.cpp:766 #2081 0xb79c5a81 in KListView::contentsMouseMoveEvent (this=0x85186e8, e=0xbfffebe0) at /home/jr/devel/kdelibs/kdeui/klistview.cpp:827 #2082 0xb71710a2 in QScrollView::viewportMouseMoveEvent () from /usr/lib/libqt-mt.so.3 #2083 0xb71707db in QScrollView::eventFilter () from /usr/lib/libqt-mt.so.3 ---Type <return> to continue, or q <return> to quit--- #2084 0xb713edb8 in QListView::eventFilter () from /usr/lib/libqt-mt.so.3 #2085 0xb7058e4e in QObject::activate_filters () from /usr/lib/libqt-mt.so.3 #2086 0xb7058d7c in QObject::event () from /usr/lib/libqt-mt.so.3 #2087 0xb70915ff in QWidget::event () from /usr/lib/libqt-mt.so.3 #2088 0xb6ffebbf in QApplication::internalNotify () from /usr/lib/libqt-mt.so.3 #2089 0xb6ffe2b4 in QApplication::notify () from /usr/lib/libqt-mt.so.3 #2090 0xb76944f0 in KApplication::notify (this=0xbffff710, receiver=0x8519220, event=0xbffff170) at /home/jr/devel/kdelibs/kdecore/kapplication.cpp:543 #2091 0xb6f93630 in QETWidget::translateMouseEvent () from /usr/lib/libqt-mt.so.3 #2092 0xb6f912be in QApplication::x11ProcessEvent () from /usr/lib/libqt-mt.so.3 #2093 0xb6fa8194 in QEventLoop::processEvents () from /usr/lib/libqt-mt.so.3 #2094 0xb7010f18 in QEventLoop::enterLoop () from /usr/lib/libqt-mt.so.3 #2095 0xb7010dc8 in QEventLoop::exec () from /usr/lib/libqt-mt.so.3 #2096 0xb6ffee11 in QApplication::exec () from /usr/lib/libqt-mt.so.3 #2097 0x081664ad in main (argc=1, argv=0xbffff8b4) at /home/jr/devel/kdesdk/umbrello/umbrello/main.cpp:91 This doesn't happen every time, I had to drag the class into and out of the package a few times for it to happen. CVS commit by okellogg: moveObject(): Add missing m_doc->addUMLObject() when new parent is the Logical View. I am stunned that this could go unnoticed for so long! Thanks to Jonathan for the backtrace which helped pinpoint the problem. BUG:95954 M +1 -1 ChangeLog 1.57 M +17 -4 umbrello/umllistview.cpp 1.143 --- kdesdk/umbrello/ChangeLog #1.56:1.57 @@ -23,5 +23,5 @@ 91433 91434 91494 91869 91922 92116 92123 92222 92300 92301 92781 92995 93122 93219 93297 93501 93595 93696 94173 94728 -94795 94883 95082 95252 95722 95924 95951 96216 96221 +94795 94883 95082 95252 95722 95924 95951 95954 96216 96221 Version 1.3 --- kdesdk/umbrello/umbrello/umllistview.cpp #1.142:1.143 @@ -1056,11 +1056,24 @@ UMLListViewItem * UMLListView::moveObjec return NULL; + UMLObject *newParentObj = NULL; // Remove the source object at the old parent package. UMLObject *srcObj = m_doc->findObjectById(srcId); if (srcObj) { + newParentObj = newParent->getUMLObject(); + if (srcObj == newParentObj) { + kdError() << "UMLListView::moveObject(" << srcObj->getName() + << "): Cannot move onto self" << endl; + return NULL; + } UMLPackage *srcPkg = srcObj->getUMLPackage(); - if (srcPkg) + if (srcPkg) { + if (srcPkg == newParentObj) { + kdError() << "UMLListView::moveObject(" << srcObj->getName() + << "): Object is already in target package" << endl; + return NULL; + } srcPkg->removeObject(srcObj); } + } Uml::ListView_Type newParentType = newParent->getType(); @@ -1140,10 +1153,10 @@ UMLListViewItem * UMLListView::moveObjec newParentType == Uml::lvt_Interface || newParentType == Uml::lvt_Class) { - UMLPackage *pkg = static_cast<UMLPackage*>( - newParent->getUMLObject() ); + UMLPackage *pkg = static_cast<UMLPackage*>(newParentObj); o->setUMLPackage( pkg ); pkg->addObject( o ); } else { o->setUMLPackage( NULL ); + m_doc->addUMLObject( o ); } } @@ -1159,5 +1172,5 @@ void UMLListView::slotDropped(QDropEvent //kdDebug() << "UMLListView::slotDropped: item is NULL - setting to currentItem()" // << endl; - item = (UMLListViewItem *)currentItem(); + item = currentItem(); } UMLDrag::LvTypeAndID_List srcList; |