diff --git a/app/tests.c b/app/tests.c index 5633e3e0a7..048543e37e 100644 --- a/app/tests.c +++ b/app/tests.c @@ -99,8 +99,7 @@ static Gimp * gimp_init_for_gui_testing_internal (gboolean show_gui, GFile *gimprc) { - GimpSessionInfoClass *klass; - Gimp *gimp; + Gimp *gimp; #if defined (G_OS_WIN32) /* g_test_init() sets warnings always fatal, which is a usually a good @@ -119,8 +118,7 @@ gimp_init_for_gui_testing_internal (gboolean show_gui, gegl_init (NULL, NULL); /* Introduce an error margin for positions written to sessionrc */ - klass = g_type_class_ref (GIMP_TYPE_SESSION_INFO); - gimp_session_info_class_set_position_accuracy (klass, 5); + gimp_session_info_set_position_accuracy (5); /* from app_run() */ gimp = gimp_new ("Unit Tested GIMP", NULL, NULL, FALSE, TRUE, TRUE, !show_gui, @@ -135,8 +133,6 @@ gimp_init_for_gui_testing_internal (gboolean show_gui, gimp_initialize (gimp, gimp_status_func_dummy); gimp_restore (gimp, gimp_status_func_dummy); - g_type_class_unref (klass); - return gimp; } diff --git a/app/widgets/gimpsessioninfo-book.c b/app/widgets/gimpsessioninfo-book.c index f46de22548..42ca5add79 100644 --- a/app/widgets/gimpsessioninfo-book.c +++ b/app/widgets/gimpsessioninfo-book.c @@ -31,9 +31,9 @@ #include "gimpdialogfactory.h" #include "gimpdock.h" #include "gimpdockbook.h" +#include "gimpsessioninfo.h" #include "gimpsessioninfo-book.h" #include "gimpsessioninfo-dockable.h" -#include "gimpwidgets-utils.h" enum @@ -79,7 +79,15 @@ gimp_session_info_book_serialize (GimpConfigWriter *writer, gimp_config_writer_open (writer, "book"); if (info->position != 0) - gimp_session_write_position (writer, info->position); + { + gint position; + + position = gimp_session_info_apply_position_accuracy (info->position); + + gimp_config_writer_open (writer, "position"); + gimp_config_writer_printf (writer, "%d", position); + gimp_config_writer_close (writer); + } gimp_config_writer_open (writer, "current-page"); gimp_config_writer_printf (writer, "%d", info->current_page); diff --git a/app/widgets/gimpsessioninfo-dock.c b/app/widgets/gimpsessioninfo-dock.c index 9d2f2db577..e5e8f9a2d8 100644 --- a/app/widgets/gimpsessioninfo-dock.c +++ b/app/widgets/gimpsessioninfo-dock.c @@ -33,12 +33,12 @@ #include "gimpdockbook.h" #include "gimpdockcontainer.h" #include "gimpdockwindow.h" +#include "gimpsessioninfo.h" #include "gimpsessioninfo-aux.h" #include "gimpsessioninfo-book.h" #include "gimpsessioninfo-dock.h" #include "gimpsessioninfo-private.h" #include "gimptoolbox.h" -#include "gimpwidgets-utils.h" enum @@ -126,7 +126,15 @@ gimp_session_info_dock_serialize (GimpConfigWriter *writer, } if (dock_info->position != 0) - gimp_session_write_position (writer, dock_info->position); + { + gint position; + + position = gimp_session_info_apply_position_accuracy (dock_info->position); + + gimp_config_writer_open (writer, "position"); + gimp_config_writer_printf (writer, "%d", position); + gimp_config_writer_close (writer); + } for (list = dock_info->books; list; list = g_list_next (list)) gimp_session_info_book_serialize (writer, list->data); diff --git a/app/widgets/gimpsessioninfo.c b/app/widgets/gimpsessioninfo.c index 00b40bfdcd..35ba739b02 100644 --- a/app/widgets/gimpsessioninfo.c +++ b/app/widgets/gimpsessioninfo.c @@ -162,13 +162,12 @@ gimp_session_info_serialize (GimpConfig *config, GimpConfigWriter *writer, gpointer data) { - GimpSessionInfo *info = GIMP_SESSION_INFO (config); - GimpSessionInfoClass *klass = GIMP_SESSION_INFO_GET_CLASS (info); - GList *iter = NULL; - gint x_to_write; - gint y_to_write; - gint w_to_write; - gint h_to_write; + GimpSessionInfo *info = GIMP_SESSION_INFO (config); + GList *iter = NULL; + gint x; + gint y; + gint width; + gint height; if (info->p->factory_entry && info->p->factory_entry->identifier) { @@ -177,23 +176,19 @@ gimp_session_info_serialize (GimpConfig *config, gimp_config_writer_close (writer); } - x_to_write = gimp_session_info_class_apply_position_accuracy (klass, - info->p->x); - y_to_write = gimp_session_info_class_apply_position_accuracy (klass, - info->p->y); - w_to_write = gimp_session_info_class_apply_position_accuracy (klass, - info->p->width); - h_to_write = gimp_session_info_class_apply_position_accuracy (klass, - info->p->height); + x = gimp_session_info_apply_position_accuracy (info->p->x); + y = gimp_session_info_apply_position_accuracy (info->p->y); + width = gimp_session_info_apply_position_accuracy (info->p->width); + height = gimp_session_info_apply_position_accuracy (info->p->height); gimp_config_writer_open (writer, "position"); - gimp_config_writer_printf (writer, "%d %d", x_to_write, y_to_write); + gimp_config_writer_printf (writer, "%d %d", x, y); gimp_config_writer_close (writer); if (info->p->width > 0 && info->p->height > 0) { gimp_config_writer_open (writer, "size"); - gimp_config_writer_printf (writer, "%d %d", w_to_write, h_to_write); + gimp_config_writer_printf (writer, "%d %d", width, height); gimp_config_writer_close (writer); } @@ -1046,8 +1041,10 @@ gimp_session_info_get_height (GimpSessionInfo *info) return info->p->height; } +static gint position_accuracy = 0; + /** - * gimp_session_info_class_set_position_accuracy: + * gimp_session_info_set_position_accuracy: * @accuracy: * * When writing sessionrc, make positions and sizes a multiple of @@ -1057,34 +1054,28 @@ gimp_session_info_get_height (GimpSessionInfo *info) * might impose. **/ void -gimp_session_info_class_set_position_accuracy (GimpSessionInfoClass *klass, - gint accuracy) +gimp_session_info_set_position_accuracy (gint accuracy) { - g_return_if_fail (GIMP_IS_SESSION_INFO_CLASS (klass)); - - klass->position_accuracy = accuracy; + position_accuracy = accuracy; } /** - * gimp_session_info_class_apply_position_accuracy: + * gimp_session_info_apply_position_accuracy: * @position: * * Rounds @position to the nearest multiple of what was set with - * gimp_session_info_class_set_position_accuracy(). + * gimp_session_info_set_position_accuracy(). * * Returns: Result. **/ gint -gimp_session_info_class_apply_position_accuracy (GimpSessionInfoClass *klass, - gint position) +gimp_session_info_apply_position_accuracy (gint position) { - g_return_val_if_fail (GIMP_IS_SESSION_INFO_CLASS (klass), position); - - if (klass->position_accuracy > 0) + if (position_accuracy > 0) { - gint to_floor = position + klass->position_accuracy / 2; + gint to_floor = position + position_accuracy / 2; - return to_floor - to_floor % klass->position_accuracy; + return to_floor - to_floor % position_accuracy; } return position; diff --git a/app/widgets/gimpsessioninfo.h b/app/widgets/gimpsessioninfo.h index c631f80ca0..db5f7e975a 100644 --- a/app/widgets/gimpsessioninfo.h +++ b/app/widgets/gimpsessioninfo.h @@ -52,48 +52,48 @@ struct _GimpSessionInfo struct _GimpSessionInfoClass { GimpObjectClass parent_class; - - gint position_accuracy; }; -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, - GdkScreen *screen, - gint monitor); -void gimp_session_info_apply_geometry (GimpSessionInfo *info, - GdkScreen *screen, - gint current_monitor, - gboolean apply_stored_monitor); -void gimp_session_info_read_geometry (GimpSessionInfo *info, - GdkEventConfigure *cevent); -void gimp_session_info_get_info (GimpSessionInfo *info); -void gimp_session_info_get_info_with_widget (GimpSessionInfo *info, - GtkWidget *widget); -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); -void gimp_session_info_class_set_position_accuracy (GimpSessionInfoClass *klass, - gint accuracy); -gint gimp_session_info_class_apply_position_accuracy (GimpSessionInfoClass *klass, - gint position); +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, + GdkScreen *screen, + gint monitor); +void gimp_session_info_apply_geometry (GimpSessionInfo *info, + GdkScreen *screen, + gint current_monitor, + gboolean apply_stored_monitor); +void gimp_session_info_read_geometry (GimpSessionInfo *info, + GdkEventConfigure *cevent); +void gimp_session_info_get_info (GimpSessionInfo *info); +void gimp_session_info_get_info_with_widget (GimpSessionInfo *info, + GtkWidget *widget); +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); + +void gimp_session_info_set_position_accuracy (gint accuracy); +gint gimp_session_info_apply_position_accuracy (gint position); #endif /* __GIMP_SESSION_INFO_H__ */ diff --git a/app/widgets/gimpwidgets-utils.c b/app/widgets/gimpwidgets-utils.c index 263b83763f..725ffd8b9c 100644 --- a/app/widgets/gimpwidgets-utils.c +++ b/app/widgets/gimpwidgets-utils.c @@ -1386,23 +1386,3 @@ gimp_print_event (const GdkEvent *event) return str; } - -void -gimp_session_write_position (GimpConfigWriter *writer, - gint position) -{ - GimpSessionInfoClass *klass; - gint pos_to_write; - - klass = g_type_class_ref (GIMP_TYPE_SESSION_INFO); - - pos_to_write = - gimp_session_info_class_apply_position_accuracy (klass, - position); - - gimp_config_writer_open (writer, "position"); - gimp_config_writer_printf (writer, "%d", pos_to_write); - gimp_config_writer_close (writer); - - g_type_class_unref (klass); -} diff --git a/app/widgets/gimpwidgets-utils.h b/app/widgets/gimpwidgets-utils.h index e2a3f59b76..c8d9102a24 100644 --- a/app/widgets/gimpwidgets-utils.h +++ b/app/widgets/gimpwidgets-utils.h @@ -109,8 +109,5 @@ void gimp_widget_set_fully_opaque (GtkWidget *widget const gchar * gimp_print_event (const GdkEvent *event); -void gimp_session_write_position (GimpConfigWriter *writer, - gint position); - #endif /* __APP_GIMP_WIDGETS_UTILS_H__ */