From f5f0024b74d1bb0eb94937f3dc175d2b682617c2 Mon Sep 17 00:00:00 2001 From: tpearson Date: Fri, 9 Sep 2011 02:03:42 +0000 Subject: Add new _KDE_WM_MODAL_SYS_NOTIFICATION atom to disable menu/close/on-all-desktops buttons Improve the appearance of the TDE logout sequence using the new atom git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebase@1252231 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- ksmserver/server.cpp | 2 +- ksmserver/server.h | 2 ++ ksmserver/shutdown.cpp | 6 +++++- ksmserver/shutdowndlg.cpp | 20 +++++++++++++++----- ksmserver/shutdowndlg.h | 2 +- 5 files changed, 24 insertions(+), 8 deletions(-) (limited to 'ksmserver') diff --git a/ksmserver/server.cpp b/ksmserver/server.cpp index f4068a8f3..ce118a529 100644 --- a/ksmserver/server.cpp +++ b/ksmserver/server.cpp @@ -579,7 +579,7 @@ extern "C" int _IceTransNoListen(const char * protocol); #endif KSMServer::KSMServer( const TQString& windowManager, bool _only_local ) - : DCOPObject("ksmserver"), sessionGroup( "" ) + : DCOPObject("ksmserver"), sessionGroup( "" ), shutdownNotifierIPDlg(0) { the_server = this; clean = false; diff --git a/ksmserver/server.h b/ksmserver/server.h index 0fc900042..1fd55a217 100644 --- a/ksmserver/server.h +++ b/ksmserver/server.h @@ -174,6 +174,8 @@ private: void saveCurrentSession(); void saveCurrentSessionAs( TQString ); + TQWidget* shutdownNotifierIPDlg; + private: TQPtrList listener; TQPtrList clients; diff --git a/ksmserver/shutdown.cpp b/ksmserver/shutdown.cpp index 549fd2cc3..a153b2806 100644 --- a/ksmserver/shutdown.cpp +++ b/ksmserver/shutdown.cpp @@ -188,7 +188,7 @@ void KSMServer::shutdownInternal( KApplication::ShutdownConfirm confirm, if (showFancyLogout) { KSMShutdownIPFeedback::showit(); // hide the UGLY logout process from the user - KSMShutdownIPDlg::showShutdownIP(); + shutdownNotifierIPDlg = KSMShutdownIPDlg::showShutdownIP(); } if ( saveSession ) @@ -553,6 +553,10 @@ void KSMServer::killWM() { state = KillingWM; bool iswm = false; + if (shutdownNotifierIPDlg) { + shutdownNotifierIPDlg->close(); + shutdownNotifierIPDlg=0; + } for ( KSMClient* c = clients.first(); c; c = clients.next() ) { if( isWM( c )) { iswm = true; diff --git a/ksmserver/shutdowndlg.cpp b/ksmserver/shutdowndlg.cpp index 3deffdb71..c49e31974 100644 --- a/ksmserver/shutdowndlg.cpp +++ b/ksmserver/shutdowndlg.cpp @@ -516,10 +516,11 @@ void KSMShutdownFeedback::slotPaintEffect() KSMShutdownIPFeedback * KSMShutdownIPFeedback::s_pSelf = 0L; KSMShutdownIPFeedback::KSMShutdownIPFeedback() - : TQWidget( 0L, "feedbackipwidget", Qt::WType_Dialog | Qt::WStyle_StaysOnTop | Qt::WX11BypassWM ), m_timeout(0) + : TQWidget( 0L, "feedbackipwidget", Qt::WType_Dialog | Qt::WStyle_StaysOnTop ), m_timeout(0) { setShown(false); + setWindowState(WindowFullScreen); // Try to get the root pixmap system("krootbacking &"); @@ -1093,7 +1094,7 @@ bool KSMShutdownDlg::confirmShutdown( bool maysd, KApplication::ShutdownType& sd return result; } -void KSMShutdownIPDlg::showShutdownIP() +TQWidget* KSMShutdownIPDlg::showShutdownIP() { kapp->enableStyles(); KSMShutdownIPDlg* l = new KSMShutdownIPDlg( 0 ); @@ -1110,17 +1111,26 @@ void KSMShutdownIPDlg::showShutdownIP() timer->start( 0, TRUE ); kapp->disableStyles(); + + return l; } KSMShutdownIPDlg::KSMShutdownIPDlg(TQWidget* parent) -// : TQDialog( 0, "", TRUE, Qt::WStyle_Customize | Qt::WType_Dialog | Qt::WStyle_NoBorder | Qt::WStyle_Title | Qt::WStyle_StaysOnTop | Qt::WDestructiveClose ) - : TQDialog( 0, "", TRUE, Qt::WStyle_Customize | Qt::WType_Popup | Qt::WStyle_NoBorder | Qt::WStyle_Title | Qt::WStyle_StaysOnTop | Qt::WX11BypassWM | Qt::WDestructiveClose ) + : TQDialog( 0, "", TRUE, Qt::WStyle_Customize | Qt::WType_Dialog | Qt::WStyle_Title | Qt::WDestructiveClose ) { + // Signal that this window should stay on top of everything else + setModal(true); + + // Signal that we do not want any window controls to be shown at all + Atom kde_wm_system_modal_notification; + kde_wm_system_modal_notification = XInternAtom(qt_xdisplay(), "_KDE_WM_MODAL_SYS_NOTIFICATION", False); + XChangeProperty(qt_xdisplay(), winId(), kde_wm_system_modal_notification, XA_INTEGER, 32, PropModeReplace, (unsigned char *) "TRUE", 1L); + TQVBoxLayout* vbox = new TQVBoxLayout( this ); TQFrame* frame = new TQFrame( this ); - frame->setFrameStyle( TQFrame::StyledPanel | TQFrame::Raised ); + frame->setFrameStyle( TQFrame::NoFrame ); frame->setLineWidth( tqstyle().tqpixelMetric( TQStyle::PM_DefaultFrameWidth, frame ) ); // we need to set the minimum size for the window frame->setMinimumWidth(400); diff --git a/ksmserver/shutdowndlg.h b/ksmserver/shutdowndlg.h index 0db328a79..72db4b1b1 100644 --- a/ksmserver/shutdowndlg.h +++ b/ksmserver/shutdowndlg.h @@ -144,7 +144,7 @@ class KSMShutdownIPDlg : public TQDialog Q_OBJECT public: - static void showShutdownIP(); + static TQWidget* showShutdownIP(); protected: ~KSMShutdownIPDlg(); -- cgit v1.2.1