void TabbedArea::updateArrowEnableState() { updateTabsWidth(); if (mTabsWidth > getWidth() - 4 - mArrowButton[0]->getWidth() - mArrowButton[1]->getWidth()) { mArrowButton[0]->setVisible(true); mArrowButton[1]->setVisible(true); } else { mArrowButton[0]->setVisible(false); mArrowButton[1]->setVisible(false); mTabScrollIndex = 0; } // Left arrow consistency check if (!mTabScrollIndex) mArrowButton[0]->setEnabled(false); else mArrowButton[0]->setEnabled(true); // Right arrow consistency check if (mVisibleTabsWidth < getWidth() - 4 - mArrowButton[0]->getWidth() - mArrowButton[1]->getWidth()) { mArrowButton[1]->setEnabled(false); } else { mArrowButton[1]->setEnabled(true); } }
void TabbedArea::addTab(gcn::Tab* tab, gcn::Widget* widget) { gcn::TabbedArea::addTab(tab, widget); widget->setSize(mWidgetContainer->getWidth(), mWidgetContainer->getHeight()); updateTabsWidth(); updateArrowEnableState(); }
void TabbedArea::addTab(gcn::Tab* tab, gcn::Widget* widget) { gcn::TabbedArea::addTab(tab, widget); int width = getWidth() - 2 * getFrameSize(); int height = getHeight() - 2 * getFrameSize() - mTabContainer->getHeight(); widget->setSize(width, height); updateTabsWidth(); updateArrowEnableState(); }
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(); }