From 47e6000a144cfedc244c0b1ff2580c6f90967451 Mon Sep 17 00:00:00 2001 From: tpearson Date: Sat, 8 Oct 2011 05:21:48 +0000 Subject: Keep system modal dialogs on top of all other windows git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdelibs@1257823 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- kdeui/kdialog.cpp | 19 ++++++++++++++++++- kdeui/kdialog.h | 2 ++ 2 files changed, 20 insertions(+), 1 deletion(-) (limited to 'kdeui') diff --git a/kdeui/kdialog.cpp b/kdeui/kdialog.cpp index b41c8c479..e9082b657 100644 --- a/kdeui/kdialog.cpp +++ b/kdeui/kdialog.cpp @@ -393,7 +393,7 @@ KSMModalDialogHeader::~KSMModalDialogHeader() } KSMModalDialog::KSMModalDialog(TQWidget* parent) - : TQWidget( 0, "", Qt::WStyle_Customize | Qt::WType_Dialog | Qt::WStyle_Title | Qt::WStyle_StaysOnTop | Qt::WDestructiveClose ), m_allowClose(false) + : TQWidget( 0, "systemmodaldialogclass", Qt::WStyle_Customize | Qt::WType_Dialog | Qt::WStyle_Title | Qt::WStyle_StaysOnTop | Qt::WDestructiveClose ), m_keepOnTopTimer(NULL), m_allowClose(false) { // Signal that we do not want any window controls to be shown at all @@ -431,10 +431,27 @@ KSMModalDialog::KSMModalDialog(TQWidget* parent) TQSize sh = tqsizeHint(); TQRect rect = KGlobalSettings::desktopGeometry(TQCursor::pos()); move(rect.x() + (rect.width() - sh.width())/2, rect.y() + (rect.height() - sh.height())/2); + + show(); + keepMeOnTop(); +} + +void KSMModalDialog::keepMeOnTop() +{ + if (!m_keepOnTopTimer) { + m_keepOnTopTimer = new TQTimer(); + connect(m_keepOnTopTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(keepMeOnTop())); + m_keepOnTopTimer->start(100, FALSE); + } + setActiveWindow(); + raise(); + setFocus(); } KSMModalDialog::~KSMModalDialog() { + m_keepOnTopTimer->stop(); + delete m_keepOnTopTimer; } void KSMModalDialog::setStatusMessage(TQString message) diff --git a/kdeui/kdialog.h b/kdeui/kdialog.h index f26e82f41..274ce8b33 100644 --- a/kdeui/kdialog.h +++ b/kdeui/kdialog.h @@ -247,9 +247,11 @@ public: void closeSMDialog(); protected slots: + void keepMeOnTop(); void closeEvent(TQCloseEvent *e); private: + TQTimer* m_keepOnTopTimer; TQLabel* m_statusLabel; bool m_allowClose; }; -- cgit v1.2.1