Thread: [aKregator-devel] [Bug 124303] New: Drag/drop between folders sometimes creates 2 list entries (dupl
Brought to you by:
lippel
From: Ned B. <cra...@ne...> - 2006-03-26 15:16:53
|
------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. http://bugs.kde.org/show_bug.cgi?id=124303 Summary: Drag/drop between folders sometimes creates 2 list entries (duplicate) Product: akregator Version: unspecified Platform: unspecified OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: NOR Component: general AssignedTo: akregator-devel lists sourceforge net ReportedBy: crazyned nerdshack com Version: unknown (using KDE 3.5.1, Gentoo) Compiler: gcc version 3.3.5-20050130 (Gentoo 3.3.5.20050130-r1, ssp-3.3.5.20050130-1, pie-8.7.7.1) OS: Linux (i686) release 2.6.14-gentoo-r5 Sometimes, if you drag a feed from one folder to another, it will create 2 or 3 list entries in the destination folder. Each has the same name, and each will appear to read feeds. If you drag either list entry back to the source, it will delete both entries in the source as if nothing out of place ever happened. If instead, you drag the topfolder (containing the duplicates) around, it will delete the extras. Drag it again, however, and it will crash (for me creating invalid backtrace). This happens a lot, actually. I have a small vidcap, if interested. |
From: Scott <kd...@an...> - 2006-05-06 02:33:25
|
------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. http://bugs.kde.org/show_bug.cgi?id=124303 kde-fan angrykeyboarder com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |kde-fan angrykeyboarder com ------- Additional Comments From kde-fan angrykeyboarder com 2006-05-06 04:33 ------- Thanks for saving me time in filing this bug. I have exactly the same problem. And I've experienced it on three different Linux distributions over the past several months. Kubuntu 6.04/6.06 Fedora Core 5 Debian Sid (Unstable). All had the most recent (or next to) versions of Akregator installed. It can get confusing because sometimes trying to delete the duplicates (or triplicates) results in deleting all of them. When you add it back you wind up with duplicates again. |
From: Paul P. <ln...@uz...> - 2006-05-17 09:47:11
|
------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. http://bugs.kde.org/show_bug.cgi?id=124303 ------- Additional Comments From lnx uzulabs net 2006-05-17 11:46 ------- Hi, i'm using akregator 1.2.2 with kde 3.5.2 in Debian testing ("etch") and report the same effects. This behaviour does only occur with some special feeds. I imported my feed manually from the Firefox-bookmark.html, created afterwards the folders and then sorted my feeds into them. Here some feeds that did duplicate: http://www.heise.de/newsticker/heise.rdf http://www.golem.de/rss.php?feed=RSS2.0 Here one that didn't: http://www.einfach-fuer-alle.de/blog/feed/efafeed.rss I didn't report crashing, but after I closed akregator (even in the tray) and restarted it, all duplicates were gone and everything was as it should be (I think). Right now (when I wanted to confirm the feeds behaviour) I saw that I could move a feed as I like (after the restart that cleaned everything up) without creating duplicates. ARGHH! Maybe this some caching problem. |
From: Frank O. <fra...@kd...> - 2006-08-09 21:21:06
|
------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. http://bugs.kde.org/show_bug.cgi?id=124303 ------- Additional Comments From frank.osterfeld kdemail net 2006-08-09 23:21 ------- > ARGHH! Maybe this some caching problem. It's a potential problem with the list widget... I can't reproduce it here with 3.5.4. Anyone who can? Does it matter if you drag the feed inside a folder, from one folder to a sibling folder, from top folder to subfolder, or vice versa? |
From: Paul P. <ln...@uz...> - 2006-08-10 07:23:51
|
------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. http://bugs.kde.org/show_bug.cgi?id=124303 ------- Additional Comments From lnx uzulabs net 2006-08-10 09:23 ------- I did now some quick tests with my Debian unstable (sid) using amarok 1.2.3 in kde 3.5.4. I couldn't reproduce the bug / misbehaviour now. In my case the effect appeared with dragging (moving) a feed from the "root" into a subfolder. Seems to be done. |
From: Frank O. <fra...@kd...> - 2006-08-20 18:29:55
|
------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. http://bugs.kde.org/show_bug.cgi?id=124303 frank.osterfeld kdemail net changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |WORKSFORME ------- Additional Comments From frank.osterfeld kdemail net 2006-08-20 20:29 ------- I close the bug for now then. Reopen if the problem reappears with >= 3.5.4 |
From: Anthony E. <an...@ch...> - 2006-08-27 19:52:00
|
------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. http://bugs.kde.org/show_bug.cgi?id=124303 ------- Additional Comments From anthony chovy com 2006-08-27 21:51 ------- A screen capture when dragging a feed into a newly created subfolder... http://chovy.dyndns.org/err/akregator.png Akregator 1.2.4 |
From: Frank O. <fra...@kd...> - 2006-08-27 20:49:45
|
------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. http://bugs.kde.org/show_bug.cgi?id=124303 frank.osterfeld kdemail net changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |UNCONFIRMED Resolution|WORKSFORME | ------- Additional Comments From frank.osterfeld kdemail net 2006-08-27 22:49 ------- Indeed, it's still there. I could reproduce it now like follows: * Create new subfolder "Foo" of folder "Bar". * Drag "Foo" to upper level, so it becomes a sibling of "Bar". (That's important - if I kept the folder in "Bar", the bug did not occur) * Drag some feed to Foo. Entries are duplicated. First it's two, number of dupes seems to increase when repeatingly dragging feeds. Deleting the dupes can lead to a crash. Something is going seriously wrong with item management in the feed list... Using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1". [Thread debugging using libthread_db enabled] [New Thread -1243576640 (LWP 5326)] [KCrash handler] #6 0x091bcb50 in ?? () #7 0xb5b66917 in Akregator::NodeListView::DeleteItemVisitor::visitTreeNode ( this=0x8194160, node=0x913bed8) at feedlistview.cpp:213 #8 0xb7f91cf9 in Akregator::Feed::accept (this=0x869ecc0, visitor=0x8194160) at feed.cpp:177 #9 0xb7f994c8 in Akregator::TreeNodeVisitor::visit (this=0x913bed8, node=0x9325b28) at treenodevisitor.cpp:32 #10 0xb5b66763 in Akregator::NodeListView::DeleteItemVisitor::deleteItem ( this=0x9325b28, node=0x913bed8, selectNeighbour=false) at feedlistview.cpp:233 #11 0xb5b63eed in Akregator::NodeListView::slotNodeRemoved (this=0x913bed8, node=0x869ecc0) at feedlistview.cpp:973 #12 0xb5b655d0 in Akregator::NodeListView::qt_invoke (this=0x8190228, _id=127, _o=0xbf8f5d90) at feedlistview.moc:286 #13 0xb65f2fe6 in QObject::activate_signal () from /usr/share/qt3/lib/libqt-mt.so.3 #14 0xb7f9ae4a in Akregator::Folder::signalChildRemoved (this=0x83bee28, t0=0x913bed8, t1=0x913bed8) at folder.moc:147 #15 0xb7f9c1a3 in Akregator::Folder::removeChild (this=0x83bee28, node=0x869ecc0) at folder.cpp:211 #16 0xb5b6310d in Akregator::NodeListView::movableDropEvent (this=0x8190228) at feedlistview.cpp:584 #17 0xb6fa1481 in KListView::contentsDropEvent (this=0x8190228, e=0xbf8f63cc) at klistview.cpp:924 #18 0xb67279ad in QScrollView::viewportDropEvent () from /usr/share/qt3/lib/libqt-mt.so.3 #19 0xb672a255 in QScrollView::eventFilter () from /usr/share/qt3/lib/libqt-mt.so.3 #20 0xb66ee6ed in QListView::eventFilter () from /usr/share/qt3/lib/libqt-mt.so.3 #21 0xb65f0002 in QObject::activate_filters () from /usr/share/qt3/lib/libqt-mt.so.3 #22 0xb65f0080 in QObject::event () from /usr/share/qt3/lib/libqt-mt.so.3 #23 0xb662d5aa in QWidget::event () from /usr/share/qt3/lib/libqt-mt.so.3 #24 0xb6588e56 in QApplication::internalNotify () from /usr/share/qt3/lib/libqt-mt.so.3 #25 0xb6589bd6 in QApplication::notify () from /usr/share/qt3/lib/libqt-mt.so.3 #26 0xb6c8c5e9 in KApplication::notify (this=0xbf8f7b14, receiver=0x8190890, event=0xbf8f63cc) at kapplication.cpp:550 #27 0xb787626a in QApplication::sendEvent (receiver=0x9325b28, event=0xbf8f63cc) at qapplication.h:520 #28 0xb652828e in qt_handle_xdnd_drop () from /usr/share/qt3/lib/libqt-mt.so.3 #29 0xb65284fc in QDragManager::drop () from /usr/share/qt3/lib/libqt-mt.so.3 #30 0xb652a1ed in QDragManager::eventFilter () from /usr/share/qt3/lib/libqt-mt.so.3 #31 0xb6588c46 in QApplication::internalNotify () from /usr/share/qt3/lib/libqt-mt.so.3 #32 0xb65893e0 in QApplication::notify () from /usr/share/qt3/lib/libqt-mt.so.3 #33 0xb6c8c5e9 in KApplication::notify (this=0xbf8f7b14, receiver=0x940e4f8, event=0xbf8f684c) at kapplication.cpp:550 #34 0xb651a1c5 in QApplication::sendSpontaneousEvent () from /usr/share/qt3/lib/libqt-mt.so.3 #35 0xb6515873 in QETWidget::translateMouseEvent () from /usr/share/qt3/lib/libqt-mt.so.3 #36 0xb6513d59 in QApplication::x11ProcessEvent () from /usr/share/qt3/lib/libqt-mt.so.3 #37 0xb652d4db in QEventLoop::processEvents () from /usr/share/qt3/lib/libqt-mt.so.3 #38 0xb65a1947 in QEventLoop::enterLoop () from /usr/share/qt3/lib/libqt-mt.so.3 #39 0xb6587991 in QApplication::enter_loop () from /usr/share/qt3/lib/libqt-mt.so.3 #40 0xb6529f8c in QDragManager::drag () from /usr/share/qt3/lib/libqt-mt.so.3 #41 0xb65991f4 in QDragObject::drag () from /usr/share/qt3/lib/libqt-mt.so.3 #42 0xb6599148 in QDragObject::drag () from /usr/share/qt3/lib/libqt-mt.so.3 #43 0xb6fa1ee8 in KListView::startDrag (this=0x8190228) at klistview.cpp:1158 #44 0xb6f9cb3c in KListView::contentsMouseMoveEvent (this=0x8190228, e=0xbf8f6fac) at klistview.cpp:842 #45 0xb6727669 in QScrollView::viewportMouseMoveEvent () from /usr/share/qt3/lib/libqt-mt.so.3 #46 0xb672a0d0 in QScrollView::eventFilter () from /usr/share/qt3/lib/libqt-mt.so.3 #47 0xb66ee6ed in QListView::eventFilter () from /usr/share/qt3/lib/libqt-mt.so.3 #48 0xb65f0002 in QObject::activate_filters () from /usr/share/qt3/lib/libqt-mt.so.3 #49 0xb65f0080 in QObject::event () from /usr/share/qt3/lib/libqt-mt.so.3 #50 0xb662d5aa in QWidget::event () from /usr/share/qt3/lib/libqt-mt.so.3 #51 0xb6588e56 in QApplication::internalNotify () from /usr/share/qt3/lib/libqt-mt.so.3 #52 0xb65893e0 in QApplication::notify () from /usr/share/qt3/lib/libqt-mt.so.3 #53 0xb6c8c5e9 in KApplication::notify (this=0xbf8f7b14, receiver=0x8190890, event=0xbf8f753c) at kapplication.cpp:550 #54 0xb651a1c5 in QApplication::sendSpontaneousEvent () from /usr/share/qt3/lib/libqt-mt.so.3 #55 0xb6515873 in QETWidget::translateMouseEvent () from /usr/share/qt3/lib/libqt-mt.so.3 #56 0xb6513d59 in QApplication::x11ProcessEvent () from /usr/share/qt3/lib/libqt-mt.so.3 #57 0xb652d4db in QEventLoop::processEvents () from /usr/share/qt3/lib/libqt-mt.so.3 #58 0xb65a1947 in QEventLoop::enterLoop () from /usr/share/qt3/lib/libqt-mt.so.3 #59 0xb65a186a in QEventLoop::exec () from /usr/share/qt3/lib/libqt-mt.so.3 #60 0xb6587965 in QApplication::exec () from /usr/share/qt3/lib/libqt-mt.so.3 #61 0x0805169e in main (argc=152288984, argv=0x913bed8) at main.cpp:110 |
From: Frank O. <fra...@kd...> - 2006-08-27 20:51:02
|
------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. http://bugs.kde.org/show_bug.cgi?id=124303 frank.osterfeld kdemail net changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW everconfirmed|0 |1 |
From: Frank O. <fra...@kd...> - 2006-08-27 20:59:23
|
------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. http://bugs.kde.org/show_bug.cgi?id=124303 ------- Additional Comments From frank.osterfeld kdemail net 2006-08-27 22:59 ------- Update: drag folder => dupe++. For every folder dragging, the number of duplicates increases by one. Moving the folder removes the dupes, but can lead to crashes. |
From: Frank O. <fra...@kd...> - 2006-08-27 22:49:34
|
------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. http://bugs.kde.org/show_bug.cgi?id=124303 frank.osterfeld kdemail net changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED ------- Additional Comments From frank.osterfeld kdemail net 2006-08-28 00:49 ------- SVN commit 577945 by osterfeld: don't create dupes when dragging items to a folder that was moved before. Avoid multiple item creation and signal connection. Also, remove some unfinished cruft that wasn't used anyway (DragAndDropVisitor). BUG: 124303 M +20 -60 feedlistview.cpp --- branches/KDE/3.5/kdepim/akregator/src/feedlistview.cpp #577944:577945 @ -72,47 +72,8 @ DisconnectNodeVisitor* disconnectNodeVisitor; CreateItemVisitor* createItemVisitor; DeleteItemVisitor* deleteItemVisitor; - DragAndDropVisitor* dragAndDropVisitor; }; -class NodeListView::DragAndDropVisitor : public TreeNodeVisitor -{ - -public: - DragAndDropVisitor(NodeListView* view) : m_view(view) {} - - /* - virtual bool visitTagNode(TagNode* node) - { - if (m_mode == ArticlesDropped) - { - Tag tag = node->tag(); - QValueList<ArticleDragItem>::ConstIterator end(m_items.end()); - for (QValueList<ArticleDragItem>::ConstIterator it = m_items.begin(); it != end; ++it) - { - Article a = Kernel::self()->feedList()->findArticle((*it).feedURL, (*it).guid); - if (!a.isNull()) - a.addTag(tag.id()); - } - } - return true; - } -*/ - void articlesDropped(TreeNode* node, const QValueList<ArticleDragItem>& items) - { - m_items = items; - m_mode = ArticlesDropped; - visit(node); - } - -private: - NodeListView* m_view; - QValueList<ArticleDragItem> m_items; - - enum Mode { ArticlesDropped }; - Mode m_mode; -}; - class NodeListView::ConnectNodeVisitor : public TreeNodeVisitor { public: @ -210,6 +171,7 @ m_view->setSelected(item, false); } + m_view->disconnectFromNode(node); delete item; return true; @ -245,6 +207,9 @ virtual bool visitTagNode(TagNode* node) { + if (m_view->findNodeItem(node)) + return true; + TagNodeItem* item = 0; TreeNode* prev = node->prevSibling(); FolderItem* parentItem = static_cast<FolderItem*>(m_view->findNodeItem(node->parent())); @ -276,6 +241,9 @ virtual bool visitTagFolder(TagFolder* node) { + if (m_view->findNodeItem(node)) + return true; + TagFolderItem* item = 0; TreeNode* prev = node->prevSibling(); FolderItem* parentItem = static_cast<FolderItem*>(m_view->findNodeItem(node->parent())); @ -311,6 +279,9 @ virtual bool visitFolder(Folder* node) { + if (m_view->findNodeItem(node)) + return true; + FolderItem* item = 0; TreeNode* prev = node->prevSibling(); FolderItem* parentItem = static_cast<FolderItem*>(m_view->findNodeItem(node->parent())); @ -345,6 +316,9 @ virtual bool visitFeed(Feed* node) { + if (m_view->findNodeItem(node)) + return true; + FeedItem* item = 0; TreeNode* prev = node->prevSibling(); FolderItem* parentItem = static_cast<FolderItem*>(m_view->findNodeItem(node->parent())); @ -386,7 +360,6 @ d->disconnectNodeVisitor = new DisconnectNodeVisitor(this); d->createItemVisitor = new CreateItemVisitor(this); d->deleteItemVisitor = new DeleteItemVisitor(this); - d->dragAndDropVisitor = new DragAndDropVisitor(this); setMinimumSize(150, 150); addColumn(i18n("Feeds")); @ -426,7 +399,6 @ delete d->disconnectNodeVisitor; delete d->createItemVisitor; delete d->deleteItemVisitor; - delete d->dragAndDropVisitor; delete d; d = 0; } @ -536,26 +508,14 @ { openFolder(); - FolderItem* parent = dynamic_cast<FolderItem*> (d->parent); - TreeNodeItem* afterMe = 0; - - if(d->afterme) - afterMe = dynamic_cast<TreeNodeItem*> (d->afterme); - - if (ArticleDrag::canDecode(e)) + if (KURLDrag::canDecode(e)) { - QPoint vp = contentsToViewport(e->pos()); - TreeNodeItem* tni = dynamic_cast<TreeNodeItem*>(itemAt(vp)); - if (tni != 0 && tni->node() != 0) - { - QValueList<ArticleDragItem> items; - ArticleDrag::decode(e, items); - d->dragAndDropVisitor->articlesDropped(tni->node(), items); - - } - } - else if (KURLDrag::canDecode(e)) - { + FolderItem* parent = dynamic_cast<FolderItem*> (d->parent); + TreeNodeItem* afterMe = 0; + + if(d->afterme) + afterMe = dynamic_cast<TreeNodeItem*> (d->afterme); + KURL::List urls; KURLDrag::decode( e, urls ); e->accept(); |
From: Frank O. <fra...@kd...> - 2006-08-27 23:04:28
|
------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. http://bugs.kde.org/show_bug.cgi?id=124303 ------- Additional Comments From frank.osterfeld kdemail net 2006-08-28 01:04 ------- SVN commit 577949 by osterfeld: forwardport 124303 (prevent multiple list items when dragging folders and feeds) CCBUG: 124303 M +82 -86 feedlistview.cpp M +3 -3 feedlistview.h --- trunk/KDE/kdepim/akregator/src/feedlistview.cpp #577948:577949 @ -73,47 +73,9 @ ConnectNodeVisitor* connectNodeVisitor; DisconnectNodeVisitor* disconnectNodeVisitor; CreateItemVisitor* createItemVisitor; - DragAndDropVisitor* dragAndDropVisitor; + DeleteItemVisitor* deleteItemVisitor; }; -class NodeListView::DragAndDropVisitor : public TreeNodeVisitor -{ - -public: - DragAndDropVisitor(NodeListView* view) : m_view(view) {} - - /* - virtual bool visitTagNode(TagNode* node) - { - if (m_mode == ArticlesDropped) - { - Tag tag = node->tag(); - QValueList<ArticleDragItem>::ConstIterator end(m_items.end()); - for (QValueList<ArticleDragItem>::ConstIterator it = m_items.begin(); it != end; ++it) - { - Article a = Kernel::self()->feedList()->findArticle((*it).feedURL, (*it).guid); - if (!a.isNull()) - a.addTag(tag.id()); - } - } - return true; - } -*/ - void articlesDropped(TreeNode* node, const QList<ArticleDragItem>& items) - { - m_items = items; - m_mode = ArticlesDropped; - visit(node); - } - -private: - NodeListView* m_view; - QList<ArticleDragItem> m_items; - - enum Mode { ArticlesDropped }; - Mode m_mode; -}; - class NodeListView::ConnectNodeVisitor : public TreeNodeVisitor { public: @ -188,6 +150,59 @ NodeListView* m_view; }; +class NodeListView::DeleteItemVisitor : public TreeNodeVisitor +{ + public: + + DeleteItemVisitor(NodeListView* view) : m_view(view) {} + + virtual bool visitTreeNode(TreeNode* node) + { + TreeNodeItem* item = m_view->d->itemDict.take(node); + + if (!item) + return true; + + if ( m_selectNeighbour && item->isSelected() ) + { + if (item->itemBelow()) + m_view->setSelected(item->itemBelow(), true); + else if (item->itemAbove()) + m_view->setSelected(item->itemAbove(), true); + else + m_view->setSelected(item, false); + } + + m_view->disconnectFromNode(node); + delete item; + return true; + + } + + virtual bool visitFolder(Folder* node) + { + // delete child items recursively before deleting parent + QList<TreeNode*> children = node->children(); + for (QList<TreeNode*>::ConstIterator it = children.begin(); it != children.end(); ++it ) + visit(*it); + + visitTreeNode(node); + + return true; + } + + void deleteItem(TreeNode* node, bool selectNeighbour) + { + m_selectNeighbour = selectNeighbour; + visit(node); + } + + private: + NodeListView* m_view; + bool m_selectNeighbour; +}; + + class NodeListView::CreateItemVisitor : public TreeNodeVisitor { public: @ -195,7 +210,9 @ virtual bool visitTagNode(TagNode* node) { - kDebug() << "create item for " << node->title() << endl; + if (m_view->findNodeItem(node)) + return true; + TagNodeItem* item = 0; TreeNode* prev = node->prevSibling(); FolderItem* parentItem = static_cast<FolderItem*>(m_view->findNodeItem(node->parent())); @ -227,6 +244,9 @ virtual bool visitTagFolder(TagFolder* node) { + if (m_view->findNodeItem(node)) + return true; + TagFolderItem* item = 0; TreeNode* prev = node->prevSibling(); FolderItem* parentItem = static_cast<FolderItem*>(m_view->findNodeItem(node->parent())); @ -262,6 +282,9 @ virtual bool visitFolder(Folder* node) { + if (m_view->findNodeItem(node)) + return true; + FolderItem* item = 0; TreeNode* prev = node->prevSibling(); FolderItem* parentItem = static_cast<FolderItem*>(m_view->findNodeItem(node->parent())); @ -296,6 +319,9 @ virtual bool visitFeed(Feed* node) { + if (m_view->findNodeItem(node)) + return true; + FeedItem* item = 0; TreeNode* prev = node->prevSibling(); FolderItem* parentItem = static_cast<FolderItem*>(m_view->findNodeItem(node->parent())); @ -337,8 +363,8 @ d->connectNodeVisitor = new ConnectNodeVisitor(this), d->disconnectNodeVisitor = new DisconnectNodeVisitor(this); d->createItemVisitor = new CreateItemVisitor(this); - d->dragAndDropVisitor = new DragAndDropVisitor(this); - + d->deleteItemVisitor = new DeleteItemVisitor(this); + setMinimumSize(150, 150); addColumn(i18n("Feeds")); setRootIsDecorated(false); @ -376,7 +402,7 @ delete d->connectNodeVisitor; delete d->disconnectNodeVisitor; delete d->createItemVisitor; - delete d->dragAndDropVisitor; + delete d->deleteItemVisitor; delete d; d = 0; } @ -502,27 +528,15 @ if (e->source() != viewport()) { openFolder(); - - FolderItem* parent = dynamic_cast<FolderItem*> (d->parent); - TreeNodeItem* afterMe = 0; - - if(d->afterme) - afterMe = dynamic_cast<TreeNodeItem*> (d->afterme); - - if (ArticleDrag::canDecode(e)) + + if (K3URLDrag::canDecode(e)) { - QPoint vp = contentsToViewport(e->pos()); - TreeNodeItem* tni = dynamic_cast<TreeNodeItem*>(itemAt(vp)); - if (tni != 0 && tni->node() != 0) - { - QList<ArticleDragItem> items; - ArticleDrag::decode(e, items); - d->dragAndDropVisitor->articlesDropped(tni->node(), items); + FolderItem* parent = dynamic_cast<FolderItem*> (d->parent); + TreeNodeItem* afterMe = 0; - } - } - else if (K3URLDrag::canDecode(e)) - { + if(d->afterme) + afterMe = dynamic_cast<TreeNodeItem*> (d->afterme); + KUrl::List urls; K3URLDrag::decode( e, urls ); e->accept(); @ -925,17 +939,14 @ void NodeListView::slotNodeAdded(TreeNode* node) { - d->createItemVisitor->visit(node); - kDebug() << "NodeListView::slotNodeAdded: " << node->title() << endl; + if (node) + d->createItemVisitor->visit(node); } void NodeListView::slotNodeRemoved(Folder* /*parent*/, TreeNode* node) { - if (!node) - return; - kDebug() << "NodeListView::slotNodeRemoved: " << node->title() << endl; - disconnectFromNode(node); - delete d->itemDict.take(node); + if (node) + d->deleteItemVisitor->deleteItem(node, false); } void NodeListView::connectToNode(TreeNode* node) @ -978,23 +989,8 @ void NodeListView::slotNodeDestroyed(TreeNode* node) { - TreeNodeItem* item = findNodeItem(node); - - d->itemDict.remove(node); - - if (!item) - return; - - if ( item->isSelected() ) - { - if (item->itemBelow()) - setSelected(item->itemBelow(), true); - else if (item->itemAbove()) - setSelected(item->itemAbove(), true); - else - setSelected(item, false); - } - delete item; + if (node) + d->deleteItemVisitor->deleteItem(node, true); } void NodeListView::slotRootNodeChanged(TreeNode* rootNode) --- trunk/KDE/kdepim/akregator/src/feedlistview.h #577948:577949 @ -182,9 +182,9 @ friend class CreateItemVisitor; class CreateItemVisitor; - friend class DragAndDropVisitor; - class DragAndDropVisitor; - + friend class DeleteItemVisitor; + class DeleteItemVisitor; + class NodeListViewPrivate; NodeListViewPrivate* d; }; |
From: Scott <kd...@an...> - 2006-10-06 19:12:32
|
------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. http://bugs.kde.org/show_bug.cgi?id=124303 ------- Additional Comments From kde-fan angrykeyboarder com 2006-10-06 21:12 ------- Created an attachment (id=18044) --> (http://bugs.kde.org/attachment.cgi?id=18044&action=view) Screenshot showing dupes. Has the patch made it into KDE 3.5.4/Akregator 1.2.4? Because as far as I'm concerned, the bug still exists. See attached screenshot. |
From: Scott <kd...@an...> - 2006-10-06 19:16:11
|
------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. http://bugs.kde.org/show_bug.cgi?id=124303 ------- Additional Comments From kde-fan angrykeyboarder com 2006-10-06 21:16 ------- In addition, if you delete one of the duplicate feeds it takes the other feed with it, thereby deleting both. This is been the the case since this bug first appeared. |
From: Frank O. <fra...@kd...> - 2006-10-09 18:52:51
|
------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. http://bugs.kde.org/show_bug.cgi?id=124303 ------- Additional Comments From frank.osterfeld kdemail net 2006-10-09 20:52 ------- > Has the patch made it into KDE 3.5.4/Akregator 1.2.4? No, you will see it fixed in 3.5.5. |
From: <ow...@bu...> - 2006-12-19 07:05:54
|
------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. http://bugs.kde.org/show_bug.cgi?id=124303 frank.osterfeld kdemail net changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |sibskull mail ru ------- Additional Comments From frank.osterfeld kdemail net 2006-12-19 08:05 ------- *** Bug 138996 has been marked as a duplicate of this bug. *** |