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

List:       kde-commits
Subject:    KDE/kdebase/apps
From:       David Faure <faure () kde ! org>
Date:       2009-01-19 14:33:10
Message-ID: 1232375590.904772.20233.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 913576 by dfaure:

Fix lack of error handling in RMB/Move To... (e.g. when src is root-owned) because \
the parent for KonqOperations was the popupmenu, which gets deleted before the job \
finishes.


 M  +2 -1      dolphin/src/dolphincontextmenu.cpp  
 M  +11 -5     lib/konq/konq_copytomenu.cpp  
 M  +12 -0     lib/konq/konq_copytomenu.h  
 M  +3 -4      lib/konq/konq_copytomenu_p.h  
 M  +3 -2      lib/konq/konq_popupmenu.cpp  


--- trunk/KDE/kdebase/apps/dolphin/src/dolphincontextmenu.cpp #913575:913576
@@ -60,7 +60,8 @@
     m_capabilities(0),
     m_fileInfo(fileInfo),
     m_baseUrl(baseUrl),
-    m_context(NoContext)
+    m_context(NoContext),
+    m_copyToMenu(parent)
 {
     // The context menu either accesses the URLs of the selected items
     // or the items itself. To increase the performance both lists are cached.
--- trunk/KDE/kdebase/apps/lib/konq/konq_copytomenu.cpp #913575:913576
@@ -31,17 +31,21 @@
 #include <kstringhandler.h>
 #include <QDir>
 
-KonqCopyToMenuPrivate::KonqCopyToMenuPrivate()
-    : m_urls(), m_readOnly(false)
+KonqCopyToMenuPrivate::KonqCopyToMenuPrivate(QWidget* parentWidget)
+    : m_urls(), m_readOnly(false), m_parentWidget(parentWidget)
 {
 }
 
 ////
 
 KonqCopyToMenu::KonqCopyToMenu()
-    : d(new KonqCopyToMenuPrivate)
+    : d(new KonqCopyToMenuPrivate())
 {
+}
 
+KonqCopyToMenu::KonqCopyToMenu(QWidget* parentWidget)
+    : d(new KonqCopyToMenuPrivate(parentWidget))
+{
 }
 
 KonqCopyToMenu::~KonqCopyToMenu()
@@ -133,7 +137,8 @@
 
 void KonqCopyToMainMenu::slotBrowse()
 {
-    const KUrl dest = \
KFileDialog::getExistingDirectoryUrl(KUrl("kfiledialog:///copyto"), this); +    const \
KUrl dest = KFileDialog::getExistingDirectoryUrl(KUrl("kfiledialog:///copyto"), +     \
d->m_parentWidget ? d->m_parentWidget : this);  if (!dest.isEmpty()) {
         copyOrMoveTo(dest);
     }
@@ -160,7 +165,8 @@
     }
 
     // And now let's do the copy or move -- with undo/redo support.
-    KonqOperations::copy(this, m_menuType == Copy ? KonqOperations::COPY : \
KonqOperations::MOVE, +    KonqOperations::copy(d->m_parentWidget ? d->m_parentWidget \
: this, +                         m_menuType == Copy ? KonqOperations::COPY : \
KonqOperations::MOVE,  d->m_urls, dest);
 }
 
--- trunk/KDE/kdebase/apps/lib/konq/konq_copytomenu.h #913575:913576
@@ -38,10 +38,22 @@
      * Creates a KonqCopyToMenu instance.
      * Note that this instance must stay alive for at least as long as the \
                popupmenu;
      * it has the slots for the actions created by addActionsTo.
+     * @deprecated
+     * KDE5: remove, so that passing a parent widget is mandatory
      */
     KonqCopyToMenu();
 
     /**
+     * Creates a KonqCopyToMenu instance, with a parent widget for the file dialog
+     * and message boxes.
+     * Note that this instance (and the widget) must stay alive for at least as
+     * long as the popupmenu; it has the slots for the actions created by \
addActionsTo. +     * @param widget note that this is not the parent of \
KonqCopyToMenu itself. +     * @since 4.2
+     */
+    KonqCopyToMenu(QWidget* parentWidget);
+
+    /**
      * Destructor
      */
     ~KonqCopyToMenu();
--- trunk/KDE/kdebase/apps/lib/konq/konq_copytomenu_p.h #913575:913576
@@ -25,15 +25,14 @@
 #include <QObject>
 #include <kurl.h>
 
-class KonqCopyToMenuPrivate : public QObject
+class KonqCopyToMenuPrivate
 {
-    Q_OBJECT
 public:
-    KonqCopyToMenuPrivate();
+    KonqCopyToMenuPrivate(QWidget* parentWidget = 0);
 
-public:
     KUrl::List m_urls;
     bool m_readOnly;
+    QWidget* m_parentWidget;
 };
 
 enum MenuType { Copy, Move };
--- trunk/KDE/kdebase/apps/lib/konq/konq_popupmenu.cpp #913575:913576
@@ -73,9 +73,10 @@
 class KonqPopupMenuPrivate
 {
 public:
-    KonqPopupMenuPrivate(KonqPopupMenu* qq, KActionCollection & actions)
+    KonqPopupMenuPrivate(KonqPopupMenu* qq, KActionCollection & actions, QWidget* \
parentWidget)  : q(qq),
           m_itemFlags(KParts::BrowserExtension::DefaultPopupItems),
+          m_copyToMenu(parentWidget),
           m_actions(actions),
           m_ownActions(static_cast<QWidget *>(0))
     {
@@ -120,7 +121,7 @@
                              KBookmarkManager *mgr,
                              const KParts::BrowserExtension::ActionGroupMap& \
actionGroups)  : QMenu(parentWidget),
-    d(new KonqPopupMenuPrivate(this, actions))
+    d(new KonqPopupMenuPrivate(this, actions, parentWidget))
 {
     d->m_actionGroups = actionGroups;
     d->m_pMenuNew = newMenu;


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

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