From 6f2a566206faa0e6e8eff34f96888f6910644f56 Mon Sep 17 00:00:00 2001 From: markt Date: Wed, 28 Jun 2006 19:17:38 +0000 Subject: more focus issues with linear cycling and tabbed windows --- ChangeLog | 2 ++ src/FocusControl.cc | 4 ++-- src/Screen.cc | 5 ++--- src/Window.cc | 1 + 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 @@ (Format: Year/Month/Day) Changes for 1.0rc2: *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) Window.cc FocusControl.cc/hh Screen.cc *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) { FocusedWindows *window_list = (opts & CYCLELINEAR) ? &m_creation_order_list : &m_focused_list; if (!m_cycling_focus) { m_cycling_focus = true; - if ((opts & CYCLELINEAR) && m_cycling_window != m_focused_list.end()) { + if (opts & CYCLELINEAR) { 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 { m_cycling_creation_order = (opts & CYCLELINEAR); 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) { if ((win = findGroupLeft(*winclient)) != 0) { win->attachClient(*winclient); Fluxbox::instance()->attachSignals(*winclient); - focusControl().addFocusBack(*winclient); } else { 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 // there is only the one win client at this stage if (focusControl().focusNew()) - focusControl().addFocusFront(win->winClient()); + focusControl().addFocusFront(*winclient); else - focusControl().addFocusBack(win->winClient()); + focusControl().addFocusBack(*winclient); // we also need to check if another window expects this window to the left // 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) { if (client.fbwindow() != this) return false; + m_screen.focusControl().setScreenFocusedWindow(client); m_client = &client; m_client->raise(); m_client->focusSig().notify(); -- cgit v0.11.2