Widget::WidgetsList Widget::GetWidgetsByClass( const std::string& class_name ) { WidgetsList result; for( const auto& root_widget : root_widgets ) { if( root_widget->GetClass() == class_name ) { result.push_back( root_widget->shared_from_this() ); } auto container = std::dynamic_pointer_cast<Container>( root_widget->shared_from_this() ); if( container ) { auto container_result = SearchContainerForClass( container, class_name ); // Splice the 2 vectors. if( !container_result.empty() ) { result.reserve( container_result.size() ); result.insert( result.end(), container_result.begin(), container_result.end() ); } } } return result; }
void Description::deleteWidgets() { for (WidgetsList::iterator i = widgets.begin(); i != widgets.end(); i++) area.remove(*i); widgets.clear(); }
void ListBox::sortItems() { WidgetsList widgets = getChildren(); std::sort(widgets.begin(), widgets.end(), &sort_by_text); // Remove all children and add then again. removeAllChildren(); for (Widget* child : widgets) addChild(child); }
void Workspace::updateTabs() { WidgetsList children = this->children(); while (!children.empty()) { Widget* child = children.back(); children.erase(--children.end()); if (child->type() == WorkspacePanel::Type()) static_cast<WorkspacePanel*>(child)->tabs()->updateTabs(); for (auto subchild : child->children()) children.push_back(subchild); } }