aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormarkt <markt>2006-06-28 19:17:38 (GMT)
committermarkt <markt>2006-06-28 19:17:38 (GMT)
commit6f2a566206faa0e6e8eff34f96888f6910644f56 (patch)
tree4e71fe5642b60d3f0934dbc6c6cf2bfd73355fc1
parentc5c316e09b27cda8b4b9a2d9a78d458402585a1b (diff)
downloadfluxbox-6f2a566206faa0e6e8eff34f96888f6910644f56.zip
fluxbox-6f2a566206faa0e6e8eff34f96888f6910644f56.tar.bz2
more focus issues with linear cycling and tabbed windows
-rw-r--r--ChangeLog2
-rw-r--r--src/FocusControl.cc4
-rw-r--r--src/Screen.cc5
-rw-r--r--src/Window.cc1
4 files changed, 7 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 10398e4..bd1695e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,8 @@
1 (Format: Year/Month/Day) 1 (Format: Year/Month/Day)
2Changes for 1.0rc2: 2Changes for 1.0rc2:
3*06/06/28: 3*06/06/28:
4 * Fixed more focus issues with linear cycling and tabbed windows (Mark)
5 Window.cc FocusControl.cc Screen.cc
4 * Fixed some focus issues on detach and restart (Mark) 6 * Fixed some focus issues on detach and restart (Mark)
5 Window.cc FocusControl.cc/hh Screen.cc 7 Window.cc FocusControl.cc/hh Screen.cc
6*06/06/27: 8*06/06/27:
diff --git a/src/FocusControl.cc b/src/FocusControl.cc
index 19d0bf8..f469521 100644
--- a/src/FocusControl.cc
+++ b/src/FocusControl.cc
@@ -87,9 +87,9 @@ void FocusControl::cycleFocus(int opts, bool cycle_reverse) {
87 FocusedWindows *window_list = (opts & CYCLELINEAR) ? &m_creation_order_list : &m_focused_list; 87 FocusedWindows *window_list = (opts & CYCLELINEAR) ? &m_creation_order_list : &m_focused_list;
88 if (!m_cycling_focus) { 88 if (!m_cycling_focus) {
89 m_cycling_focus = true; 89 m_cycling_focus = true;
90 if ((opts & CYCLELINEAR) && m_cycling_window != m_focused_list.end()) { 90 if (opts & CYCLELINEAR) {
91 m_cycling_creation_order = true; 91 m_cycling_creation_order = true;
92 m_cycling_window = find(window_list->begin(),window_list->end(),*m_cycling_window); 92 m_cycling_window = find(window_list->begin(),window_list->end(),s_focused_window);
93 } else { 93 } else {
94 m_cycling_creation_order = (opts & CYCLELINEAR); 94 m_cycling_creation_order = (opts & CYCLELINEAR);
95 m_cycling_window = window_list->begin(); 95 m_cycling_window = window_list->begin();
diff --git a/src/Screen.cc b/src/Screen.cc
index 222f1fc..71e4c54 100644
--- a/src/Screen.cc
+++ b/src/Screen.cc
@@ -1361,7 +1361,6 @@ FluxboxWindow *BScreen::createWindow(Window client) {
1361 if ((win = findGroupLeft(*winclient)) != 0) { 1361 if ((win = findGroupLeft(*winclient)) != 0) {
1362 win->attachClient(*winclient); 1362 win->attachClient(*winclient);
1363 Fluxbox::instance()->attachSignals(*winclient); 1363 Fluxbox::instance()->attachSignals(*winclient);
1364 focusControl().addFocusBack(*winclient);
1365 } else { 1364 } else {
1366 1365
1367 Fluxbox::instance()->attachSignals(*winclient); 1366 Fluxbox::instance()->attachSignals(*winclient);
@@ -1382,9 +1381,9 @@ FluxboxWindow *BScreen::createWindow(Window client) {
1382 // always put on end of focused list, if it gets focused it'll get pushed up 1381 // always put on end of focused list, if it gets focused it'll get pushed up
1383 // there is only the one win client at this stage 1382 // there is only the one win client at this stage
1384 if (focusControl().focusNew()) 1383 if (focusControl().focusNew())
1385 focusControl().addFocusFront(win->winClient()); 1384 focusControl().addFocusFront(*winclient);
1386 else 1385 else
1387 focusControl().addFocusBack(win->winClient()); 1386 focusControl().addFocusBack(*winclient);
1388 1387
1389 // we also need to check if another window expects this window to the left 1388 // we also need to check if another window expects this window to the left
1390 // and if so, then join it. 1389 // and if so, then join it.
diff --git a/src/Window.cc b/src/Window.cc
index 91b57e0..608ceb1 100644
--- a/src/Window.cc
+++ b/src/Window.cc
@@ -1068,6 +1068,7 @@ bool FluxboxWindow::setCurrentClient(WinClient &client, bool setinput) {
1068 if (client.fbwindow() != this) 1068 if (client.fbwindow() != this)
1069 return false; 1069 return false;
1070 1070
1071 m_screen.focusControl().setScreenFocusedWindow(client);
1071 m_client = &client; 1072 m_client = &client;
1072 m_client->raise(); 1073 m_client->raise();
1073 m_client->focusSig().notify(); 1074 m_client->focusSig().notify();