--- sourceforge.net/trunk/rdesktop/xwin.c 2004/02/25 18:28:52 617 +++ sourceforge.net/trunk/rdesktop/xwin.c 2004/03/13 12:08:18 636 @@ -43,6 +43,7 @@ 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; @@ -169,9 +170,9 @@ split_colour15(uint32 colour) { PixelColour rv; - rv.red = (colour & 0x7c00) >> 7; + rv.red = (colour & 0x7c00) >> 7; rv.green = (colour & 0x03e0) >> 2; - rv.blue = (colour & 0x001f) << 3; + rv.blue = (colour & 0x001f) << 3; return rv; } @@ -179,9 +180,9 @@ split_colour16(uint32 colour) { PixelColour rv; - rv.red = (colour & 0xf800) >> 8; + rv.red = (colour & 0xf800) >> 8; rv.green = (colour & 0x07e0) >> 3; - rv.blue = (colour & 0x001f) << 3; + rv.blue = (colour & 0x001f) << 3; return rv; } @@ -189,9 +190,9 @@ split_colour24(uint32 colour) { PixelColour rv; - rv.blue = (colour & 0xff0000) >> 16; + rv.blue = (colour & 0xff0000) >> 16; rv.green = (colour & 0x00ff00) >> 8; - rv.red = (colour & 0x0000ff); + rv.red = (colour & 0x0000ff); return rv; } @@ -925,6 +926,11 @@ 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; @@ -1922,6 +1928,12 @@ SET_FOREGROUND(bgcolour); + /* Sometimes, the boxcx value is something really large, like + 32691. This makes XCopyArea fail with Xvnc. The code below + is a quick fix. */ + if (boxx + boxcx > g_width) + boxcx = g_width - boxx; + if (boxcx > 1) { FILL_RECTANGLE_BACKSTORE(boxx, boxy, boxcx, boxcy);