app: remove gimp_session_write_position()
and un-overengineer the session position accuracy code a bit.
This commit is contained in:
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -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__ */
|
||||||
|
@ -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);
|
|
||||||
}
|
|
||||||
|
@ -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__ */
|
||||||
|
Reference in New Issue
Block a user