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
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

View File

@ -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

6
xwin.c
View File

@ -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;