diff options
author | uruk | 2014-04-29 11:26:39 +0200 |
---|---|---|
committer | uruk | 2014-04-29 11:26:39 +0200 |
commit | 5b105566a5637edcf73fd6cbc690c1b3b958ff2a (patch) | |
tree | 9b35a6c244e5f9fb7b01be1e6e1da994852534e2 /gui/widgets/tab.cpp | |
parent | ec71f936280496d349310ea0091dbe26b90ae540 (diff) | |
parent | 55127114349219d57b7a9143a5d3d9bfd97e3e88 (diff) | |
download | scummvm-rg350-5b105566a5637edcf73fd6cbc690c1b3b958ff2a.tar.gz scummvm-rg350-5b105566a5637edcf73fd6cbc690c1b3b958ff2a.tar.bz2 scummvm-rg350-5b105566a5637edcf73fd6cbc690c1b3b958ff2a.zip |
Merge remote-tracking branch 'origin/master' into cge2
Diffstat (limited to 'gui/widgets/tab.cpp')
-rw-r--r-- | gui/widgets/tab.cpp | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/gui/widgets/tab.cpp b/gui/widgets/tab.cpp index a8b3f5450d..756781a04b 100644 --- a/gui/widgets/tab.cpp +++ b/gui/widgets/tab.cpp @@ -183,6 +183,7 @@ void TabWidget::setActiveTab(int tabID) { } _activeTab = tabID; _firstWidget = _tabs[tabID].firstWidget; + _boss->draw(); } } @@ -226,12 +227,34 @@ void TabWidget::handleMouseDown(int x, int y, int button, int clickCount) { } bool TabWidget::handleKeyDown(Common::KeyState state) { - // TODO: maybe there should be a way to switch between tabs - // using the keyboard? E.g. Alt-Shift-Left/Right-Arrow or something - // like that. + if (state.hasFlags(Common::KBD_SHIFT) && state.keycode == Common::KEYCODE_TAB) + adjustTabs(kTabBackwards); + else if (state.keycode == Common::KEYCODE_TAB) + adjustTabs(kTabForwards); + return Widget::handleKeyDown(state); } +void TabWidget::adjustTabs(int value) { + // Determine which tab is next + int tabID = _activeTab + value; + if (tabID >= (int)_tabs.size()) + tabID = 0; + else if (tabID < 0) + tabID = ((int)_tabs.size() - 1); + + // Slides _firstVisibleTab forward to the correct tab + int maxTabsOnScreen = (_w / _tabWidth); + if (tabID >= maxTabsOnScreen && (_firstVisibleTab + maxTabsOnScreen) < (int)_tabs.size()) + _firstVisibleTab++; + + // Slides _firstVisibleTab backwards to the correct tab + while (tabID < _firstVisibleTab) + _firstVisibleTab--; + + setActiveTab(tabID); +} + void TabWidget::reflowLayout() { Widget::reflowLayout(); |