Use GdkRectangle for CollectionData::window
authorArkadiy Illarionov <qarkai@gmail.com>
Sun, 1 Oct 2023 12:56:41 +0000 (15:56 +0300)
committerColin Clark <colin.clark@cclark.uk>
Sun, 1 Oct 2023 13:13:24 +0000 (14:13 +0100)
src/collect-io.cc
src/collect.cc
src/collect.h

index fd7969c..e0c1933 100644 (file)
@@ -44,21 +44,25 @@ static CollectManagerEntry *collect_manager_get_entry(const gchar *path);
 static void collect_manager_entry_reset(CollectManagerEntry *entry);
 static gint collect_manager_process_action(CollectManagerEntry *entry, gchar **path_ptr);
 
+namespace
+{
 
-static gboolean scan_geometry(gchar *buffer, gint *x, gint *y, gint *w, gint *h)
+gboolean scan_geometry(gchar *buffer, GdkRectangle &window)
 {
        gint nx, ny, nw, nh;
 
        if (sscanf(buffer, "%d %d %d %d", &nx, &ny, &nw, &nh) != 4) return FALSE;
 
-       *x = nx;
-       *y = ny;
-       *w = nw;
-       *h = nh;
+       window.x = nx;
+       window.y = ny;
+       window.width = nw;
+       window.height = nh;
 
        return TRUE;
 }
 
+}
+
 static gboolean collection_load_private(CollectionData *cd, const gchar *path, CollectionLoadFlags flags)
 {
        gchar s_buf[GQ_COLLECTION_READ_BUFSIZE];
@@ -141,7 +145,7 @@ static gboolean collection_load_private(CollectionData *cd, const gchar *path, C
                                        limit_failures = FALSE;
                                        }
                                else if (strncmp(p, "#geometry:", 10 ) == 0 &&
-                                        scan_geometry(p + 10, &cd->window_x, &cd->window_y, &cd->window_w, &cd->window_h))
+                                        scan_geometry(p + 10, cd->window))
                                        {
                                        has_geometry_header = TRUE;
                                        cd->window_read = TRUE;
@@ -412,7 +416,7 @@ static gboolean collection_save_private(CollectionData *cd, const gchar *path)
        collection_update_geometry(cd);
        if (cd->window_read)
                {
-               secure_fprintf(ssi, "#geometry: %d %d %d %d\n", cd->window_x, cd->window_y, cd->window_w, cd->window_h);
+               secure_fprintf(ssi, "#geometry: %d %d %d %d\n", cd->window.x, cd->window.y, cd->window.width, cd->window.height);
                }
 
        work = cd->list;
index fc2e35c..61bea6d 100644 (file)
@@ -455,8 +455,8 @@ CollectionData *collection_new(const gchar *path)
 
        cd->ref = 1;    /* starts with a ref of 1 */
        cd->sort_method = SORT_NONE;
-       cd->window_w = COLLECT_DEF_WIDTH;
-       cd->window_h = COLLECT_DEF_HEIGHT;
+       cd->window.width = COLLECT_DEF_WIDTH;
+       cd->window.height = COLLECT_DEF_HEIGHT;
        cd->existence = g_hash_table_new(nullptr, nullptr);
 
        if (path)
@@ -1088,9 +1088,9 @@ static void collection_window_get_geometry(CollectWindow *cw)
 
        cd = cw->cd;
        window = gtk_widget_get_window(cw->window);
-       gdk_window_get_position(window, &cd->window_x, &cd->window_y);
-       cd->window_w = gdk_window_get_width(window);
-       cd->window_h = gdk_window_get_height(window);
+       gdk_window_get_position(window, &cd->window.x, &cd->window.y);
+       cd->window.width = gdk_window_get_width(window);
+       cd->window.height = gdk_window_get_height(window);
        cd->window_read = TRUE;
 }
 
@@ -1347,8 +1347,8 @@ CollectWindow *collection_window_new(const gchar *path)
 
        if (options->save_window_positions && path && collection_load_only_geometry(cw->cd, path))
                {
-               gtk_window_set_default_size(GTK_WINDOW(cw->window), cw->cd->window_w, cw->cd->window_h);
-               gq_gtk_window_move(GTK_WINDOW(cw->window), cw->cd->window_x, cw->cd->window_y);
+               gtk_window_set_default_size(GTK_WINDOW(cw->window), cw->cd->window.width, cw->cd->window.height);
+               gq_gtk_window_move(GTK_WINDOW(cw->window), cw->cd->window.x, cw->cd->window.y);
                }
        else
                {
index bf72f49..189ea97 100644 (file)
@@ -63,11 +63,8 @@ struct CollectionData
        gint ref;
 
        /* geometry */
-       gint window_read;
-       gint window_x;
-       gint window_y;
-       gint window_w;
-       gint window_h;
+       gboolean window_read;
+       GdkRectangle window;
 
        gboolean changed; /**< contents changed since save flag */