aboutsummaryrefslogtreecommitdiff
path: root/src/Screen.cc
diff options
context:
space:
mode:
authorrathnor <rathnor>2003-04-15 23:09:26 (GMT)
committerrathnor <rathnor>2003-04-15 23:09:26 (GMT)
commit909b3c5665213ef2a05ef26e33506d02829bdd93 (patch)
tree293a3a87f5ed1524c98d6011daa76743b953373e /src/Screen.cc
parent4ca88642fad0b89209aea9272b835b1e724975ad (diff)
downloadfluxbox_pavel-909b3c5665213ef2a05ef26e33506d02829bdd93.zip
fluxbox_pavel-909b3c5665213ef2a05ef26e33506d02829bdd93.tar.bz2
raise on focus [at end of cycle], also a temporary raise while cycling
(Simon)
Diffstat (limited to 'src/Screen.cc')
-rw-r--r--src/Screen.cc17
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