static BOOL xf_event_FocusIn(xfContext* xfc, XEvent* event, BOOL app) { if (event->xfocus.mode == NotifyGrab) return TRUE; xfc->focused = TRUE; if (xfc->mouse_active && !app) XGrabKeyboard(xfc->display, xfc->window->handle, TRUE, GrabModeAsync, GrabModeAsync, CurrentTime); if (app) { xfAppWindow* appWindow; xf_rail_send_activate(xfc, event->xany.window, TRUE); appWindow = xf_AppWindowFromX11Window(xfc, event->xany.window); /* Update the server with any window changes that occurred while the window was not focused. */ if (appWindow) { xf_rail_adjust_position(xfc, appWindow); } } xf_keyboard_focus_in(xfc); return TRUE; }
static BOOL xf_event_FocusIn(xfContext* xfc, XEvent* event, BOOL app) { if (event->xfocus.mode == NotifyGrab) return TRUE; xfc->focused = TRUE; if (xfc->mouse_active && (!app)) XGrabKeyboard(xfc->display, xfc->window->handle, TRUE, GrabModeAsync, GrabModeAsync, CurrentTime); if (app) { xf_rail_send_activate(xfc, event->xany.window, TRUE); rdpWindow* window; rdpRail* rail = ((rdpContext*) xfc)->rail; window = window_list_get_by_extra_id(rail->list, (void*) event->xany.window); /* Update the server with any window changes that occured while the window was not focused. */ if (window != NULL) xf_rail_adjust_position(xfc, window); } xf_keyboard_focus_in(xfc); if (!app) xf_cliprdr_check_owner(xfc); return TRUE; }