diff options
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.patch | 162 |
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; |