[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdebase/kmenuedit
From:       Waldo Bastian <bastian () kde ! org>
Date:       2005-03-30 15:28:58
Message-ID: 20050330152858.3BEF3632 () office ! kde ! org
[Download RAW message or body]

CVS commit by waba: 

Make it possible to drag applications _from_ the menu editor


  M +1 -0      menufile.cpp   1.11
  M +19 -4     treeview.cpp   1.97
  M +1 -0      treeview.h   1.37


--- kdebase/kmenuedit/menufile.cpp  #1.10:1.11
@@ -395,4 +395,5 @@ void MenuFile::moveMenu(const QString &o
    elem.appendChild(m_doc.createElement(MF_NOTDELETED));
 
+// TODO: GET RID OF COMMON PART, IT BREAKS STUFF
    // Find common part
    QStringList oldMenuParts = QStringList::split('/', oldMenu);

--- kdebase/kmenuedit/treeview.cpp  #1.96:1.97
@@ -47,4 +47,6 @@
 #include <kservice.h>
 #include <kservicegroup.h>
+#include <kmultipledrag.h>
+#include <kurldrag.h>
 
 #include "treeview.h"
@@ -665,5 +667,5 @@ QStringList TreeView::dirList(const QStr
 bool TreeView::acceptDrag(QDropEvent* e) const
 {
-    return QString(e->format()).contains("application/x-kmenuedit-internal") &&
+    return e->provides("application/x-kmenuedit-internal") &&
            (e->source() == const_cast<TreeView *>(this));
 }
@@ -885,7 +887,10 @@ void TreeView::startDrag()
 QDragObject *TreeView::dragObject()
 {
+    m_dragPath = QString::null;
     TreeItem *item = (TreeItem*)selectedItem();
     if(item == 0) return 0;
 
+    KMultipleDrag *drag = new KMultipleDrag( this );
+
     if (item->isDirectory())
     {
@@ -899,4 +904,14 @@ QDragObject *TreeView::dragObject()
        m_dragInfo = 0;
        m_dragItem = item;
+       QString menuId = item->menuId();
+       m_dragPath = item->entryInfo()->service->desktopEntryPath();
+       if (!m_dragPath.isEmpty())
+          m_dragPath = locate("apps", m_dragPath);
+       if (!m_dragPath.isEmpty())
+       {
+          KURL url;
+          url.setPath(m_dragPath);
+          drag->addDragObject( new KURLDrag(url, 0));
+       }
     }
     else
@@ -907,8 +922,8 @@ QDragObject *TreeView::dragObject()
     }
 
-    QStoredDrag *d = new QStoredDrag("application/x-kmenuedit-internal", this);
+    drag->addDragObject( new QStoredDrag("application/x-kmenuedit-internal", 0));
     if ( item->pixmap(0) )
-        d->setPixmap(*item->pixmap(0));
-    return d;
+        drag->setPixmap(*item->pixmap(0));
+    return drag;
 }
 

--- kdebase/kmenuedit/treeview.h  #1.36:1.37
@@ -163,4 +163,5 @@ private:
     MenuFolderInfo    *m_dragInfo;
     TreeItem          *m_dragItem;
+    QString            m_dragPath;
     bool               m_showHidden;
     bool               m_controlCenter;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic