app: remove gimp_session_write_position()

and un-overengineer the session position accuracy code a bit.
This commit is contained in:
Michael Natterer
2016-05-21 00:00:07 +02:00
parent 21742cca1b
commit 9f3052583b
7 changed files with 84 additions and 104 deletions

View File

@ -99,8 +99,7 @@ static Gimp *
gimp_init_for_gui_testing_internal (gboolean show_gui, gimp_init_for_gui_testing_internal (gboolean show_gui,
GFile *gimprc) GFile *gimprc)
{ {
GimpSessionInfoClass *klass; Gimp *gimp;
Gimp *gimp;
#if defined (G_OS_WIN32) #if defined (G_OS_WIN32)
/* g_test_init() sets warnings always fatal, which is a usually a good /* 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); gegl_init (NULL, NULL);
/* Introduce an error margin for positions written to sessionrc */ /* Introduce an error margin for positions written to sessionrc */
klass = g_type_class_ref (GIMP_TYPE_SESSION_INFO); gimp_session_info_set_position_accuracy (5);
gimp_session_info_class_set_position_accuracy (klass, 5);
/* from app_run() */ /* from app_run() */
gimp = gimp_new ("Unit Tested GIMP", NULL, NULL, FALSE, TRUE, TRUE, !show_gui, 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_initialize (gimp, gimp_status_func_dummy);
gimp_restore (gimp, gimp_status_func_dummy); gimp_restore (gimp, gimp_status_func_dummy);
g_type_class_unref (klass);
return gimp; return gimp;
} }

View File

@ -31,9 +31,9 @@
#include "gimpdialogfactory.h" #include "gimpdialogfactory.h"
#include "gimpdock.h" #include "gimpdock.h"
#include "gimpdockbook.h" #include "gimpdockbook.h"
#include "gimpsessioninfo.h"
#include "gimpsessioninfo-book.h" #include "gimpsessioninfo-book.h"
#include "gimpsessioninfo-dockable.h" #include "gimpsessioninfo-dockable.h"
#include "gimpwidgets-utils.h"
enum enum
@ -79,7 +79,15 @@ gimp_session_info_book_serialize (GimpConfigWriter *writer,
gimp_config_writer_open (writer, "book"); gimp_config_writer_open (writer, "book");
if (info->position != 0) 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_open (writer, "current-page");
gimp_config_writer_printf (writer, "%d", info->current_page); gimp_config_writer_printf (writer, "%d", info->current_page);

View File

@ -33,12 +33,12 @@
#include "gimpdockbook.h" #include "gimpdockbook.h"
#include "gimpdockcontainer.h" #include "gimpdockcontainer.h"
#include "gimpdockwindow.h" #include "gimpdockwindow.h"
#include "gimpsessioninfo.h"
#include "gimpsessioninfo-aux.h" #include "gimpsessioninfo-aux.h"
#include "gimpsessioninfo-book.h" #include "gimpsessioninfo-book.h"
#include "gimpsessioninfo-dock.h" #include "gimpsessioninfo-dock.h"
#include "gimpsessioninfo-private.h" #include "gimpsessioninfo-private.h"
#include "gimptoolbox.h" #include "gimptoolbox.h"
#include "gimpwidgets-utils.h"
enum enum
@ -126,7 +126,15 @@ gimp_session_info_dock_serialize (GimpConfigWriter *writer,
} }
if (dock_info->position != 0) 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)) for (list = dock_info->books; list; list = g_list_next (list))
gimp_session_info_book_serialize (writer, list->data); gimp_session_info_book_serialize (writer, list->data);

View File

