void TabbedArea::keyPressed(gcn::KeyEvent& keyEvent) { if (keyEvent.isConsumed() || !isFocused()) return; if (keyEvent.getKey().getValue() == Key::LEFT) { int index = getSelectedTabIndex(); index--; if (index < 0) setSelectedTab(mTabs[mTabs.size() - 1].first); else setSelectedTab(mTabs[index].first); keyEvent.consume(); } else if (keyEvent.getKey().getValue() == Key::RIGHT) { int index = getSelectedTabIndex(); index++; if (index >= (int) mTabs.size()) setSelectedTab(mTabs[0].first); else setSelectedTab(mTabs[index].first); keyEvent.consume(); } }
void TabbedArea::removeTab(Tab* tab) { int tabIndexToBeSelected = - 1; if (tab == mSelectedTab) { int index = getSelectedTabIndex(); if (index == (int)mTabs.size() - 1 && mTabs.size() >= 2) { tabIndexToBeSelected = index--; } else if (index == (int)mTabs.size() - 1 && mTabs.size() == 1) { tabIndexToBeSelected = -1; } else { tabIndexToBeSelected = index; } } std::vector<std::pair<Tab*, Widget*> >::iterator iter; for (iter = mTabs.begin(); iter != mTabs.end(); iter++) { if (iter->first == tab) { mTabContainer->remove(tab); mTabs.erase(iter); break; } } std::vector<Tab*>::iterator iter2; for (iter2 = mTabsToDelete.begin(); iter2 != mTabsToDelete.end(); iter2++) { if (*iter2 == tab) { mTabsToDelete.erase(iter2); delete tab; break; } } if (tabIndexToBeSelected == -1) { mSelectedTab = NULL; mWidgetContainer->clear(); } else { setSelectedTab(tabIndexToBeSelected); } adjustSize(); adjustTabPositions(); }
void TabbedArea::keyPressed(KeyEvent& keyEvent) { if (keyEvent.isConsumed() || !isFocused()) { return; } if (keyEvent.getKey().getValue() == Key::Left) { int index = getSelectedTabIndex(); index--; if (index < 0) { return; } else { setSelectedTab(mTabs[index].first); } keyEvent.consume(); } else if (keyEvent.getKey().getValue() == Key::Right) { int index = getSelectedTabIndex(); index++; if (index >= (int)mTabs.size()) { return; } else { setSelectedTab(mTabs[index].first); } keyEvent.consume(); } }
void TabbedArea::removeTab(Tab *tab) { if (tab == mSelectedTab) { if (getNumberOfTabs() > 1) setSelectedTab(std::max(0, getSelectedTabIndex() - 1)); else mSelectedTab = 0; } TabContainer::iterator iter; for (iter = mTabs.begin(); iter != mTabs.end(); iter++) { if (iter->first == tab) { mTabContainer->remove(tab); mTabs.erase(iter); break; } } std::vector<gcn::Tab*>::iterator iter2; for (iter2 = mTabsToDelete.begin(); iter2 != mTabsToDelete.end(); iter2++) { if (*iter2 == tab) { mTabsToDelete.erase(iter2); delete tab; break; } } adjustSize(); updateTabsWidth(); adjustTabPositions(); }