diff --git a/app/actions/context-commands.c b/app/actions/context-commands.c index 3a08c3ab10..068cd8c29f 100644 --- a/app/actions/context-commands.c +++ b/app/actions/context-commands.c @@ -871,8 +871,8 @@ context_get_palette_editor (void) info = gimp_dialog_factory_find_session_info (dialog_factory, "gimp-palette-editor"); - if (info && info->widget) - return GIMP_PALETTE_EDITOR (gtk_bin_get_child (GTK_BIN (info->widget))); + if (info && gimp_session_info_get_widget (info)) + return GIMP_PALETTE_EDITOR (gtk_bin_get_child (GTK_BIN (gimp_session_info_get_widget (info)))); return NULL; } @@ -889,8 +889,8 @@ context_get_colormap_editor (void) info = gimp_dialog_factory_find_session_info (dialog_factory, "gimp-indexed-palette"); - if (info && info->widget) - return GIMP_COLORMAP_EDITOR (gtk_bin_get_child (GTK_BIN (info->widget))); + if (info && gimp_session_info_get_widget (info)) + return GIMP_COLORMAP_EDITOR (gtk_bin_get_child (GTK_BIN (gimp_session_info_get_widget (info)))); return NULL; } diff --git a/app/display/gimpdisplayshell-cursor.c b/app/display/gimpdisplayshell-cursor.c index 9aa7acb3d0..d20ddbd7ca 100644 --- a/app/display/gimpdisplayshell-cursor.c +++ b/app/display/gimpdisplayshell-cursor.c @@ -165,11 +165,11 @@ gimp_display_shell_update_cursor (GimpDisplayShell *shell, factory = gimp_dialog_factory_from_name ("dock"); session_info = gimp_dialog_factory_find_session_info (factory, "gimp-cursor-view"); - if (session_info && session_info->widget) + if (session_info && gimp_session_info_get_widget (session_info)) { GtkWidget *cursor_view; - cursor_view = gtk_bin_get_child (GTK_BIN (session_info->widget)); + cursor_view = gtk_bin_get_child (GTK_BIN (gimp_session_info_get_widget (session_info))); if (cursor_view) { @@ -201,11 +201,11 @@ gimp_display_shell_clear_cursor (GimpDisplayShell *shell) factory = gimp_dialog_factory_from_name ("dock"); session_info = gimp_dialog_factory_find_session_info (factory, "gimp-cursor-view"); - if (session_info && session_info->widget) + if (session_info && gimp_session_info_get_widget (session_info)) { GtkWidget *cursor_view; - cursor_view = gtk_bin_get_child (GTK_BIN (session_info->widget)); + cursor_view = gtk_bin_get_child (GTK_BIN (gimp_session_info_get_widget (session_info))); if (cursor_view) gimp_cursor_view_clear_cursor (GIMP_CURSOR_VIEW (cursor_view)); diff --git a/app/display/gimpdisplayshell.c b/app/display/gimpdisplayshell.c index cb2b27d937..37435a11ca 100644 --- a/app/display/gimpdisplayshell.c +++ b/app/display/gimpdisplayshell.c @@ -1428,8 +1428,8 @@ gimp_display_shell_empty (GimpDisplayShell *shell) if (session_info) { - width = session_info->width; - height = session_info->height; + width = gimp_session_info_get_width (session_info); + height = gimp_session_info_get_height (session_info); } else { diff --git a/app/gui/gui-message.c b/app/gui/gui-message.c index c6b3879491..0763e3e9d7 100644 --- a/app/gui/gui-message.c +++ b/app/gui/gui-message.c @@ -105,8 +105,8 @@ gui_message_error_console (GimpMessageSeverity severity, info = gimp_dialog_factory_find_session_info (global_dock_factory, "gimp-error-console"); - if (info && GIMP_IS_DOCKABLE (info->widget)) - dockable = info->widget; + if (info && GIMP_IS_DOCKABLE (gimp_session_info_get_widget (info))) + dockable = gimp_session_info_get_widget (info); } if (! dockable) diff --git a/app/gui/gui.c b/app/gui/gui.c index aced28911d..af3b9c4d7b 100644 --- a/app/gui/gui.c +++ b/app/gui/gui.c @@ -675,11 +675,11 @@ gui_device_change_notify (Gimp *gimp) session_info = gimp_dialog_factory_find_session_info (global_dock_factory, "gimp-device-status"); - if (session_info && session_info->widget) + if (session_info && gimp_session_info_get_widget (session_info)) { GtkWidget *device_status; - device_status = gtk_bin_get_child (GTK_BIN (session_info->widget)); + device_status = gtk_bin_get_child (GTK_BIN (gimp_session_info_get_widget (session_info))); gimp_device_status_update (GIMP_DEVICE_STATUS (device_status)); } diff --git a/app/gui/session.c b/app/gui/session.c index 710dcee195..b8c72ff582 100644 --- a/app/gui/session.c +++ b/app/gui/session.c @@ -153,13 +153,20 @@ session_init (Gimp *gimp) */ if (!g_str_equal (entry_name, "dock")) { - info->factory_entry = gimp_dialog_factory_find_entry (factory, - entry_name); - - /* If we expected a dialog factory entry but failed - * to find one, skip to add this session info object - */ - skip = (info->factory_entry == NULL); + GimpDialogFactoryEntry *entry = + gimp_dialog_factory_find_entry (factory, + entry_name); + if (entry) + { + gimp_session_info_set_factory_entry (info, entry); + } + else + { + /* If we expected a dialog factory entry but failed + * to find one, skip to add this session info object + */ + skip = TRUE; + } } g_free (entry_name); diff --git a/app/tools/gimpcolortool.c b/app/tools/gimpcolortool.c index 51d1415952..4f57dee66b 100644 --- a/app/tools/gimpcolortool.c +++ b/app/tools/gimpcolortool.c @@ -646,11 +646,11 @@ gimp_color_tool_real_picked (GimpColorTool *color_tool, { info = gimp_dialog_factory_find_session_info (dialog_factory, "gimp-indexed-palette"); - if (info && info->widget) + if (info && gimp_session_info_get_widget (info)) { GimpColormapEditor *editor; - editor = GIMP_COLORMAP_EDITOR (gtk_bin_get_child (GTK_BIN (info->widget))); + editor = GIMP_COLORMAP_EDITOR (gtk_bin_get_child (GTK_BIN (gimp_session_info_get_widget (info)))); gimp_colormap_editor_set_index (editor, color_index, NULL); } @@ -660,12 +660,12 @@ gimp_color_tool_real_picked (GimpColorTool *color_tool, { info = gimp_dialog_factory_find_session_info (dialog_factory, "gimp-palette-editor"); - if (info && info->widget) + if (info && gimp_session_info_get_widget (info)) { GimpPaletteEditor *editor; gint index; - editor = GIMP_PALETTE_EDITOR (gtk_bin_get_child (GTK_BIN (info->widget))); + editor = GIMP_PALETTE_EDITOR (gtk_bin_get_child (GTK_BIN (gimp_session_info_get_widget (info)))); index = gimp_palette_editor_get_index (editor, color); if (index != -1) diff --git a/app/widgets/gimpdialogfactory.c b/app/widgets/gimpdialogfactory.c index cff0ef2dda..5b9b3cf6ca 100644 --- a/app/widgets/gimpdialogfactory.c +++ b/app/widgets/gimpdialogfactory.c @@ -387,8 +387,9 @@ gimp_dialog_factory_find_session_info (GimpDialogFactory *factory, { GimpSessionInfo *info = list->data; - if (info->factory_entry && - g_str_equal (identifier, info->factory_entry->identifier)) + if (gimp_session_info_get_factory_entry (info) && + g_str_equal (identifier, + gimp_session_info_get_factory_entry (info)->identifier)) { return info; } @@ -472,7 +473,7 @@ gimp_dialog_factory_dialog_new_internal (GimpDialogFactory *factory, info = gimp_dialog_factory_find_session_info (factory, identifier); if (info) - dialog = info->widget; + dialog = gimp_session_info_get_widget (info); } /* create the dialog if it was not found */ @@ -682,7 +683,7 @@ gimp_dialog_factory_dialog_raise (GimpDialogFactory *factory, GimpSessionInfo *info; info = gimp_dialog_factory_find_session_info (factory, ids[i]); - if (info && info->widget) + if (info && gimp_session_info_get_widget (info)) break; } @@ -821,9 +822,9 @@ gimp_dialog_factory_add_dialog (GimpDialogFactory *factory, { GimpSessionInfo *current_info = list->data; - if (current_info->factory_entry == entry) + if (gimp_session_info_get_factory_entry (current_info) == entry) { - if (current_info->widget) + if (gimp_session_info_get_widget (current_info)) { if (gimp_session_info_is_singleton (current_info)) { @@ -832,7 +833,8 @@ gimp_dialog_factory_add_dialog (GimpDialogFactory *factory, GIMP_LOG (DIALOG_FACTORY, "corrupt session info: %p (widget %p)", - current_info, current_info->widget); + current_info, + gimp_session_info_get_widget (current_info)); return; } @@ -840,11 +842,11 @@ gimp_dialog_factory_add_dialog (GimpDialogFactory *factory, continue; } - current_info->widget = dialog; + gimp_session_info_set_widget (current_info, dialog); GIMP_LOG (DIALOG_FACTORY, "updating session info %p (widget %p) for %s \"%s\"", - current_info, current_info->widget, + current_info, gimp_session_info_get_widget (current_info), toplevel ? "toplevel" : "dockable", entry->identifier); @@ -864,15 +866,15 @@ gimp_dialog_factory_add_dialog (GimpDialogFactory *factory, { info = gimp_session_info_new (); - info->widget = dialog; + gimp_session_info_set_widget (info, dialog); GIMP_LOG (DIALOG_FACTORY, "creating session info %p (widget %p) for %s \"%s\"", - info, info->widget, + info, gimp_session_info_get_widget (info), toplevel ? "toplevel" : "dockable", entry->identifier); - info->factory_entry = entry; + gimp_session_info_set_factory_entry (info, entry); /* if we create a new session info, we never call * gimp_session_info_apply_geometry(), but still the @@ -896,14 +898,14 @@ gimp_dialog_factory_add_dialog (GimpDialogFactory *factory, GimpSessionInfo *current_info = list->data; /* take the first empty slot */ - if (! current_info->factory_entry && - ! current_info->widget) + if (! gimp_session_info_get_factory_entry (current_info) && + ! gimp_session_info_get_widget (current_info)) { - current_info->widget = dialog; + gimp_session_info_set_widget (current_info, dialog); GIMP_LOG (DIALOG_FACTORY, "updating session info %p (widget %p) for dock", - current_info, current_info->widget); + current_info, gimp_session_info_get_widget (current_info)); gimp_session_info_apply_geometry (current_info); @@ -917,11 +919,11 @@ gimp_dialog_factory_add_dialog (GimpDialogFactory *factory, { info = gimp_session_info_new (); - info->widget = dialog; + gimp_session_info_set_widget (info, dialog); GIMP_LOG (DIALOG_FACTORY, "creating session info %p (widget %p) for dock", - info, info->widget); + info, gimp_session_info_get_widget (info)); /* let new docks appear at the pointer position */ gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); @@ -1032,14 +1034,14 @@ gimp_dialog_factory_remove_dialog (GimpDialogFactory *factory, { GimpSessionInfo *session_info = list->data; - if (session_info->widget == dialog) + if (gimp_session_info_get_widget (session_info) == dialog) { GIMP_LOG (DIALOG_FACTORY, "clearing session info %p (widget %p) for \"%s\"", - session_info, session_info->widget, + session_info, gimp_session_info_get_widget (session_info), entry ? entry->identifier : "dock"); - session_info->widget = NULL; + gimp_session_info_set_widget (session_info, NULL); gimp_dialog_factory_unset_widget_data (dialog); @@ -1375,7 +1377,7 @@ gimp_dialog_factory_dialog_configure (GtkWidget *dialog, { GimpSessionInfo *session_info = list->data; - if (session_info->widget == dialog) + if (gimp_session_info_get_widget (session_info) == dialog) { gimp_session_info_read_geometry (session_info); @@ -1383,8 +1385,10 @@ gimp_dialog_factory_dialog_configure (GtkWidget *dialog, "updated session info for \"%s\" from window geometry " "(x=%d y=%d %dx%d)", entry ? entry->identifier : "dock", - session_info->x, session_info->y, - session_info->width, session_info->height); + gimp_session_info_get_x (session_info), + gimp_session_info_get_y (session_info), + gimp_session_info_get_width (session_info), + gimp_session_info_get_height (session_info)); break; } @@ -1411,15 +1415,15 @@ gimp_dialog_factories_save_foreach (gconstpointer key, if (! gimp_session_info_is_session_managed (info)) continue; - if (info->widget) + if (gimp_session_info_get_widget (info)) gimp_session_info_get_info (info); gimp_config_writer_open (writer, "session-info"); gimp_config_writer_string (writer, gimp_object_get_name (factory)); gimp_config_writer_string (writer, - info->factory_entry ? - info->factory_entry->identifier : + gimp_session_info_get_factory_entry (info) ? + gimp_session_info_get_factory_entry (info)->identifier : "dock"); GIMP_CONFIG_GET_INTERFACE (info)->serialize (GIMP_CONFIG (info), @@ -1428,7 +1432,7 @@ gimp_dialog_factories_save_foreach (gconstpointer key, gimp_config_writer_close (writer); - if (info->widget) + if (gimp_session_info_get_widget (info)) gimp_session_info_clear_info (info); } } @@ -1444,7 +1448,7 @@ gimp_dialog_factories_restore_foreach (gconstpointer key, { GimpSessionInfo *info = infos->data; - if (info->open) + if (gimp_session_info_get_open (info)) { gimp_session_info_restore (info, factory); gimp_session_info_clear_info (info); @@ -1463,7 +1467,7 @@ gimp_dialog_factories_clear_foreach (gconstpointer key, { GimpSessionInfo *info = list->data; - if (info->widget) + if (gimp_session_info_get_widget (info)) continue; /* FIXME: implement session info deletion */ diff --git a/app/widgets/gimpdockwindow.c b/app/widgets/gimpdockwindow.c index 9973a5542a..d8f073a7f7 100644 --- a/app/widgets/gimpdockwindow.c +++ b/app/widgets/gimpdockwindow.c @@ -434,9 +434,9 @@ gimp_dock_window_delete_event (GtkWidget *widget, gimp_object_set_name (GIMP_OBJECT (info), gtk_window_get_title (GTK_WINDOW (dock_window))); - info->widget = GTK_WIDGET (dock); + gimp_session_info_set_widget (info, GTK_WIDGET (dock)); gimp_session_info_get_info (info); - info->widget = NULL; + gimp_session_info_set_widget (info, NULL); gimp_container_add (global_recent_docks, GIMP_OBJECT (info)); g_object_unref (info); diff --git a/app/widgets/gimpsessioninfo.c b/app/widgets/gimpsessioninfo.c index 55bbd26823..b2ee187f14 100644 --- a/app/widgets/gimpsessioninfo.c +++ b/app/widgets/gimpsessioninfo.c @@ -654,3 +654,77 @@ gimp_session_info_get_remember_if_open (GimpSessionInfo *info) (info->factory_entry && info->factory_entry->remember_if_open)); } + +GtkWidget * +gimp_session_info_get_widget (GimpSessionInfo *info) +{ + g_return_val_if_fail (GIMP_IS_SESSION_INFO (info), FALSE); + + return info->widget; +} + +void +gimp_session_info_set_widget (GimpSessionInfo *info, + GtkWidget *widget) +{ + g_return_if_fail (GIMP_IS_SESSION_INFO (info)); + + info->widget = widget; +} + +GimpDialogFactoryEntry * +gimp_session_info_get_factory_entry (GimpSessionInfo *info) +{ + g_return_val_if_fail (GIMP_IS_SESSION_INFO (info), FALSE); + + return info->factory_entry; +} + +void +gimp_session_info_set_factory_entry (GimpSessionInfo *info, + GimpDialogFactoryEntry *entry) +{ + g_return_if_fail (GIMP_IS_SESSION_INFO (info)); + + info->factory_entry = entry; +} + +gboolean +gimp_session_info_get_open (GimpSessionInfo *info) +{ + g_return_val_if_fail (GIMP_IS_SESSION_INFO (info), FALSE); + + return info->open; +} + +gint +gimp_session_info_get_x (GimpSessionInfo *info) +{ + g_return_val_if_fail (GIMP_IS_SESSION_INFO (info), 0); + + return info->x; +} + +gint +gimp_session_info_get_y (GimpSessionInfo *info) +{ + g_return_val_if_fail (GIMP_IS_SESSION_INFO (info), 0); + + return info->y; +} + +gint +gimp_session_info_get_width (GimpSessionInfo *info) +{ + g_return_val_if_fail (GIMP_IS_SESSION_INFO (info), 0); + + return info->width; +} + +gint +gimp_session_info_get_height (GimpSessionInfo *info) +{ + g_return_val_if_fail (GIMP_IS_SESSION_INFO (info), 0); + + return info->height; +} diff --git a/app/widgets/gimpsessioninfo.h b/app/widgets/gimpsessioninfo.h index 124976b276..7c6d494b2b 100644 --- a/app/widgets/gimpsessioninfo.h +++ b/app/widgets/gimpsessioninfo.h @@ -74,18 +74,31 @@ struct _GimpSessionInfoClass }; -GType gimp_session_info_get_type (void) G_GNUC_CONST; -GimpSessionInfo * gimp_session_info_new (void); -void gimp_session_info_restore (GimpSessionInfo *info, - GimpDialogFactory *factory); -void gimp_session_info_apply_geometry (GimpSessionInfo *info); -void gimp_session_info_read_geometry (GimpSessionInfo *info); -void gimp_session_info_get_info (GimpSessionInfo *info); -void gimp_session_info_clear_info (GimpSessionInfo *info); -gboolean gimp_session_info_is_singleton (GimpSessionInfo *info); -gboolean gimp_session_info_is_session_managed (GimpSessionInfo *info); -gboolean gimp_session_info_get_remember_size (GimpSessionInfo *info); -gboolean gimp_session_info_get_remember_if_open (GimpSessionInfo *info); +GType gimp_session_info_get_type (void) G_GNUC_CONST; +GimpSessionInfo * gimp_session_info_new (void); +void gimp_session_info_restore (GimpSessionInfo *info, + GimpDialogFactory *factory); +void gimp_session_info_apply_geometry (GimpSessionInfo *info); +void gimp_session_info_read_geometry (GimpSessionInfo *info); +void gimp_session_info_get_info (GimpSessionInfo *info); +void gimp_session_info_clear_info (GimpSessionInfo *info); +gboolean gimp_session_info_is_singleton (GimpSessionInfo *info); +gboolean gimp_session_info_is_session_managed (GimpSessionInfo *info); +gboolean gimp_session_info_get_remember_size (GimpSessionInfo *info); +gboolean gimp_session_info_get_remember_if_open (GimpSessionInfo *info); +GtkWidget * gimp_session_info_get_widget (GimpSessionInfo *info); +void gimp_session_info_set_widget (GimpSessionInfo *info, + GtkWidget *widget); +GimpDialogFactoryEntry * gimp_session_info_get_factory_entry (GimpSessionInfo *info); +void gimp_session_info_set_factory_entry (GimpSessionInfo *info, + GimpDialogFactoryEntry *entry); +gboolean gimp_session_info_get_open (GimpSessionInfo *info); +void gimp_session_info_append_book (GimpSessionInfo *info, + GimpSessionInfoBook *book); +gint gimp_session_info_get_x (GimpSessionInfo *info); +gint gimp_session_info_get_y (GimpSessionInfo *info); +gint gimp_session_info_get_width (GimpSessionInfo *info); +gint gimp_session_info_get_height (GimpSessionInfo *info); #endif /* __GIMP_SESSION_INFO_H__ */