summaryrefslogtreecommitdiffstats
path: root/kdesktop/lock/lockprocess.cc
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2012-09-22 18:06:15 -0500
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2012-09-22 18:06:15 -0500
commit57f5c0698d49f0a0a7a55c75404f5b9ded910002 (patch)
treeb1832ad8738497b0cd14d14da585116010f34742 /kdesktop/lock/lockprocess.cc
parent553923b25dc41e2c17ba9038eb225cd3bb9b1770 (diff)
downloadtdebase-57f5c0698d49f0a0a7a55c75404f5b9ded910002.tar.gz
tdebase-57f5c0698d49f0a0a7a55c75404f5b9ded910002.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
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 5265bc627..71913469e 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]);
}
}
}