summaryrefslogtreecommitdiffstats
path: root/redhat/tdebase/kdebase-3.5.13-fix_fancy_logout.patch
diff options
context:
space:
mode:
Diffstat (limited to 'redhat/tdebase/kdebase-3.5.13-fix_fancy_logout.patch')
-rw-r--r--redhat/tdebase/kdebase-3.5.13-fix_fancy_logout.patch162
1 files changed, 162 insertions, 0 deletions
diff --git a/redhat/tdebase/kdebase-3.5.13-fix_fancy_logout.patch b/redhat/tdebase/kdebase-3.5.13-fix_fancy_logout.patch
new file mode 100644
index 000000000..793334e24
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-fix_fancy_logout.patch
@@ -0,0 +1,162 @@
+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;