Changeset View
Changeset View
Standalone View
Standalone View
archivers/ark/files/patch-git_cd8ad27
commit cd8ad2761d41d1ec0a18cff7f4d166b53c899fc2 | |||||
Author: Raphael Kubo da Costa <rakuco@FreeBSD.org> | |||||
Date: Mon Nov 24 01:37:06 2014 +0200 | |||||
Stop crashing on exit when being used solely as a KPart. | |||||
This change fixes a crash introduced by commit 3b981ca ("Remove Part | |||||
from KXMLGUIFactory on exit"). | |||||
Part::~Part() is the wrong place to call KXMLGUIFactory::removeClient(), | |||||
as it assumes addClient() had been called in the first place. | |||||
This is only true if Ark is called as a standalone program, since that | |||||
is done in MainWindow::loadPart()'s call to KXMLGuiWindow::createGUI(). | |||||
Conversely, if the Ark KPart is being used as an embedded viewer in, | |||||
say, Konqueror or to preview an archive inside an archive (ie. Ark | |||||
inside Ark) that does not hold true and we try to access a | |||||
KXMLGUIFactory that does not exist. | |||||
Instead, call KXMLGuiWindow::removeClient() in MainWindow's destructor, | |||||
since in this case we are certain that addClient() was been called | |||||
before. | |||||
CCBUG: 341187 | |||||
(cherry picked from commit 9c30f30b38c36a31e6fcb3aa047a0247ac5a22fb) | |||||
This was committed for completeness, as there will be no additional | |||||
releases from the KDE/4.14 branch. | |||||
Conflicts: | |||||
part/part.cpp | |||||
--- app/mainwindow.cpp | |||||
+++ app/mainwindow.cpp | |||||
@@ -38,6 +38,7 @@ | |||||
#include <KDebug> | |||||
#include <KEditToolBar> | |||||
#include <KShortcutsDialog> | |||||
+#include <KXMLGUIFactory> | |||||
#include <QDragEnterEvent> | |||||
#include <QDragMoveEvent> | |||||
@@ -69,6 +70,8 @@ MainWindow::~MainWindow() | |||||
if (m_recentFilesAction) { | |||||
m_recentFilesAction->saveEntries(KGlobal::config()->group("Recent Files")); | |||||
} | |||||
+ | |||||
+ guiFactory()->removeClient(m_part); | |||||
delete m_part; | |||||
m_part = 0; | |||||
} | |||||
--- part/part.cpp | |||||
+++ part/part.cpp | |||||
@@ -53,7 +53,6 @@ | |||||
#include <KStandardGuiItem> | |||||
#include <KTempDir> | |||||
#include <KToggleAction> | |||||
-#include <KXMLGUIFactory> | |||||
#include <QAction> | |||||
#include <QCursor> | |||||
@@ -138,8 +137,6 @@ Part::Part(QWidget *parentWidget, QObject *parent, const QVariantList& args) | |||||
Part::~Part() | |||||
{ | |||||
- factory()->removeClient(this); | |||||
- | |||||
saveSplitterSizes(); | |||||
m_extractFilesAction->menu()->deleteLater(); |