]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Fix bug with the UndoUiInterface usage: if more than one mainwindow was used, the...
authorDavid Faure <faure@kde.org>
Sun, 20 Apr 2008 22:07:44 +0000 (22:07 +0000)
committerDavid Faure <faure@kde.org>
Sun, 20 Apr 2008 22:07:44 +0000 (22:07 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=799250

src/dolphinmainwindow.cpp
src/dolphinmainwindow.h

index 4b648e98806100deb1f4c2a9b743005d8850ae6f..f551232a79cac53da45c2d15b8c248f30202a6e0 100644 (file)
@@ -102,10 +102,8 @@ DolphinMainWindow::DolphinMainWindow(int id) :
     new MainWindowAdaptor(this);
     QDBusConnection::sessionBus().registerObject(QString("/dolphin/MainWindow%1").arg(m_id), this);
 
-    KonqFileUndoManager::incRef();
-
     KonqFileUndoManager* undoManager = KonqFileUndoManager::self();
-    undoManager->setUiInterface(new UndoUiInterface(this));
+    undoManager->setUiInterface(new UndoUiInterface());
 
     connect(undoManager, SIGNAL(undoAvailable(bool)),
             this, SLOT(slotUndoAvailable(bool)));
@@ -117,7 +115,6 @@ DolphinMainWindow::DolphinMainWindow(int id) :
 
 DolphinMainWindow::~DolphinMainWindow()
 {
-    KonqFileUndoManager::decRef();
     DolphinApplication::app()->removeMainWindow(this);
 }
 
@@ -437,6 +434,7 @@ void DolphinMainWindow::slotUndoTextChanged(const QString& text)
 void DolphinMainWindow::undo()
 {
     clearStatusBar();
+    KonqFileUndoManager::self()->uiInterface()->setParentWidget(this);
     KonqFileUndoManager::self()->undo();
 }
 
@@ -1188,11 +1186,9 @@ QString DolphinMainWindow::tabName(const KUrl& url) const
     return url.equals(KUrl("file:///")) ? "/" : url.fileName();
 }
 
-DolphinMainWindow::UndoUiInterface::UndoUiInterface(DolphinMainWindow* mainWin) :
-    KonqFileUndoManager::UiInterface(mainWin),
-    m_mainWin(mainWin)
+DolphinMainWindow::UndoUiInterface::UndoUiInterface() :
+    KonqFileUndoManager::UiInterface()
 {
-    Q_ASSERT(m_mainWin != 0);
 }
 
 DolphinMainWindow::UndoUiInterface::~UndoUiInterface()
@@ -1201,8 +1197,13 @@ DolphinMainWindow::UndoUiInterface::~UndoUiInterface()
 
 void DolphinMainWindow::UndoUiInterface::jobError(KIO::Job* job)
 {
-    DolphinStatusBar* statusBar = m_mainWin->activeViewContainer()->statusBar();
-    statusBar->setMessage(job->errorString(), DolphinStatusBar::Error);
+    DolphinMainWindow* mainWin= qobject_cast<DolphinMainWindow *>(parentWidget());
+    if (mainWin) {
+        DolphinStatusBar* statusBar = mainWin->activeViewContainer()->statusBar();
+        statusBar->setMessage(job->errorString(), DolphinStatusBar::Error);
+    } else {
+        KonqFileUndoManager::UiInterface::jobError(job);
+    }
 }
 
 #include "dolphinmainwindow.moc"
index 2f0fb9589a21e287d52fb33a2cced79f917de7b2..675b08bedf89ed178b2edc4b5880896e523f4a66 100644 (file)
@@ -391,12 +391,9 @@ private:
     class UndoUiInterface : public KonqFileUndoManager::UiInterface
     {
     public:
-        UndoUiInterface(DolphinMainWindow* mainWin);
+        UndoUiInterface();
         virtual ~UndoUiInterface();
         virtual void jobError(KIO::Job* job);
-
-    private:
-        DolphinMainWindow* m_mainWin;
     };
 
     KNewMenu* m_newMenu;