diff options
-rw-r--r-- | doc/rdesktop.1 | 4 | ||||
-rw-r--r-- | rdesktop.c | 9 | ||||
-rw-r--r-- | xwin.c | 6 |
3 files changed, 18 insertions, 1 deletions
diff --git a/doc/rdesktop.1 b/doc/rdesktop.1 index 7f201a8..0148e02 100644 --- a/doc/rdesktop.1 +++ b/doc/rdesktop.1 @@ -97,6 +97,10 @@ Enable numlock syncronization between the Xserver and the remote RDP session. This is useful with applications that looks at the numlock state, but might cause problems with some Xservers like Xvnc. .TP +.BR "-X <windowid>" +Embed rdesktop-window in another window. The windowid is expected to +be decimal. +.TP .BR "-a <bpp>" Sets the colour depth for the connection (8, 15, 16 or 24). More than 8 bpp are only supported when connecting to Windows XP @@ -70,6 +70,7 @@ BOOL g_console_session = False; BOOL g_numlock_sync = False; extern BOOL g_owncolmap; extern BOOL g_ownbackstore; +extern uint32 g_embed_wnd; #ifdef WITH_RDPSND BOOL g_rdpsnd = False; @@ -118,6 +119,7 @@ usage(char *program) fprintf(stderr, " -S: caption button size (single application mode)\n"); fprintf(stderr, " -T: window title\n"); fprintf(stderr, " -N: enable numlock syncronization\n"); + fprintf(stderr, " -X: embed into another window with a given id.\n"); fprintf(stderr, " -a: connection colour depth\n"); fprintf(stderr, " -r: enable specified device redirection (this flag can be repeated)\n"); fprintf(stderr, @@ -245,6 +247,7 @@ main(int argc, char *argv[]) prompt_password = False; domain[0] = password[0] = shell[0] = directory[0] = 0; strcpy(keymapname, "en-us"); + g_embed_wnd = 0; g_num_devices = 0; @@ -254,7 +257,7 @@ main(int argc, char *argv[]) #define VNCOPT #endif - while ((c = getopt(argc, argv, VNCOPT "u:d:s:c:p:n:k:g:fbBeEmCDKS:T:Na:r:045h?")) != -1) + while ((c = getopt(argc, argv, VNCOPT "u:d:s:c:p:n:k:g:fbBeEmCDKS:T:NX:a:r:045h?")) != -1) { switch (c) { @@ -401,6 +404,10 @@ main(int argc, char *argv[]) g_numlock_sync = True; break; + case 'X': + g_embed_wnd = strtol(optarg, NULL, 10); + break; + case 'a': g_server_bpp = strtol(optarg, NULL, 10); if (g_server_bpp != 8 && g_server_bpp != 16 && g_server_bpp != 15 @@ -43,6 +43,7 @@ Time g_last_gesturetime; static int g_x_socket; static Screen *g_screen; Window g_wnd; +uint32 g_embed_wnd; BOOL g_enable_compose = False; static GC g_gc = NULL; static Visual *g_visual; @@ -925,6 +926,11 @@ ui_create_window(void) XFree(sizehints); } + if ( g_embed_wnd ) + { + XReparentWindow(g_display, g_wnd, (Window)g_embed_wnd, 0, 0); + } + input_mask = KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask | VisibilityChangeMask | FocusChangeMask; |