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)
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:

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;
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();

View file

@ -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.

View file

@ -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();