kdelibs/kdelibs-4.1.0-kde#167826.patch

52 lines
1.9 KiB
Diff
Raw Normal View History

--- branches/KDE/4.1/kdelibs/kdecore/kernel/kglobal.cpp 2008/08/01 00:12:03 840376
+++ branches/KDE/4.1/kdelibs/kdecore/kernel/kglobal.cpp 2008/08/01 00:14:54 840377
@@ -251,11 +251,14 @@
/**
* This counter indicates when to quit the application.
- * It starts at 1, is decremented in KMainWindow when the last window is closed, but
- * is incremented by operations that should outlive the last window closed
- * (e.g. a file copy for a file manager, or 'compacting folders on exit' for a mail client).
+ * It starts at 0, is incremented by KMainWindow, systray icons, running jobs, etc.
+ * and decremented again when those things are destroyed.
+ * This mechanism allows dialogs and jobs to outlive the last window closed
+ * e.g. a file copy for a file manager, or 'compacting folders on exit' for a mail client,
+ * the job progress widget with "keep open" checked, etc.
*/
-static int s_refCount = 1;
+static int s_refCount = 0;
+static bool s_allowQuit = false;
void KGlobal::ref()
{
@@ -267,9 +270,14 @@
{
--s_refCount;
//kDebug() << "KGlobal::deref() : refCount = " << s_refCount;
- if (s_refCount <= 0) {
+ if (s_refCount <= 0 && s_allowQuit) {
QCoreApplication::instance()->quit();
}
}
+void KGlobal::setAllowQuit(bool allowQuit)
+{
+ s_allowQuit = allowQuit;
+}
+
#undef PRIVATE_DATA
--- branches/KDE/4.1/kdelibs/kdeui/widgets/kmainwindow.cpp 2008/08/01 00:12:03 840376
+++ branches/KDE/4.1/kdelibs/kdeui/widgets/kmainwindow.cpp 2008/08/01 00:14:54 840377
@@ -226,6 +226,11 @@
{
KGlobal::ref();
+ // We set allow quit to true, so when the refcounting reaches 0 the application instance will
+ // be exited. This has a similar purpose than setQuitOnLastWindowClosed (from
+ // QApplication), but it honors (de)refing from KGlobal.
+ KGlobal::setAllowQuit(true);
+
q = _q;
q->setAnimated(KGlobalSettings::graphicEffectsLevel() & KGlobalSettings::SimpleAnimationEffects);