XEmbed-patch by Arend van Beelen jr. <arend@auton.nl>

git-svn-id: svn://svn.code.sf.net/p/rdesktop/code/trunk/rdesktop@635 423420c4-83ab-492f-b58f-81f9feb106b5
This commit is contained in:
Michael Gernoth 2004-03-13 12:08:18 +00:00
parent 0fa8eb2b0d
commit 697f58a48a
3 changed files with 18 additions and 1 deletions

View File

@ -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 session. This is useful with applications that looks at the numlock
state, but might cause problems with some Xservers like Xvnc. state, but might cause problems with some Xservers like Xvnc.
.TP .TP
.BR "-X <windowid>"
Embed rdesktop-window in another window. The windowid is expected to
be decimal.
.TP
.BR "-a <bpp>" .BR "-a <bpp>"
Sets the colour depth for the connection (8, 15, 16 or 24). Sets the colour depth for the connection (8, 15, 16 or 24).
More than 8 bpp are only supported when connecting to Windows XP More than 8 bpp are only supported when connecting to Windows XP

View File

@ -70,6 +70,7 @@ BOOL g_console_session = False;
BOOL g_numlock_sync = False; BOOL g_numlock_sync = False;
extern BOOL g_owncolmap; extern BOOL g_owncolmap;
extern BOOL g_ownbackstore; extern BOOL g_ownbackstore;
extern uint32 g_embed_wnd;
#ifdef WITH_RDPSND #ifdef WITH_RDPSND
BOOL g_rdpsnd = False; BOOL g_rdpsnd = False;
@ -118,6 +119,7 @@ usage(char *program)
fprintf(stderr, " -S: caption button size (single application mode)\n"); fprintf(stderr, " -S: caption button size (single application mode)\n");
fprintf(stderr, " -T: window title\n"); fprintf(stderr, " -T: window title\n");
fprintf(stderr, " -N: enable numlock syncronization\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, " -a: connection colour depth\n");
fprintf(stderr, " -r: enable specified device redirection (this flag can be repeated)\n"); fprintf(stderr, " -r: enable specified device redirection (this flag can be repeated)\n");
fprintf(stderr, fprintf(stderr,
@ -245,6 +247,7 @@ main(int argc, char *argv[])
prompt_password = False; prompt_password = False;
domain[0] = password[0] = shell[0] = directory[0] = 0; domain[0] = password[0] = shell[0] = directory[0] = 0;
strcpy(keymapname, "en-us"); strcpy(keymapname, "en-us");
g_embed_wnd = 0;
g_num_devices = 0; g_num_devices = 0;
@ -254,7 +257,7 @@ main(int argc, char *argv[])
#define VNCOPT #define VNCOPT
#endif #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) switch (c)
{ {
@ -401,6 +404,10 @@ main(int argc, char *argv[])
g_numlock_sync = True; g_numlock_sync = True;
break; break;
case 'X':
g_embed_wnd = strtol(optarg, NULL, 10);
break;
case 'a': case 'a':
g_server_bpp = strtol(optarg, NULL, 10); g_server_bpp = strtol(optarg, NULL, 10);
if (g_server_bpp != 8 && g_server_bpp != 16 && g_server_bpp != 15 if (g_server_bpp != 8 && g_server_bpp != 16 && g_server_bpp != 15

6
xwin.c
View File

@ -43,6 +43,7 @@ Time g_last_gesturetime;
static int g_x_socket; static int g_x_socket;
static Screen *g_screen; static Screen *g_screen;
Window g_wnd; Window g_wnd;
uint32 g_embed_wnd;
BOOL g_enable_compose = False; BOOL g_enable_compose = False;
static GC g_gc = NULL; static GC g_gc = NULL;
static Visual *g_visual; static Visual *g_visual;
@ -925,6 +926,11 @@ ui_create_window(void)
XFree(sizehints); XFree(sizehints);
} }
if ( g_embed_wnd )
{
XReparentWindow(g_display, g_wnd, (Window)g_embed_wnd, 0, 0);
}
input_mask = KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask | input_mask = KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask |
VisibilityChangeMask | FocusChangeMask; VisibilityChangeMask | FocusChangeMask;