#include #include #include "support.h" ui::Widget lookup_widget(ui::Widget widget, const gchar *widget_name) { ui::Widget parent{ui::null}; for (;;) { if (GTK_IS_MENU(widget)) { parent = ui::Widget::from(gtk_menu_get_attach_widget(GTK_MENU(widget))); } else { parent = ui::Widget::from(gtk_widget_get_parent(widget)); } if (!parent) { parent = ui::Widget::from(g_object_get_data(G_OBJECT(widget), "GladeParentKey")); } if (parent == NULL) { break; } widget = parent; } auto found_widget = ui::Widget::from(g_object_get_data(G_OBJECT(widget), widget_name)); if (!found_widget) { g_warning("Widget not found: %s", widget_name); } return found_widget; }