mirror of
https://github.com/ZoiteChat/zoitechat.git
synced 2026-05-16 21:50:20 +00:00
Refresh menu sizing after theme switch
This commit is contained in:
@@ -3566,6 +3566,44 @@ mg_theme_userlist_changed (const ThemeChangedEvent *event, gpointer userdata)
|
|||||||
mg_theme_apply_userlist_style (gui);
|
mg_theme_apply_userlist_style (gui);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
mg_theme_refresh_menu_widget (GtkWidget *widget)
|
||||||
|
{
|
||||||
|
GtkRequisition minimum;
|
||||||
|
GtkRequisition natural;
|
||||||
|
|
||||||
|
if (!widget)
|
||||||
|
return;
|
||||||
|
|
||||||
|
gtk_widget_queue_resize (widget);
|
||||||
|
gtk_widget_get_preferred_size (widget, &minimum, &natural);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
mg_theme_refresh_menu_tree (GtkWidget *menu)
|
||||||
|
{
|
||||||
|
GList *children;
|
||||||
|
GList *node;
|
||||||
|
|
||||||
|
if (!menu || !GTK_IS_MENU_SHELL (menu))
|
||||||
|
return;
|
||||||
|
|
||||||
|
children = gtk_container_get_children (GTK_CONTAINER (menu));
|
||||||
|
for (node = children; node; node = node->next)
|
||||||
|
{
|
||||||
|
GtkWidget *item = GTK_WIDGET (node->data);
|
||||||
|
GtkWidget *submenu = NULL;
|
||||||
|
|
||||||
|
if (GTK_IS_MENU_ITEM (item))
|
||||||
|
submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (item));
|
||||||
|
if (submenu)
|
||||||
|
mg_theme_refresh_menu_tree (submenu);
|
||||||
|
mg_theme_refresh_menu_widget (item);
|
||||||
|
}
|
||||||
|
g_list_free (children);
|
||||||
|
mg_theme_refresh_menu_widget (menu);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
mg_theme_window_changed (const ThemeChangedEvent *event, gpointer userdata)
|
mg_theme_window_changed (const ThemeChangedEvent *event, gpointer userdata)
|
||||||
{
|
{
|
||||||
@@ -3576,8 +3614,11 @@ mg_theme_window_changed (const ThemeChangedEvent *event, gpointer userdata)
|
|||||||
!theme_changed_event_has_reason (event, THEME_CHANGED_REASON_WIDGET_STYLE))
|
!theme_changed_event_has_reason (event, THEME_CHANGED_REASON_WIDGET_STYLE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (gui)
|
if (!gui)
|
||||||
|
return;
|
||||||
|
|
||||||
theme_manager_apply_to_window (gui->window);
|
theme_manager_apply_to_window (gui->window);
|
||||||
|
mg_theme_refresh_menu_tree (gui->menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|||||||
Reference in New Issue
Block a user