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