more focus issues with linear cycling and tabbed windows

This commit is contained in:
markt 2006-06-28 19:17:38 +00:00
parent c5c316e09b
commit 6f2a566206
4 changed files with 7 additions and 5 deletions

View file

@ -1,6 +1,8 @@
(Format: Year/Month/Day) (Format: Year/Month/Day)
Changes for 1.0rc2: Changes for 1.0rc2:
*06/06/28: *06/06/28:
* Fixed more focus issues with linear cycling and tabbed windows (Mark)
Window.cc FocusControl.cc Screen.cc
* Fixed some focus issues on detach and restart (Mark) * Fixed some focus issues on detach and restart (Mark)
Window.cc FocusControl.cc/hh Screen.cc Window.cc FocusControl.cc/hh Screen.cc
*06/06/27: *06/06/27:

View file

@ -87,9 +87,9 @@ void FocusControl::cycleFocus(int opts, bool cycle_reverse) {
FocusedWindows *window_list = (opts & CYCLELINEAR) ? &m_creation_order_list : &m_focused_list; FocusedWindows *window_list = (opts & CYCLELINEAR) ? &m_creation_order_list : &m_focused_list;
if (!m_cycling_focus) { if (!m_cycling_focus) {
m_cycling_focus = true; m_cycling_focus = true;
if ((opts & CYCLELINEAR) && m_cycling_window != m_focused_list.end()) { if (opts & CYCLELINEAR) {
m_cycling_creation_order = true; m_cycling_creation_order = true;
m_cycling_window = find(window_list->begin(),window_list->end(),*m_cycling_window); m_cycling_window = find(window_list->begin(),window_list->end(),s_focused_window);
} else { } else {
m_cycling_creation_order = (opts & CYCLELINEAR); m_cycling_creation_order = (opts & CYCLELINEAR);
m_cycling_window = window_list->begin(); m_cycling_window = window_list->begin();

View file

@ -1361,7 +1361,6 @@ FluxboxWindow *BScreen::createWindow(Window client) {
if ((win = findGroupLeft(*winclient)) != 0) { if ((win = findGroupLeft(*winclient)) != 0) {
win->attachClient(*winclient); win->attachClient(*winclient);
Fluxbox::instance()->attachSignals(*winclient); Fluxbox::instance()->attachSignals(*winclient);
focusControl().addFocusBack(*winclient);
} else { } else {
Fluxbox::instance()->attachSignals(*winclient); Fluxbox::instance()->attachSignals(*winclient);
@ -1382,9 +1381,9 @@ FluxboxWindow *BScreen::createWindow(Window client) {
// always put on end of focused list, if it gets focused it'll get pushed up // always put on end of focused list, if it gets focused it'll get pushed up
// there is only the one win client at this stage // there is only the one win client at this stage
if (focusControl().focusNew()) if (focusControl().focusNew())
focusControl().addFocusFront(win->winClient()); focusControl().addFocusFront(*winclient);
else else
focusControl().addFocusBack(win->winClient()); focusControl().addFocusBack(*winclient);
// we also need to check if another window expects this window to the left // we also need to check if another window expects this window to the left
// and if so, then join it. // and if so, then join it.

View file

@ -1068,6 +1068,7 @@ bool FluxboxWindow::setCurrentClient(WinClient &client, bool setinput) {
if (client.fbwindow() != this) if (client.fbwindow() != this)
return false; return false;
m_screen.focusControl().setScreenFocusedWindow(client);
m_client = &client; m_client = &client;
m_client->raise(); m_client->raise();
m_client->focusSig().notify(); m_client->focusSig().notify();