Commit c10ef04b9a7524946eb3d9f9f0b75124fc88e61f
1 parent
8338dec5
Exists in
master
and in
2 other branches
Auto updating toolbar when icon style changes.
Showing
1 changed file
with
31 additions
and
0 deletions
Show diff stats
src/objects/toolbar/toolbar.c
... | ... | @@ -296,8 +296,39 @@ |
296 | 296 | } |
297 | 297 | |
298 | 298 | void pw3270_toolbar_set_icon_type(GtkToolbar *toolbar, gint icon_type) { |
299 | + | |
300 | + if(PW3270_TOOLBAR(toolbar)->icon_type == icon_type) | |
301 | + return; | |
302 | + | |
299 | 303 | PW3270_TOOLBAR(toolbar)->icon_type = icon_type; |
304 | + | |
305 | + // Redefine icon types | |
306 | + GList * children = gtk_container_get_children(GTK_CONTAINER(toolbar)); | |
307 | + GList * item; | |
308 | + | |
309 | + for(item = children;item;item = g_list_next(item)) { | |
310 | + | |
311 | + if(GTK_IS_TOOL_BUTTON(item->data)) { | |
312 | + | |
313 | + g_autofree gchar * icon_name = g_strdup(gtk_tool_button_get_icon_name(GTK_TOOL_BUTTON(item->data))); | |
314 | + if(g_str_has_suffix(icon_name,"-symbolic")) { | |
315 | + icon_name[strlen(icon_name)-9] = 0; | |
316 | + } | |
317 | + | |
318 | + if(icon_type) { | |
319 | + g_autofree gchar * new_name = g_strconcat(icon_name,"-symbolic",NULL); | |
320 | + gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(item->data),new_name); | |
321 | + } else { | |
322 | + gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(item->data),icon_name); | |
323 | + } | |
324 | + | |
325 | + } | |
326 | + | |
327 | + } | |
328 | + | |
329 | + g_list_free(children); | |
300 | 330 | g_object_notify(G_OBJECT(toolbar), "icon-type"); |
331 | + | |
301 | 332 | } |
302 | 333 | |
303 | 334 | void pw3270_toolbar_set_icon_size(GtkToolbar *toolbar, GtkIconSize icon_size) { | ... | ... |