[gimp] app: remove gimp_session_write_position()



commit 9f3052583bfd87712c0b122604f30ffb39c9fdfa
Author: Michael Natterer <mitch gimp org>
Date:   Sat May 21 00:00:07 2016 +0200

    app: remove gimp_session_write_position()
    
    and un-overengineer the session position accuracy code a bit.

 app/tests.c                        |    8 +---
 app/widgets/gimpsessioninfo-book.c |   12 +++++-
 app/widgets/gimpsessioninfo-dock.c |   12 +++++-
 app/widgets/gimpsessioninfo.c      |   55 +++++++++++---------------
 app/widgets/gimpsessioninfo.h      |   78 ++++++++++++++++++------------------
 app/widgets/gimpwidgets-utils.c    |   20 ---------
 app/widgets/gimpwidgets-utils.h    |    3 -
 7 files changed, 84 insertions(+), 104 deletions(-)
---
diff --git a/app/tests.c b/app/tests.c
index 5633e3e..048543e 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 f46de22..42ca5ad 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 9d2f2db..e5e8f9a 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 00b40bf..35ba739 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 c631f80..db5f7e9 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 263b837..725ffd8 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 e2a3f59..c8d9102 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__ */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]