@ -162,13 +162,12 @@ gimp_session_info_serialize (GimpConfig *config,
GimpConfigWriter *writer, GimpConfigWriter *writer,
gpointer data) gpointer data)
{ {
GimpSessionInfo *info = GIMP_SESSION_INFO (config); GimpSessionInfo *info = GIMP_SESSION_INFO (config);
GimpSessionInfoClass *klass = GIMP_SESSION_INFO_GET_CLASS (info); GList *iter = NULL;
GList *iter = NULL; gint x;
gint x_to_write; gint y;
gint y_to_write; gint width;
gint w_to_write; gint height;
gint h_to_write;
if (info->p->factory_entry && info->p->factory_entry->identifier) 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); gimp_config_writer_close (writer);
} }
x_to_write = gimp_session_info_class_apply_position_accuracy (klass, x = gimp_session_info_apply_position_accuracy (info->p->x);
info->p->x); y = gimp_session_info_apply_position_accuracy (info->p->y);
y_to_write = gimp_session_info_class_apply_position_accuracy (klass, width = gimp_session_info_apply_position_accuracy (info->p->width);
info->p->y); height = gimp_session_info_apply_position_accuracy (info->p->height);
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);
gimp_config_writer_open (writer, "position"); 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); gimp_config_writer_close (writer);
if (info->p->width > 0 && info->p->height > 0) if (info->p->width > 0 && info->p->height > 0)
{ {
gimp_config_writer_open (writer, "size"); 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); gimp_config_writer_close (writer);
} }
@ -1046,8 +1041,10 @@ gimp_session_info_get_height (GimpSessionInfo *info)
return info->p->height; return info->p->height;
} }
static gint position_accuracy = 0;
/** /**
* gimp_session_info_class_set_position_accuracy: * gimp_session_info_set_position_accuracy:
* @accuracy: * @accuracy:
* *
* When writing sessionrc, make positions and sizes a multiple of * When writing sessionrc, make positions and sizes a multiple of
@ -1057,34 +1054,28 @@ gimp_session_info_get_height (GimpSessionInfo *info)
* might impose. * might impose.
**/ **/
void void
gimp_session_info_class_set_position_accuracy (GimpSessionInfoClass *klass, gimp_session_info_set_position_accuracy (gint accuracy)
gint accuracy)
{ {
g_return_if_fail (GIMP_IS_SESSION_INFO_CLASS (klass)); position_accuracy = accuracy;
klass->position_accuracy = accuracy;
} }
/** /**
* gimp_session_info_class_apply_position_accuracy: * gimp_session_info_apply_position_accuracy:
* @position: * @position:
* *
* Rounds @position to the nearest multiple of what was set with * 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. * Returns: Result.
**/ **/
gint gint
gimp_session_info_class_apply_position_accuracy (GimpSessionInfoClass *klass, gimp_session_info_apply_position_accuracy (gint position)
gint position)
{ {
g_return_val_if_fail (GIMP_IS_SESSION_INFO_CLASS (klass), position); if (position_accuracy > 0)
if (klass->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; return position;

View File

@ -52,48 +52,48 @@ struct _GimpSessionInfo
struct _GimpSessionInfoClass struct _GimpSessionInfoClass
{ {
GimpObjectClass parent_class; GimpObjectClass parent_class;
gint position_accuracy;
}; };
GType gimp_session_info_get_type (void) G_GNUC_CONST; GType gimp_session_info_get_type (void) G_GNUC_CONST;
GimpSessionInfo * gimp_session_info_new (void);
void gimp_session_info_restore (GimpSessionInfo *info, GimpSessionInfo * gimp_session_info_new (void);
GimpDialogFactory *factory,
GdkScreen *screen, void gimp_session_info_restore (GimpSessionInfo *info,
gint monitor); GimpDialogFactory *factory,
void gimp_session_info_apply_geometry (GimpSessionInfo *info, GdkScreen *screen,
GdkScreen *screen, gint monitor);
gint current_monitor, void gimp_session_info_apply_geometry (GimpSessionInfo *info,
gboolean apply_stored_monitor); GdkScreen *screen,
void gimp_session_info_read_geometry (GimpSessionInfo *info, gint current_monitor,
GdkEventConfigure *cevent); gboolean apply_stored_monitor);
void gimp_session_info_get_info (GimpSessionInfo *info); void gimp_session_info_read_geometry (GimpSessionInfo *info,
void gimp_session_info_get_info_with_widget (GimpSessionInfo *info, GdkEventConfigure *cevent);
GtkWidget *widget); void gimp_session_info_get_info (GimpSessionInfo *info);
void gimp_session_info_clear_info (GimpSessionInfo *info); void gimp_session_info_get_info_with_widget (GimpSessionInfo *info,
gboolean gimp_session_info_is_singleton (GimpSessionInfo *info); GtkWidget *widget);
gboolean gimp_session_info_is_session_managed (GimpSessionInfo *info); void gimp_session_info_clear_info (GimpSessionInfo *info);
gboolean gimp_session_info_get_remember_size (GimpSessionInfo *info); gboolean gimp_session_info_is_singleton (GimpSessionInfo *info);
gboolean gimp_session_info_get_remember_if_open (GimpSessionInfo *info); gboolean gimp_session_info_is_session_managed (GimpSessionInfo *info);
GtkWidget * gimp_session_info_get_widget (GimpSessionInfo *info); gboolean gimp_session_info_get_remember_size (GimpSessionInfo *info);
void gimp_session_info_set_widget (GimpSessionInfo *info, gboolean gimp_session_info_get_remember_if_open (GimpSessionInfo *info);
GtkWidget *widget); GtkWidget * gimp_session_info_get_widget (GimpSessionInfo *info);
GimpDialogFactoryEntry * gimp_session_info_get_factory_entry (GimpSessionInfo *info); void gimp_session_info_set_widget (GimpSessionInfo *info,
void gimp_session_info_set_factory_entry (GimpSessionInfo *info, GtkWidget *widget);
GimpDialogFactoryEntry *entry); GimpDialogFactoryEntry *
gboolean gimp_session_info_get_open (GimpSessionInfo *info); gimp_session_info_get_factory_entry (GimpSessionInfo *info);
void gimp_session_info_append_book (GimpSessionInfo *info, void gimp_session_info_set_factory_entry (GimpSessionInfo *info,
GimpSessionInfoBook *book); GimpDialogFactoryEntry *entry);
gint gimp_session_info_get_x (GimpSessionInfo *info); gboolean gimp_session_info_get_open (GimpSessionInfo *info);
gint gimp_session_info_get_y (GimpSessionInfo *info); void gimp_session_info_append_book (GimpSessionInfo *info,
gint gimp_session_info_get_width (GimpSessionInfo *info); GimpSessionInfoBook *book);
gint gimp_session_info_get_height (GimpSessionInfo *info); gint gimp_session_info_get_x (GimpSessionInfo *info);
void gimp_session_info_class_set_position_accuracy (GimpSessionInfoClass *klass, gint gimp_session_info_get_y (GimpSessionInfo *info);
gint accuracy); gint gimp_session_info_get_width (GimpSessionInfo *info);
gint gimp_session_info_class_apply_position_accuracy (GimpSessionInfoClass *klass, gint gimp_session_info_get_height (GimpSessionInfo *info);
gint position);
void gimp_session_info_set_position_accuracy (gint accuracy);
gint gimp_session_info_apply_position_accuracy (gint position);
#endif /* __GIMP_SESSION_INFO_H__ */ #endif /* __GIMP_SESSION_INFO_H__ */

View File

@ -1386,23 +1386,3 @@ gimp_print_event (const GdkEvent *event)
return str; 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);
}

View File

@ -109,8 +109,5 @@ void gimp_widget_set_fully_opaque (GtkWidget *widget
const gchar * gimp_print_event (const GdkEvent *event); const gchar * gimp_print_event (const GdkEvent *event);
void gimp_session_write_position (GimpConfigWriter *writer,
gint position);
#endif /* __APP_GIMP_WIDGETS_UTILS_H__ */ #endif /* __APP_GIMP_WIDGETS_UTILS_H__ */