You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
163 lines
5.6 KiB
163 lines
5.6 KiB
commit d2f8fca98e6d276f442f90dee48164be15d8e287
|
|
Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
|
|
Date: 1337223371 -0500
|
|
|
|
Fix fancy logout not allowing interaction with save dialogs
|
|
This closes Bug 922
|
|
Fix desktop wallpaper export failing when triggered by krootbacking or ksmserver and konsole or kdesktop_lock not previously loaded
|
|
|
|
diff --git a/krootbacking/krootbacking.cpp b/krootbacking/krootbacking.cpp
|
|
index 8e41b50..fe8574a 100644
|
|
--- a/krootbacking/krootbacking.cpp
|
|
+++ b/krootbacking/krootbacking.cpp
|
|
@@ -54,6 +54,8 @@ public:
|
|
KRootBacking::KRootBacking()
|
|
: TQObject(KApplication::desktop(), "KRootBacking" ), m_Desk(0), m_timeout(0)
|
|
{
|
|
+ enableExports();
|
|
+
|
|
init();
|
|
}
|
|
|
|
diff --git a/ksmserver/shutdown.cpp b/ksmserver/shutdown.cpp
|
|
index a4ca020..09cb2d7 100644
|
|
--- a/ksmserver/shutdown.cpp
|
|
+++ b/ksmserver/shutdown.cpp
|
|
@@ -189,24 +189,6 @@ void KSMServer::shutdownInternal( KApplication::ShutdownConfirm confirm,
|
|
// shall we save the session on logout?
|
|
saveSession = ( config->readEntry( "loginMode", "restorePreviousLogout" ) == "restorePreviousLogout" );
|
|
|
|
- if (showFancyLogout) {
|
|
- KSMShutdownIPFeedback::showit(); // hide the UGLY logout process from the user
|
|
- shutdownNotifierIPDlg = KSMShutdownIPDlg::showShutdownIP();
|
|
- while (!KSMShutdownIPFeedback::ispainted()) {
|
|
- tqApp->processEvents();
|
|
- }
|
|
- }
|
|
-
|
|
- // synchronize any folders that were requested for shutdown sync
|
|
- if (shutdownNotifierIPDlg) {
|
|
- static_cast<KSMShutdownIPDlg*>(shutdownNotifierIPDlg)->setStatusMessage(i18n("Synchronizing remote folders").append("..."));
|
|
- }
|
|
- KRsync krs(this, "");
|
|
- krs.executeLogoutAutoSync();
|
|
- if (shutdownNotifierIPDlg) {
|
|
- static_cast<KSMShutdownIPDlg*>(shutdownNotifierIPDlg)->setStatusMessage(i18n("Saving your settings..."));
|
|
- }
|
|
-
|
|
if ( saveSession )
|
|
sessionGroup = TQString("Session: ") + SESSION_PREVIOUS_LOGOUT;
|
|
|
|
@@ -252,9 +234,9 @@ void KSMServer::shutdownInternal( KApplication::ShutdownConfirm confirm,
|
|
completeShutdownOrCheckpoint();
|
|
}
|
|
else {
|
|
- if (showFancyLogout) {
|
|
- KSMShutdownIPFeedback::stop();
|
|
- }
|
|
+ if (showFancyLogout) {
|
|
+ KSMShutdownIPFeedback::stop();
|
|
+ }
|
|
}
|
|
dialogActive = false;
|
|
}
|
|
@@ -502,6 +484,25 @@ void KSMServer::completeShutdownOrCheckpoint()
|
|
if ( waitForPhase2 )
|
|
return;
|
|
|
|
+ bool showFancyLogout = KConfigGroup(KGlobal::config(), "Logout").readBoolEntry("showFancyLogout", true);
|
|
+ if (showFancyLogout) {
|
|
+ KSMShutdownIPFeedback::showit(); // hide the UGLY logout process from the user
|
|
+ shutdownNotifierIPDlg = KSMShutdownIPDlg::showShutdownIP();
|
|
+ while (!KSMShutdownIPFeedback::ispainted()) {
|
|
+ tqApp->processEvents();
|
|
+ }
|
|
+ }
|
|
+
|
|
+ // synchronize any folders that were requested for shutdown sync
|
|
+ if (shutdownNotifierIPDlg) {
|
|
+ static_cast<KSMShutdownIPDlg*>(shutdownNotifierIPDlg)->setStatusMessage(i18n("Synchronizing remote folders").append("..."));
|
|
+ }
|
|
+ KRsync krs(this, "");
|
|
+ krs.executeLogoutAutoSync();
|
|
+ if (shutdownNotifierIPDlg) {
|
|
+ static_cast<KSMShutdownIPDlg*>(shutdownNotifierIPDlg)->setStatusMessage(i18n("Saving your settings..."));
|
|
+ }
|
|
+
|
|
if ( saveSession )
|
|
storeSession();
|
|
else
|
|
diff --git a/ksmserver/shutdowndlg.cpp b/ksmserver/shutdowndlg.cpp
|
|
index 163352a..35cae65 100644
|
|
--- a/ksmserver/shutdowndlg.cpp
|
|
+++ b/ksmserver/shutdowndlg.cpp
|
|
@@ -528,6 +528,11 @@ KSMShutdownIPFeedback::KSMShutdownIPFeedback()
|
|
: TQWidget( 0L, "systemmodaldialogclass", Qt::WStyle_Customize | Qt::WStyle_NoBorder | Qt::WStyle_StaysOnTop ), m_timeout(0), m_isPainted(false), m_sharedRootPixmap(NULL), mPixmapTimeout(0)
|
|
|
|
{
|
|
+ setShown(false);
|
|
+ hide();
|
|
+
|
|
+ enableExports();
|
|
+
|
|
m_sharedRootPixmap = new KRootPixmap(this);
|
|
m_sharedRootPixmap->setCustomPainting(true);
|
|
connect(m_sharedRootPixmap, TQT_SIGNAL(backgroundUpdated(const TQPixmap &)), this, TQT_SLOT(slotSetBackgroundPixmap(const TQPixmap &)));
|
|
@@ -554,15 +559,36 @@ KSMShutdownIPFeedback::KSMShutdownIPFeedback()
|
|
setBackgroundPixmap( m_root );
|
|
setGeometry( TQApplication::desktop()->geometry() );
|
|
setBackgroundMode( TQWidget::NoBackground );
|
|
-
|
|
- setShown(true);
|
|
}
|
|
|
|
void KSMShutdownIPFeedback::showNow()
|
|
{
|
|
+ setShown(true);
|
|
+
|
|
TQTimer::singleShot( 0, this, SLOT(slotPaintEffect()) );
|
|
}
|
|
|
|
+void KSMShutdownIPFeedback::enableExports()
|
|
+{
|
|
+#ifdef Q_WS_X11
|
|
+ kdDebug(270) << k_lineinfo << "activating background exports.\n";
|
|
+ DCOPClient *client = kapp->dcopClient();
|
|
+ if (!client->isAttached()) {
|
|
+ client->attach();
|
|
+ }
|
|
+ TQByteArray data;
|
|
+ TQDataStream args( data, IO_WriteOnly );
|
|
+ args << 1;
|
|
+
|
|
+ TQCString appname( "kdesktop" );
|
|
+ int screen_number = DefaultScreen(qt_xdisplay());
|
|
+ if ( screen_number )
|
|
+ appname.sprintf("kdesktop-screen-%d", screen_number );
|
|
+
|
|
+ client->send( appname, "KBackgroundIface", "setExport(int)", data );
|
|
+#endif
|
|
+}
|
|
+
|
|
KSMShutdownIPFeedback::~KSMShutdownIPFeedback()
|
|
{
|
|
if (m_sharedRootPixmap) {
|
|
diff --git a/ksmserver/shutdowndlg.h b/ksmserver/shutdowndlg.h
|
|
index db66c55..05ca991 100644
|
|
--- a/ksmserver/shutdowndlg.h
|
|
+++ b/ksmserver/shutdowndlg.h
|
|
@@ -97,6 +97,13 @@
|
|
void slotSetBackgroundPixmap(const TQPixmap &);
|
|
|
|
private:
|
|
+ /**
|
|
+ * Asks KDesktop to export the desktop background as a KSharedPixmap.
|
|
+ * This method uses DCOP to call KBackgroundIface/setExport(int).
|
|
+ */
|
|
+ void enableExports();
|
|
+
|
|
+private:
|
|
static KSMShutdownIPFeedback * s_pSelf;
|
|
KSMShutdownIPFeedback();
|
|
int m_currentY;
|