/************************************************************************* Remove a tab by ID *************************************************************************/ void TabControl::removeTab(uint ID) { // do nothing if given window is not attached as a tab. if (!d_tabContentPane->isChild(ID)) return; Window* wnd = d_tabContentPane->getChild(ID); // Was this selected? bool reselect = wnd->isVisible(); // Tab buttons are the 2nd onward children d_tabContentPane->removeChildWindow(ID); // remove button too removeButtonForTabContent(wnd); if (reselect) { // Select another tab if (getTabCount() > 0) { setSelectedTab(d_tabContentPane->getChildAtIdx(0)->getName()); } } performChildWindowLayout(); requestRedraw(); }
void TabControl::removeTab_impl(Window* window) { // silently abort if window to be removed is 0. if (!window) return; // delete connection to event we subscribed earlier d_eventConnections.erase(window); // Was this selected? bool reselect = window->isVisible(); // Tab buttons are the 2nd onward children getTabPane()->removeChildWindow(window); // remove button too removeButtonForTabContent(window); if (reselect && (getTabCount() > 0)) // Select another tab setSelectedTab(getTabPane()->getChildAtIdx(0)->getName()); performChildWindowLayout(); invalidate(); }