diff options
Diffstat (limited to 'archivers/ark-kde4/files/patch-git_cd8ad27')
-rw-r--r-- | archivers/ark-kde4/files/patch-git_cd8ad27 | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/archivers/ark-kde4/files/patch-git_cd8ad27 b/archivers/ark-kde4/files/patch-git_cd8ad27 new file mode 100644 index 000000000000..058d208c0c68 --- /dev/null +++ b/archivers/ark-kde4/files/patch-git_cd8ad27 @@ -0,0 +1,71 @@ +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.orig 2014-10-25 12:53:24 UTC ++++ 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.orig 2014-10-25 12:53:24 UTC ++++ 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, QObjec + + Part::~Part() + { +- factory()->removeClient(this); +- + saveSplitterSizes(); + + m_extractFilesAction->menu()->deleteLater(); |