diff options
Diffstat (limited to 'src/Screen.cc')
-rw-r--r-- | src/Screen.cc | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/Screen.cc b/src/Screen.cc index 887e8fc..bac97e9 100644 --- a/src/Screen.cc +++ b/src/Screen.cc | |||
@@ -22,7 +22,7 @@ | |||
22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
23 | // DEALINGS IN THE SOFTWARE. | 23 | // DEALINGS IN THE SOFTWARE. |
24 | 24 | ||
25 | // $Id: Screen.cc,v 1.122 2003/04/15 14:42:03 fluxgen Exp $ | 25 | // $Id: Screen.cc,v 1.123 2003/04/15 23:09:12 rathnor Exp $ |
26 | 26 | ||
27 | 27 | ||
28 | #include "Screen.hh" | 28 | #include "Screen.hh" |
@@ -1371,6 +1371,9 @@ void BScreen::nextFocus(int opts) { | |||
1371 | if (!cycling_focus) { | 1371 | if (!cycling_focus) { |
1372 | cycling_focus = True; | 1372 | cycling_focus = True; |
1373 | cycling_window = focused_list.begin(); | 1373 | cycling_window = focused_list.begin(); |
1374 | } else { | ||
1375 | // already cycling, so restack to put windows back in their proper order | ||
1376 | m_layermanager.restack(); | ||
1374 | } | 1377 | } |
1375 | // if it is stacked, we want the highest window in the focused list | 1378 | // if it is stacked, we want the highest window in the focused list |
1376 | // that is on the same workspace | 1379 | // that is on the same workspace |
@@ -1392,8 +1395,10 @@ void BScreen::nextFocus(int opts) { | |||
1392 | (fbwin->isStuck() | 1395 | (fbwin->isStuck() |
1393 | || fbwin->getWorkspaceNumber() == getCurrentWorkspaceID())) { | 1396 | || fbwin->getWorkspaceNumber() == getCurrentWorkspaceID())) { |
1394 | // either on this workspace, or stuck | 1397 | // either on this workspace, or stuck |
1395 | if (! (doSkipWindow(fbwin, opts) || !fbwin->setInputFocus()) ) | 1398 | if (! (doSkipWindow(fbwin, opts) || !fbwin->setInputFocus()) ) { |
1399 | fbwin->tempRaise(); | ||
1396 | break; | 1400 | break; |
1401 | } | ||
1397 | } | 1402 | } |
1398 | } | 1403 | } |
1399 | cycling_window = it; | 1404 | cycling_window = it; |
@@ -1444,6 +1449,9 @@ void BScreen::prevFocus(int opts) { | |||
1444 | if (!cycling_focus) { | 1449 | if (!cycling_focus) { |
1445 | cycling_focus = True; | 1450 | cycling_focus = True; |
1446 | cycling_window = focused_list.end(); | 1451 | cycling_window = focused_list.end(); |
1452 | } else { | ||
1453 | // already cycling, so restack to put windows back in their proper order | ||
1454 | m_layermanager.restack(); | ||
1447 | } | 1455 | } |
1448 | // if it is stacked, we want the highest window in the focused list | 1456 | // if it is stacked, we want the highest window in the focused list |
1449 | // that is on the same workspace | 1457 | // that is on the same workspace |
@@ -1466,8 +1474,10 @@ void BScreen::prevFocus(int opts) { | |||
1466 | (fbwin->isStuck() | 1474 | (fbwin->isStuck() |
1467 | || fbwin->getWorkspaceNumber() == getCurrentWorkspaceID())) { | 1475 | || fbwin->getWorkspaceNumber() == getCurrentWorkspaceID())) { |
1468 | // either on this workspace, or stuck | 1476 | // either on this workspace, or stuck |
1469 | if (! (doSkipWindow(fbwin, opts) || !fbwin->setInputFocus()) ) | 1477 | if (! (doSkipWindow(fbwin, opts) || !fbwin->setInputFocus()) ) { |
1478 | fbwin->tempRaise(); | ||
1470 | break; | 1479 | break; |
1480 | } | ||
1471 | } | 1481 | } |
1472 | } | 1482 | } |
1473 | cycling_window = it; | 1483 | cycling_window = it; |
@@ -2167,6 +2177,7 @@ void BScreen::notifyReleasedKeys(XKeyEvent &ke) { | |||
2167 | WinClient *client = *cycling_window; | 2177 | WinClient *client = *cycling_window; |
2168 | focused_list.erase(cycling_window); | 2178 | focused_list.erase(cycling_window); |
2169 | focused_list.push_front(client); | 2179 | focused_list.push_front(client); |
2180 | client->fbwindow()->raise(); | ||
2170 | } | 2181 | } |
2171 | } | 2182 | } |
2172 | 2183 | ||