diff options
author | Tomas Janousek <tomi@nomi.cz> | 2007-03-01 22:18:18 (GMT) |
---|---|---|
committer | Tomas Janousek <tomi@nomi.cz> | 2008-01-27 14:01:14 (GMT) |
commit | b405d36151d3a6d3074eb6bafb541a1d6228d85e (patch) | |
tree | ac67fd02067fb473348972a3a4d40272d99666e0 | |
parent | 8c3f2a8e0378ff5d649ce831b995669874fd1056 (diff) | |
download | fluxbox-b405d36151d3a6d3074eb6bafb541a1d6228d85e.zip fluxbox-b405d36151d3a6d3074eb6bafb541a1d6228d85e.tar.bz2 |
Move windows out of inactive heads upon layout change.
Signed-off-by: Tomas Janousek <tomi@nomi.cz>
-rw-r--r-- | src/Screen.cc | 19 | ||||
-rw-r--r-- | src/Screen.hh | 1 |
2 files changed, 20 insertions, 0 deletions
diff --git a/src/Screen.cc b/src/Screen.cc index c6379a0..36b1918 100644 --- a/src/Screen.cc +++ b/src/Screen.cc | |||
@@ -1909,6 +1909,9 @@ void BScreen::updateSize() { | |||
1909 | // send resize notify | 1909 | // send resize notify |
1910 | m_resize_sig.notify(); | 1910 | m_resize_sig.notify(); |
1911 | m_workspace_area_sig.notify(); | 1911 | m_workspace_area_sig.notify(); |
1912 | |||
1913 | // move windows out of inactive heads | ||
1914 | clearHeads(); | ||
1912 | } | 1915 | } |
1913 | 1916 | ||
1914 | 1917 | ||
@@ -2020,6 +2023,22 @@ notactive: | |||
2020 | 2023 | ||
2021 | } | 2024 | } |
2022 | 2025 | ||
2026 | /* Move windows out of inactive heads */ | ||
2027 | void BScreen::clearHeads() { | ||
2028 | if (!hasXinerama()) return; | ||
2029 | |||
2030 | for (Workspaces::iterator i = m_workspaces_list.begin(); | ||
2031 | i != m_workspaces_list.end(); i++) { | ||
2032 | for (Workspace::Windows::iterator win = (*i)->windowList().begin(); | ||
2033 | win != (*i)->windowList().end(); win++) { | ||
2034 | if (getHead((*win)->fbWindow()) == 0) { | ||
2035 | // first head is a safe bet here | ||
2036 | (*win)->placeWindow(1); | ||
2037 | } | ||
2038 | } | ||
2039 | } | ||
2040 | } | ||
2041 | |||
2023 | int BScreen::getHead(int x, int y) const { | 2042 | int BScreen::getHead(int x, int y) const { |
2024 | if (!hasXinerama()) return 0; | 2043 | if (!hasXinerama()) return 0; |
2025 | #ifdef XINERAMA | 2044 | #ifdef XINERAMA |
diff --git a/src/Screen.hh b/src/Screen.hh index c95e573..f0dbcc6 100644 --- a/src/Screen.hh +++ b/src/Screen.hh | |||
@@ -406,6 +406,7 @@ public: | |||
406 | int numHeads() const { return m_xinerama_num_heads; } | 406 | int numHeads() const { return m_xinerama_num_heads; } |
407 | 407 | ||
408 | void initXinerama(); | 408 | void initXinerama(); |
409 | void clearHeads(); | ||
409 | /** | 410 | /** |
410 | * Determines head number for a position | 411 | * Determines head number for a position |
411 | * @param x position in pixels on the screen | 412 | * @param x position in pixels on the screen |