summaryrefslogtreecommitdiffstats
path: root/kdesktop/lock/lockprocess.cc
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2012-09-22 18:06:15 -0500
committerSlávek Banko <slavek.banko@axis.cz>2012-09-24 19:16:39 +0200
commit22e8f5bec8d677c7a55848976e411069038bd708 (patch)
treeb4376a6a5c079a62d669cd2e68df3fddad267dbd /kdesktop/lock/lockprocess.cc
parentb3ab725915e6c9f69dd131502c095f2037b07383 (diff)
downloadtdebase-22e8f5bec8d677c7a55848976e411069038bd708.tar.gz
tdebase-22e8f5bec8d677c7a55848976e411069038bd708.zip
Lower override redirect windows instead of unmapping them on lock start
Restore lowered windows on lock exit This provides a better solution to Bug 1079 (cherry picked from commit 57f5c0698d49f0a0a7a55c75404f5b9ded910002)
Diffstat (limited to 'kdesktop/lock/lockprocess.cc')
-rw-r--r--kdesktop/lock/lockprocess.cc9
1 files changed, 7 insertions, 2 deletions
diff --git a/kdesktop/lock/lockprocess.cc b/kdesktop/lock/lockprocess.cc
index d5310a7b0..d6e0d7452 100644
--- a/kdesktop/lock/lockprocess.cc
+++ b/kdesktop/lock/lockprocess.cc
@@ -138,6 +138,8 @@ extern bool trinity_desktop_lock_delay_screensaver_start;
extern bool trinity_desktop_lock_use_sak;
extern bool trinity_desktop_lock_forced;
+extern TQXLibWindowList trinity_desktop_lock_hidden_window_list;
+
bool trinity_desktop_lock_autohide_lockdlg = TRUE;
bool trinity_desktop_lock_closing_windows = FALSE;
bool trinity_desktop_lock_in_sec_dlg = FALSE;
@@ -961,7 +963,7 @@ void LockProcess::createSaverWindow()
setGeometry(0, 0, mRootWidth, mRootHeight);
// HACK
- // Close all tooltips and notification windows
+ // Hide all tooltips and notification windows
{
Window rootWindow = RootWindow(x11Display(), x11Screen());
Window parent;
@@ -974,7 +976,10 @@ void LockProcess::createSaverWindow()
for (unsigned int i=0; i<noOfChildren; i++) {
if (XGetWindowAttributes(x11Display(), children[i], &childAttr) && XGetTransientForHint(x11Display(), children[i], &childTransient)) {
if ((childAttr.map_state == IsViewable) && (childAttr.override_redirect) && (childTransient)) {
- XUnmapWindow(x11Display(), children[i]);
+ if (!trinity_desktop_lock_hidden_window_list.contains(children[i])) {
+ trinity_desktop_lock_hidden_window_list.append(children[i]);
+ }
+ XLowerWindow(x11Display(), children[i]);
}
}
}