static const char * panel_applet_get_toplevel_id (AppletInfo *applet) { PanelWidget *panel_widget; g_return_val_if_fail (applet != NULL, NULL); g_return_val_if_fail (GTK_IS_WIDGET (applet->widget), NULL); panel_widget = panel_applet_get_panel_widget (applet); if (!panel_widget) return NULL; return panel_toplevel_get_id (panel_widget->toplevel); }
void panel_action_button_create (PanelToplevel *toplevel, PanelObjectPackType pack_type, int pack_index, PanelActionButtonType type) { const char *detail; detail = gconf_enum_to_string (panel_action_type_map, type); panel_layout_object_create (PANEL_OBJECT_ACTION, detail, panel_toplevel_get_id (toplevel), pack_type, pack_index); }
static void panel_delete_without_query (PanelToplevel *toplevel) { panel_layout_delete_toplevel (panel_toplevel_get_id (toplevel)); }
static void panel_layout_changed_toplevel (void) { char **ids; GSList *to_remove; gboolean loading; gboolean found; const char *id; GSList *l; int i; ids = g_settings_get_strv (layout_settings, PANEL_LAYOUT_TOPLEVEL_ID_LIST_KEY); /* Remove what is not in the layout anymore */ to_remove = NULL; for (l = panel_toplevel_list_toplevels (); l != NULL; l = l->next) { id = panel_toplevel_get_id (l->data); found = FALSE; for (i = 0; ids[i] != NULL; i++) { if (g_strcmp0 (ids[i], id) == 0) { found = TRUE; break; } } if (!found) to_remove = g_slist_prepend (to_remove, l->data); } for (l = to_remove; l != NULL; l = l->next) gtk_widget_destroy (GTK_WIDGET (l->data)); g_slist_free (to_remove); /* Add what appeared in the layout */ loading = FALSE; for (i = 0; ids[i] != NULL; i++) { found = FALSE; for (l = panel_toplevel_list_toplevels (); l != NULL; l = l->next) { id = panel_toplevel_get_id (l->data); if (g_strcmp0 (ids[i], id) == 0) { found = TRUE; break; } } if (!found) { panel_layout_load_toplevel (ids[i]); loading = TRUE; } } g_strfreev (ids); /* Reload list of objects to get those that might be on the new * toplevels */ if (loading) panel_layout_changed_object (); }