From 17a7579d275c6fe1a96ee0a350bedf50b1b52a87 Mon Sep 17 00:00:00 2001 From: Colin Clark Date: Sun, 26 Apr 2020 11:19:34 +0100 Subject: [PATCH] Bug fix: Set geometry of additional windows 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 | 5 +++++ geeqie.1 | 4 ++++ src/main.c | 9 ++++++++- src/remote.c | 14 ++++++++++++++ 4 files changed, 31 insertions(+), 1 deletion(-) diff --git a/doc/docbook/GuideReferenceCommandLine.xml b/doc/docbook/GuideReferenceCommandLine.xml index cf2d3fa9..f814a01a 100644 --- a/doc/docbook/GuideReferenceCommandLine.xml +++ b/doc/docbook/GuideReferenceCommandLine.xml @@ -292,6 +292,11 @@ --close-window Close window + + + --geometry=<w>x<h>+<x>+<y> + Set the <width> <height> <xoffset> <yoffset> of the window. The parameters are in pixels. + -ct:clear|clean --cache-thumbs:clear|clean diff --git a/geeqie.1 b/geeqie.1 index 133d0014..a3f7766e 100644 --- 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 diff --git a/src/main.c b/src/main.c index 776154e9..e6d3e5b4 100644 --- a/src/main.c +++ b/src/main.c @@ -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) diff --git a/src/remote.c b/src/remote.c index 5dca7abe..d29565cc 100644 --- a/src/remote.c +++ b/src/remote.c @@ -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_(""), 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_(""), 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") }, -- 2.20.1