--- sourceforge.net/trunk/rdesktop/xwin.c 2002/09/14 13:47:24 123 +++ sourceforge.net/trunk/rdesktop/xwin.c 2002/09/17 08:18:41 170 @@ -351,6 +351,9 @@ height = HeightOfScreen(screen); } + /* make sure width is a multiple of 4 */ + width = (width + 3) & ~3; + xkeymap_init(); return True; } @@ -432,19 +435,6 @@ display = NULL; } -static void -xwin_reset_keys() -{ - /* reset keys */ - uint32 ev_time; - ev_time = time(NULL); - rdp_send_scancode(ev_time, RDP_KEYRELEASE, SCANCODE_CHAR_LCTRL); - rdp_send_scancode(ev_time, RDP_KEYRELEASE, SCANCODE_CHAR_LALT); - rdp_send_scancode(ev_time, RDP_KEYRELEASE, SCANCODE_CHAR_LSHIFT); - rdp_send_scancode(ev_time, RDP_KEYRELEASE, SCANCODE_CHAR_RCTRL); - rdp_send_scancode(ev_time, RDP_KEYRELEASE, SCANCODE_CHAR_RALT); - rdp_send_scancode(ev_time, RDP_KEYRELEASE, SCANCODE_CHAR_RSHIFT); -} void xwin_toggle_fullscreen() @@ -454,13 +444,13 @@ int newwidth, newheight; fullscreen = !fullscreen; - newwidth = fullscreen ? WidthOfScreen(screen) : width; + newwidth = fullscreen ? WidthOfScreen(screen) : width; newheight = fullscreen ? HeightOfScreen(screen) : height; XUnmapWindow(display, wnd); attribs.override_redirect = fullscreen; + XMoveResizeWindow(display, wnd, 0, 0, newwidth, newheight); XChangeWindowAttributes(display, wnd, CWOverrideRedirect, &attribs); - XResizeWindow(display, wnd, newwidth, newheight); xwin_map_window(); } @@ -568,22 +558,21 @@ MOUSE_FLAG_MOVE, xevent.xmotion.x, xevent.xmotion.y); break; - case FocusIn: - /* fall through */ case EnterNotify: if (grab_keyboard) XGrabKeyboard(display, wnd, True, GrabModeAsync, GrabModeAsync, CurrentTime); break; - case FocusOut: - xwin_reset_keys(); - /* fall through */ case LeaveNotify: if (grab_keyboard) XUngrabKeyboard(display, CurrentTime); break; + case FocusIn: + reset_modifier_keys(); + break; + case Expose: XCopyArea(display, backstore, wnd, gc, xevent.xexpose.x, xevent.xexpose.y,