static void gimp_session_info_finalize (GObject *object) { GimpSessionInfo *info = GIMP_SESSION_INFO (object); gimp_session_info_clear_info (info); gimp_session_info_set_widget (info, NULL); G_OBJECT_CLASS (parent_class)->finalize (object); }
static gboolean gimp_session_info_restore_docks (GimpRestoreDocksData *data) { GimpSessionInfo *info = data->info; GimpDialogFactory *factory = data->factory; GdkScreen *screen = data->screen; gint monitor = data->monitor; GtkWidget *dialog = data->dialog; GList *iter; if (GIMP_IS_DOCK_CONTAINER (dialog)) { /* We expect expect there to always be docks. In sessionrc files * from <= 2.6 not all dock window entries had dock entries, but we * take care of that during sessionrc parsing */ for (iter = info->p->docks; iter; iter = g_list_next (iter)) { GimpSessionInfoDock *dock_info = (GimpSessionInfoDock *) iter->data; GtkWidget *dock; dock = GTK_WIDGET (gimp_session_info_dock_restore (dock_info, factory, screen, monitor, GIMP_DOCK_CONTAINER (dialog))); if (dock && dock_info->position != 0) { GtkWidget *parent = gtk_widget_get_parent (dock); if (GTK_IS_PANED (parent)) { GtkPaned *paned = GTK_PANED (parent); if (dock == gtk_paned_get_child2 (paned)) gtk_paned_set_position (paned, dock_info->position); } } } } gimp_session_info_clear_info (info); g_object_unref (dialog); g_object_unref (screen); g_object_unref (factory); g_object_unref (info); g_slice_free (GimpRestoreDocksData, data); return FALSE; }
static void gimp_dialog_factories_restore_foreach (gconstpointer key, GimpDialogFactory *factory, gpointer data) { GList *infos; for (infos = factory->session_infos; infos; infos = g_list_next (infos)) { GimpSessionInfo *info = infos->data; if (info->open) { gimp_session_info_restore (info, factory); gimp_session_info_clear_info (info); } } }
static void gimp_dialog_factories_save_foreach (gconstpointer key, GimpDialogFactory *factory, GimpConfigWriter *writer) { GList *infos; for (infos = factory->session_infos; infos; infos = g_list_next (infos)) { GimpSessionInfo *info = infos->data; /* we keep session info entries for all toplevel dialogs created * by the factory but don't save them if they don't want to be * managed */ if (info->dockable_entry || (info->toplevel_entry && ! info->toplevel_entry->session_managed)) continue; if (info->widget) gimp_session_info_get_info (info); gimp_config_writer_open (writer, "session-info"); gimp_config_writer_string (writer, gimp_object_get_name (GIMP_OBJECT (factory))); gimp_config_writer_string (writer, info->toplevel_entry ? info->toplevel_entry->identifier : "dock"); GIMP_CONFIG_GET_INTERFACE (info)->serialize (GIMP_CONFIG (info), writer, NULL); gimp_config_writer_close (writer); if (info->widget) gimp_session_info_clear_info (info); } }