From 2ce559458e5803dca8d98664d954b0108a72efbb Mon Sep 17 00:00:00 2001 From: Michele Calgaro Date: Sat, 29 Nov 2025 18:51:54 +0900 Subject: kpdf: fix crash when requested to shutdown from the session manager or dcop. This resolves issue #139 Signed-off-by: Michele Calgaro --- kpdf/shell/shell.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'kpdf/shell/shell.cpp') diff --git a/kpdf/shell/shell.cpp b/kpdf/shell/shell.cpp index c0df6a4f..ed9403df 100644 --- a/kpdf/shell/shell.cpp +++ b/kpdf/shell/shell.cpp @@ -50,6 +50,7 @@ Shell::Shell() : DCOPObject("KPDFShellDCOPIface"), KParts::MainWindow(0, "KPDF::Shell"), m_menuBarWasShown(true), m_toolBarWasShown(true), + m_shuttingDown(false), m_showToolBarAction(nullptr), m_tabs(nullptr), m_tabsContextMenu(nullptr), @@ -63,6 +64,7 @@ Shell::Shell(const KURL &url) : DCOPObject("KPDFShellDCOPIface"), KParts::MainWindow(0, "KPDF::Shell"), m_menuBarWasShown(true), m_toolBarWasShown(true), + m_shuttingDown(false), m_showToolBarAction(nullptr), m_tabs(nullptr), m_tabsContextMenu(nullptr), @@ -101,6 +103,8 @@ void Shell::init() this, TQ_SLOT(createGUI(KParts::Part*))); connect(m_manager, TQ_SIGNAL(activePartChanged(KParts::Part*)), this, TQ_SLOT(slotChangeTab(KParts::Part*))); + connect(tdeApp, TQ_SIGNAL(shutDown()), + this, TQ_SLOT(slotShutDown())); setCentralWidget(m_tabs); setXMLFile("shell.rc"); @@ -433,8 +437,18 @@ void Shell::removeTab() m_workingTab = -1; } +void Shell::slotShutDown() +{ + m_shuttingDown = true; +} + void Shell::slotChangeTab(KParts::Part *part) { + if (m_shuttingDown) + { + return; + } + if (!part) { part = createTab(); -- cgit v1.2.3