more focus issues with linear cycling and tabbed windows
This commit is contained in:
parent
c5c316e09b
commit
6f2a566206
4 changed files with 7 additions and 5 deletions
|
@ -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:
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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();
|
||||||
|
|
Loading…
Reference in a new issue