File freerdp_branch-1.0.x_extend-geom-argument-with-position.patch of Package freerdp1

From: Hans-Peter Jansen <hpj@urpla.net>
Subject: accommodate position in geometry argument

This patch extends the geometry argument (-g) for an optional position,
in the same way, as it is usually given a X -geometry option:

    WidthxHeight+X+Y

This is useful to handle complex setups, when a fixed desktop location
is needed.

Signed-off-by: Hans-Peter Jansen <hpj@urpla.net>

Index: b/client/X11/xf_window.c
===================================================================
--- a/client/X11/xf_window.c
+++ b/client/X11/xf_window.c
@@ -323,6 +323,10 @@ xfWindow* xf_CreateDesktopWindow(xfInfo*
         	      XMaskEvent(xfi->display, VisibilityChangeMask, &xevent);
         	}
         	while (xevent.type != VisibilityNotify);
+
+		if (xfi->instance->settings->desktop_x_pos || xfi->instance->settings->desktop_y_pos)
+			XMoveWindow(xfi->display, window->handle, xfi->instance->settings->desktop_x_pos,
+                                                                  xfi->instance->settings->desktop_y_pos);
 	}
 
 	XStoreName(xfi->display, window->handle, name);
Index: b/include/freerdp/settings.h
===================================================================
--- a/include/freerdp/settings.h
+++ b/include/freerdp/settings.h
@@ -292,7 +292,9 @@ struct rdp_settings
 	char* window_title; /* 87 */
 	uint64 parent_window_xid; /* 88 */
 	char* wm_class; /* 89 */
-	uint32 paddingD[112 - 90]; /* 90 */
+	uint32 desktop_x_pos; /* 90 */
+	uint32 desktop_y_pos; /* 91 */
+	uint32 paddingD[112 - 92]; /* 92 */
 
 	/* Internal Parameters */
 	char* home_path; /* 112 */
Index: b/libfreerdp-core/settings.c
===================================================================
--- a/libfreerdp-core/settings.c
+++ b/libfreerdp-core/settings.c
@@ -40,6 +40,8 @@ rdpSettings* settings_new(void* instance
 	{
 		settings->instance = instance;
 
+		settings->desktop_x_pos = 0;
+		settings->desktop_y_pos = 0;
 		settings->width = 1024;
 		settings->height = 768;
 		settings->workarea = false;
Index: b/libfreerdp-utils/args.c
===================================================================
--- a/libfreerdp-utils/args.c
+++ b/libfreerdp-utils/args.c
@@ -91,7 +91,7 @@ int freerdp_parse_args(rdpSettings* sett
 				"  -T: window title\n"
 				"  -d: domain\n"
 				"  -f: fullscreen mode\n"
-				"  -g: set geometry, using format WxH or X%% or 'workarea', default is 1024x768\n"
+				"  -g: set geometry, using format WxH[+X+Y] or X%% or 'workarea', default is 1024x768\n"
 				"  -h: print this help\n"
 				"  -k: set keyboard layout ID\n"
 				"  -K: do not interfere with window manager bindings (don't grab keyboard)\n"
@@ -226,6 +226,23 @@ int freerdp_parse_args(rdpSettings* sett
 				if (*p == 'x')
 				{
 					settings->height = (uint16) strtol(p + 1, &p, 10);
+					if (*p == '+')
+					{
+						settings->desktop_x_pos = (uint32) strtol(p + 1, &p, 10);
+						if (*p == '+')
+							settings->desktop_y_pos = (uint32) strtol(p + 1, &p, 10);
+						else
+						{
+							printf("missing +y value\n");
+							return FREERDP_ARGS_PARSE_FAILURE;
+
+						}
+					}
+					else if (*p != '\0')
+					{
+						printf("invalid geometry value: %s\n", argv[index]);
+						return FREERDP_ARGS_PARSE_FAILURE;
+					}
 				}
 				if (*p == '%')
 				{
Index: b/client/X11/xfreerdp.1.xml
===================================================================
--- a/client/X11/xfreerdp.1.xml
+++ b/client/X11/xfreerdp.1.xml
@@ -108,9 +108,12 @@
             <itemizedlist>
               <listitem>
                 <para>
-                  <replaceable class="parameter">W</replaceable>x<replaceable class="parameter">H</replaceable> - 
+                  <replaceable class="parameter">W</replaceable>x<replaceable class="parameter">H</replaceable>[+<replaceable
+                  class="parameter">X</replaceable>+<replaceable class="parameter">Y</replaceable>] -
                   in this case the resulting window will be of
-                  <replaceable class="parameter">W</replaceable>x<replaceable class="parameter">H</replaceable> pixels.
+                  <replaceable class="parameter">W</replaceable>x<replaceable class="parameter">H</replaceable> pixels
+                  with optional location at +<replaceable class="parameter">X</replaceable>+<replaceable
+		  class="parameter">Y</replaceable>.
                 </para>
               </listitem>
               <listitem>
openSUSE Build Service is sponsored by