Because this bug affected me, I backported the patch from Digikam 6.0 to the buster digikam version

Applies cleanly & fixes the problem.

--- a/core/app/main/digikamapp.cpp
+++ b/core/app/main/digikamapp.cpp
@@ -497,7 +497,6 @@
         MetadataHubMngr::instance()->requestShutDown();
 
     DXmlGuiWindow::closeEvent(e);
-    e->accept();
 }
 
 void DigikamApp::autoDetect()
--- a/core/libs/widgets/mainview/dxmlguiwindow.cpp
+++ b/core/libs/widgets/mainview/dxmlguiwindow.cpp
@@ -209,10 +209,18 @@
 
 void DXmlGuiWindow::closeEvent(QCloseEvent* e)
 {
-    if(fullScreenIsActive())
+    if (fullScreenIsActive())
         slotToggleFullScreen(false);
 
+    if (!testAttribute(Qt::WA_DeleteOnClose))
+    {
+        setVisible(false);
+        e->ignore();
+        return;
+    }
+
     KXmlGuiWindow::closeEvent(e);
+    e->accept();
 }
 
 void DXmlGuiWindow::setFullScreenOptions(int options)
--- a/core/utilities/imageeditor/main/imagewindow.cpp
+++ b/core/utilities/imageeditor/main/imagewindow.cpp
@@ -254,14 +254,13 @@
 
     KSharedConfig::Ptr config = KSharedConfig::openConfig();
     KConfigGroup group        = config->group(configGroupName());
-    saveMainWindowSettings(group);
-    saveSettings();
 
     d->rightSideBar->setConfigGroup(KConfigGroup(&group, "Right Sidebar"));
     d->rightSideBar->saveState();
 
+    saveSettings();
+
     DXmlGuiWindow::closeEvent(e);
-    e->accept();
 }
 
 void ImageWindow::showEvent(QShowEvent*)
--- a/core/utilities/importui/main/importui.cpp
+++ b/core/utilities/importui/main/importui.cpp
@@ -964,11 +964,9 @@
 
 void ImportUI::closeEvent(QCloseEvent* e)
 {
-    DXmlGuiWindow::closeEvent(e);
-
     if (dialogClosed())
     {
-        e->accept();
+        DXmlGuiWindow::closeEvent(e);
     }
     else
     {
--- a/core/utilities/lighttable/lighttablewindow.cpp
+++ b/core/utilities/lighttable/lighttablewindow.cpp
@@ -249,7 +249,6 @@
     writeSettings();
 
     DXmlGuiWindow::closeEvent(e);
-    e->accept();
 }
 
 void LightTableWindow::showEvent(QShowEvent*)
--- a/core/utilities/queuemanager/main/queuemgrwindow.cpp
+++ b/core/utilities/queuemanager/main/queuemgrwindow.cpp
@@ -164,8 +164,8 @@
     }
 
     writeSettings();
+
     DXmlGuiWindow::closeEvent(e);
-    e->accept();
 }
 
 void QueueMgrWindow::setupUserArea()

Reply via email to