Ticket #8937: 0001-Stack-Tile-Add-option-left-right-shortcuts-to-switch.patch

File 0001-Stack-Tile-Add-option-left-right-shortcuts-to-switch.patch, 1.9 KB (added by jessicah, 12 years ago)
  • src/servers/app/stackandtile/StackAndTile.cpp

    From 194f284f28a2114b6fe39085298c3fe5982addc8 Mon Sep 17 00:00:00 2001
    From: Jessica Hamilton <jessica.l.hamilton@gmail.com>
    Date: Wed, 5 Sep 2012 23:12:26 +1200
    Subject: [PATCH] Stack&Tile: Add option+left/right shortcuts to switch windows.
    
    ---
     src/servers/app/stackandtile/StackAndTile.cpp |   33 +++++++++++++++++++++++++
     1 files changed, 33 insertions(+), 0 deletions(-)
     mode change 100644 => 100755 src/servers/app/stackandtile/StackAndTile.cpp
    
    diff --git a/src/servers/app/stackandtile/StackAndTile.cpp b/src/servers/app/stackandtile/StackAndTile.cpp
    old mode 100644
    new mode 100755
    index 2fb5454..539187f
    a b StackAndTile::KeyPressed(uint32 what, int32 key, int32 modifiers)  
    129129        if (!wasPressed && fSATKeyPressed)
    130130            _StartSAT();
    131131    }
     132    if ((modifiers & B_OPTION_KEY) == 0 || what != B_KEY_DOWN)
     133        return false;
     134
     135    const int kArrowKeyLeft = 97;
     136    const int kArrowKeyRight = 99;
     137
     138    switch (key) {
     139        case kArrowKeyLeft:
     140        case kArrowKeyRight:
     141        {
     142            SATWindow* frontWindow = GetSATWindow(fDesktop->FocusWindow());
     143            SATGroup* currentGroup = NULL;
     144            if (frontWindow)
     145                currentGroup = frontWindow->GetGroup();
     146            int groupSize = currentGroup->CountItems();
     147            if (!currentGroup || groupSize <= 1)
     148                return false;
     149
     150            for (int i = 0; i < groupSize; ++i) {
     151                SATWindow* targetWindow = currentGroup->WindowAt(i);
     152                if (targetWindow == frontWindow) {
     153                    if (key == kArrowKeyLeft && i > 0) {
     154                        targetWindow = currentGroup->WindowAt(i-1);
     155                    } else if (key == kArrowKeyRight && i < groupSize-1) {
     156                        targetWindow = currentGroup->WindowAt(i+1);
     157                    }
     158                    _ActivateWindow(targetWindow);
     159                    return true;
     160                }
     161            }
     162        }
     163    }
     164
    132165// switch off group navigation because it clashes with tracker...
    133166return false;
    134167    if (!SATKeyPressed() || (modifiers & B_COMMAND_KEY) == 0