void Container::EnableChildren() { for (std::vector< RefCountedPtr<Widget> >::iterator i = m_widgets.begin(); i != m_widgets.end(); ++i) { Widget *w = (*i).Get(); w->SetDisabled(false); if (w->IsContainer()) { static_cast<Container*>(w)->EnableChildren(); } } }
Widget *Container::GetWidgetAt(const Point &pos) { if (!Contains(pos)) return 0; for (WidgetIterator i = WidgetsBegin(); i != WidgetsEnd(); ++i) { Widget *widget = (*i).Get(); const Point relpos = pos - widget->GetPosition() - widget->GetDrawOffset(); if (widget->IsContainer()) { Widget* w = static_cast<Container*>(widget)->GetWidgetAt(relpos); if (w) return w; } else if (widget->Contains(relpos)) return widget; } return this; }
void Container::CollectShortcuts(std::map<KeySym,Widget*> &shortcuts) { { const std::set<KeySym> &widgetShortcuts = GetShortcuts(); if (!widgetShortcuts.empty()) for (std::set<KeySym>::const_iterator j = widgetShortcuts.begin(); j != widgetShortcuts.end(); ++j) shortcuts[*j] = this; } for (WidgetIterator i = WidgetsBegin(); i != WidgetsEnd(); ++i) { Widget *widget = (*i).Get(); if (widget->IsContainer()) static_cast<Container*>(widget)->CollectShortcuts(shortcuts); else { const std::set<KeySym> &widgetShortcuts = widget->GetShortcuts(); if (!widgetShortcuts.empty()) for (std::set<KeySym>::const_iterator j = widgetShortcuts.begin(); j != widgetShortcuts.end(); ++j) shortcuts[*j] = widget; } } }