Bug fix: Set geometry of additional windows
authorColin Clark <colin.clark@cclark.uk>
Sun, 26 Apr 2020 10:19:34 +0000 (11:19 +0100)
committerColin Clark <colin.clark@cclark.uk>
Sun, 26 Apr 2020 10:19:34 +0000 (11:19 +0100)
When an additional was opened from the command line, any --geometry
parameters were ignored.

There is now also a --remote command to set window geometry.

doc/docbook/GuideReferenceCommandLine.xml
geeqie.1
src/main.c
src/remote.c

index cf2d3fa..f814a01 100644 (file)
             <entry>--close-window</entry>\r
             <entry>Close window</entry>\r
           </row>\r
+          <row>\r
+            <entry />\r
+            <entry>--geometry=&lt;w&gt;x&lt;h&gt;+&lt;x&gt;+&lt;y&gt;</entry>\r
+            <entry>Set the &lt;width&gt; &lt;height&gt; &lt;xoffset&gt; &lt;yoffset&gt; of the window. The parameters are in pixels.</entry>\r
+          </row>\r
           <row>\r
             <entry>-ct:clear|clean</entry>\r
             <entry>--cache-thumbs:clear|clean</entry>\r
index 133d001..a3f7766 100644 (file)
--- a/geeqie.1
+++ b/geeqie.1
@@ -244,6 +244,10 @@ Open new window.
 Close window.
 .br
 .B
+.IP \-\-geometry=XxY+XOFF+YOFF
+Set window geometry.
+.br
+.B
 .IP \-ct:clear|clean,\-\-cache-thumbs:clear|clean
 Clear or clean thumbnail cache.
 .br
index 776154e..e6d3e5b 100644 (file)
@@ -224,6 +224,7 @@ static void parse_command_line(gint argc, gchar *argv[])
        gchar *app_lock;
        gchar *pwd;
        gchar *current_dir;
+       gchar *geometry = NULL;
 
        command_line = g_new0(CommandLine, 1);
 
@@ -436,7 +437,12 @@ static void parse_command_line(gint argc, gchar *argv[])
                if (remote_server_exists(app_lock) && !remote_do)
                        {
                        remote_do = TRUE;
-                       remote_list = g_list_append(remote_list, "--new-window");
+                       if (command_line->geometry)
+                               {
+                               geometry = g_strdup_printf("--geometry=%s", command_line->geometry);
+                               remote_list = g_list_prepend(remote_list, geometry);
+                               }
+                       remote_list = g_list_prepend(remote_list, "--new-window");
                }
                g_free(app_lock);
                }
@@ -470,6 +476,7 @@ static void parse_command_line(gint argc, gchar *argv[])
                g_free(pwd);
                g_free(current_dir);
                }
+       g_free(geometry);
        g_list_free(remote_list);
 
        if (list && list->next)
index 5dca7ab..d29565c 100644 (file)
@@ -949,6 +949,19 @@ static void gr_collection_list(const gchar *text, GIOChannel *channel, gpointer
        g_string_free(out_string, TRUE);
 }
 
+static void gr_geometry(const gchar *text, GIOChannel *channel, gpointer data)
+{
+       gchar **geometry;
+
+       geometry = g_strsplit_set(text, "+x", 4);
+       if (geometry[0] != NULL && geometry[1] != NULL && geometry[2] != NULL && geometry[3] != NULL)
+               {
+               gtk_window_resize(GTK_WINDOW(lw_id->window), atoi(geometry[0]), atoi(geometry[1]));
+               gtk_window_move(GTK_WINDOW(lw_id->window), atoi(geometry[2]), atoi(geometry[3]));
+               }
+
+       g_strfreev(geometry);
+}
 
 static void gr_filelist(const gchar *text, GIOChannel *channel, gpointer data)
 {
@@ -1329,6 +1342,7 @@ static RemoteCommandEntry remote_commands[] = {
        { NULL, "--id:",                gr_lw_id,               TRUE, FALSE, N_("<ID>"), N_("window id for following commands") },
        { NULL, "--new-window",         gr_new_window,          FALSE, FALSE, NULL, N_("new window") },
        { NULL, "--close-window",       gr_close_window,        FALSE, FALSE, NULL, N_("close window") },
+       { NULL, "--geometry=",          gr_geometry,            TRUE, FALSE, N_("<GEOMETRY>"), N_("set window geometry") },
        { "-ct:", "--cache-thumbs:",    gr_cache_thumb,         TRUE, FALSE, N_("clear|clean"), N_("clear or clean thumbnail cache") },
        { "-cs:", "--cache-shared:",    gr_cache_shared,        TRUE, FALSE, N_("clear|clean"), N_("clear or clean shared thumbnail cache") },
        { "-cm","--cache-metadata",      gr_cache_metadata,               FALSE, FALSE, NULL, N_("    clean the metadata cache") },