diff options
author | Timothy Pearson <[email protected]> | 2012-09-22 18:06:15 -0500 |
---|---|---|
committer | Timothy Pearson <[email protected]> | 2012-09-22 18:06:15 -0500 |
commit | 57f5c0698d49f0a0a7a55c75404f5b9ded910002 (patch) | |
tree | b1832ad8738497b0cd14d14da585116010f34742 /kdesktop/lock/lockprocess.cc | |
parent | 553923b25dc41e2c17ba9038eb225cd3bb9b1770 (diff) | |
download | tdebase-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.cc | 9 |
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]); } } } |