diff options
author | pekdon <pekdon> | 2002-01-18 18:28:17 (GMT) |
---|---|---|
committer | pekdon <pekdon> | 2002-01-18 18:28:17 (GMT) |
commit | 74454c8f2a8f1fcae493930a5a00cafab0959a4c (patch) | |
tree | 15a8d903952bfe9cbc984ba9bf459b459debe172 /src | |
parent | b0d1c04c119711167fccd1b30e266269a0e2262c (diff) | |
download | fluxbox-74454c8f2a8f1fcae493930a5a00cafab0959a4c.zip fluxbox-74454c8f2a8f1fcae493930a5a00cafab0959a4c.tar.bz2 |
Fixed lower/raise of windows when using keybindings/windowmenu
Diffstat (limited to 'src')
-rw-r--r-- | src/Tab.cc | 23 | ||||
-rw-r--r-- | src/Tab.hh | 3 | ||||
-rw-r--r-- | src/Window.cc | 6 | ||||
-rw-r--r-- | src/Windowmenu.cc | 6 | ||||
-rw-r--r-- | src/fluxbox.cc | 11 |
5 files changed, 41 insertions, 8 deletions
@@ -19,7 +19,7 @@ | |||
19 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 19 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
20 | // DEALINGS IN THE SOFTWARE. | 20 | // DEALINGS IN THE SOFTWARE. |
21 | 21 | ||
22 | // $Id: Tab.cc,v 1.14 2002/01/09 14:11:20 fluxgen Exp $ | 22 | // $Id: Tab.cc,v 1.15 2002/01/18 18:28:17 pekdon Exp $ |
23 | 23 | ||
24 | #include "Tab.hh" | 24 | #include "Tab.hh" |
25 | 25 | ||
@@ -157,6 +157,27 @@ void Tab::raise() { | |||
157 | m_win->getScreen()->raiseWindows(&first->m_tabwin, 1); | 157 | m_win->getScreen()->raiseWindows(&first->m_tabwin, 1); |
158 | } | 158 | } |
159 | 159 | ||
160 | //-------------- lower -------------------- | ||
161 | // Lowers the tabs in the tablist AND | ||
162 | // the windows the tabs relate to | ||
163 | //----------------------------------------- | ||
164 | void Tab::lower() { | ||
165 | Tab *current = this; | ||
166 | FluxboxWindow *win = 0; //convinence | ||
167 | //this have to be done in the correct order, otherwise we'll switch the window | ||
168 | //beeing ontop in the group | ||
169 | do { | ||
170 | XLowerWindow(m_display, current->m_tabwin); //lower tabwin and tabs window | ||
171 | win = current->getWindow(); | ||
172 | win->getScreen()->getWorkspace(win->getWorkspaceNumber())->lowerWindow(win); | ||
173 | |||
174 | current = current->next(); //get next | ||
175 | if (current == 0) | ||
176 | current = getFirst(this); //there weren't any after, get the first | ||
177 | |||
178 | } while (current != this); | ||
179 | } | ||
180 | |||
160 | //-------------- loadTheme ----------------- | 181 | //-------------- loadTheme ----------------- |
161 | // loads the texture with the correct | 182 | // loads the texture with the correct |
162 | // width and height, this is necessary in | 183 | // width and height, this is necessary in |
@@ -19,7 +19,7 @@ | |||
19 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 19 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
20 | // DEALINGS IN THE SOFTWARE. | 20 | // DEALINGS IN THE SOFTWARE. |
21 | 21 | ||
22 | // $Id: Tab.hh,v 1.6 2002/01/11 09:44:35 fluxgen Exp $ | 22 | // $Id: Tab.hh,v 1.7 2002/01/18 18:28:17 pekdon Exp $ |
23 | 23 | ||
24 | #ifndef _TAB_HH_ | 24 | #ifndef _TAB_HH_ |
25 | #define _TAB_HH_ | 25 | #define _TAB_HH_ |
@@ -55,6 +55,7 @@ public: | |||
55 | void deiconify(); | 55 | void deiconify(); |
56 | void iconify(); | 56 | void iconify(); |
57 | void raise(); | 57 | void raise(); |
58 | void lower(); | ||
58 | void withdraw(); | 59 | void withdraw(); |
59 | void stick(); | 60 | void stick(); |
60 | void resize(); | 61 | void resize(); |
diff --git a/src/Window.cc b/src/Window.cc index a7997c9..212a1c2 100644 --- a/src/Window.cc +++ b/src/Window.cc | |||
@@ -22,7 +22,7 @@ | |||
22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
23 | // DEALINGS IN THE SOFTWARE. | 23 | // DEALINGS IN THE SOFTWARE. |
24 | 24 | ||
25 | // $Id: Window.cc,v 1.20 2002/01/18 01:25:58 fluxgen Exp $ | 25 | // $Id: Window.cc,v 1.21 2002/01/18 18:28:17 pekdon Exp $ |
26 | 26 | ||
27 | // stupid macros needed to access some functions in version 2 of the GNU C | 27 | // stupid macros needed to access some functions in version 2 of the GNU C |
28 | // library | 28 | // library |
@@ -2834,13 +2834,15 @@ void FluxboxWindow::buttonPressEvent(XButtonEvent *be) { | |||
2834 | if (windowmenu && windowmenu->isVisible()) | 2834 | if (windowmenu && windowmenu->isVisible()) |
2835 | windowmenu->hide(); | 2835 | windowmenu->hide(); |
2836 | //raise tab first if there is any | 2836 | //raise tab first if there is any |
2837 | if (tab) | 2837 | if (hasTab()) |
2838 | tab->raise(); | 2838 | tab->raise(); |
2839 | 2839 | ||
2840 | screen->getWorkspace(workspace_number)->raiseWindow(this); | 2840 | screen->getWorkspace(workspace_number)->raiseWindow(this); |
2841 | } | 2841 | } |
2842 | } else if (be->button == 2 && be->window == frame.label) { | 2842 | } else if (be->button == 2 && be->window == frame.label) { |
2843 | screen->getWorkspace(workspace_number)->lowerWindow(this); | 2843 | screen->getWorkspace(workspace_number)->lowerWindow(this); |
2844 | if (hasTab()) | ||
2845 | getTab()->lower(); //lower the tab AND it's windows | ||
2844 | 2846 | ||
2845 | } else if (windowmenu && be->button == 3 && | 2847 | } else if (windowmenu && be->button == 3 && |
2846 | (frame.title == be->window || frame.label == be->window || | 2848 | (frame.title == be->window || frame.label == be->window || |
diff --git a/src/Windowmenu.cc b/src/Windowmenu.cc index c776981..dcf6bd6 100644 --- a/src/Windowmenu.cc +++ b/src/Windowmenu.cc | |||
@@ -200,12 +200,16 @@ void Windowmenu::itemSelected(int button, int index) { | |||
200 | 200 | ||
201 | case BScreen::WINDOWRAISE: | 201 | case BScreen::WINDOWRAISE: |
202 | hide(); | 202 | hide(); |
203 | if (window->hasTab()) | ||
204 | window->getTab()->raise(); //raise tabs | ||
203 | screen->getWorkspace(window->getWorkspaceNumber())->raiseWindow(window); | 205 | screen->getWorkspace(window->getWorkspaceNumber())->raiseWindow(window); |
204 | break; | 206 | break; |
205 | 207 | ||
206 | case BScreen::WINDOWLOWER: | 208 | case BScreen::WINDOWLOWER: |
207 | hide(); | 209 | hide(); |
208 | screen->getWorkspace(window->getWorkspaceNumber())->lowerWindow(window); | 210 | screen->getWorkspace(window->getWorkspaceNumber())->lowerWindow(window); |
211 | if (window->hasTab()) | ||
212 | window->getTab()->lower(); //lower tabs AND all it's windows | ||
209 | break; | 213 | break; |
210 | 214 | ||
211 | case BScreen::WINDOWSTICK: | 215 | case BScreen::WINDOWSTICK: |
diff --git a/src/fluxbox.cc b/src/fluxbox.cc index 1eea987..11df79c 100644 --- a/src/fluxbox.cc +++ b/src/fluxbox.cc | |||
@@ -22,7 +22,7 @@ | |||
22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
23 | // DEALINGS IN THE SOFTWARE. | 23 | // DEALINGS IN THE SOFTWARE. |
24 | 24 | ||
25 | // $Id: fluxbox.cc,v 1.21 2002/01/18 01:23:54 fluxgen Exp $ | 25 | // $Id: fluxbox.cc,v 1.22 2002/01/18 18:28:17 pekdon Exp $ |
26 | 26 | ||
27 | // stupid macros needed to access some functions in version 2 of the GNU C | 27 | // stupid macros needed to access some functions in version 2 of the GNU C |
28 | // library | 28 | // library |
@@ -1154,10 +1154,15 @@ void Fluxbox::doWindowAction(Keys::KeyAction action) { | |||
1154 | focused_window->iconify(); | 1154 | focused_window->iconify(); |
1155 | break; | 1155 | break; |
1156 | case Keys::RAISE: | 1156 | case Keys::RAISE: |
1157 | focused_window->getScreen()->getWorkspace(focused_window->getWorkspaceNumber())->raiseWindow(focused_window); | 1157 | if (focused_window->hasTab()) |
1158 | focused_window->getTab()->raise(); //raise the tabs if we have any | ||
1159 | focused_window->getScreen()->getWorkspace(focused_window->getWorkspaceNumber())->raiseWindow(focused_window); | ||
1158 | break; | 1160 | break; |
1159 | case Keys::LOWER: | 1161 | case Keys::LOWER: |
1160 | XLowerWindow(getXDisplay(), focused_window->getFrameWindow()); | 1162 | focused_window->getScreen()->getWorkspace(focused_window->getWorkspaceNumber())->lowerWindow(focused_window); |
1163 | if (focused_window->hasTab()) | ||
1164 | focused_window->getTab()->lower(); //lower the tabs AND it's windows | ||
1165 | |||
1161 | break; | 1166 | break; |
1162 | case Keys::CLOSE: | 1167 | case Keys::CLOSE: |
1163 | focused_window->close(); | 1168 | focused_window->close(); |