Bugfix: When entering a stack window with the mouse, set the focus to the active client
Fixes ticket #17
This commit is contained in:
parent
8338f95d82
commit
9077831ed3
|
@ -154,6 +154,17 @@ int handle_enter_notify(void *ignored, xcb_connection_t *conn, xcb_enter_notify_
|
||||||
if (client == NULL)
|
if (client == NULL)
|
||||||
client = table_get(byChild, event->event);
|
client = table_get(byChild, event->event);
|
||||||
|
|
||||||
|
/* Check for stack windows */
|
||||||
|
if (client == NULL) {
|
||||||
|
struct Stack_Window *stack_win;
|
||||||
|
SLIST_FOREACH(stack_win, &stack_wins, stack_windows)
|
||||||
|
if (stack_win->window == event->event) {
|
||||||
|
client = stack_win->container->currently_focused;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* If not, then the user moved his cursor to the root window. In that case, we adjust c_ws */
|
/* If not, then the user moved his cursor to the root window. In that case, we adjust c_ws */
|
||||||
if (client == NULL) {
|
if (client == NULL) {
|
||||||
LOG("Getting screen at %d x %d\n", event->root_x, event->root_y);
|
LOG("Getting screen at %d x %d\n", event->root_x, event->root_y);
|
||||||
|
|
|
@ -298,7 +298,8 @@ void switch_layout_mode(xcb_connection_t *conn, Container *container, int mode)
|
||||||
|
|
||||||
/* We want to know when… */
|
/* We want to know when… */
|
||||||
mask |= XCB_CW_EVENT_MASK;
|
mask |= XCB_CW_EVENT_MASK;
|
||||||
values[1] = XCB_EVENT_MASK_BUTTON_PRESS | /* …mouse is pressed */
|
values[1] = XCB_EVENT_MASK_ENTER_WINDOW | /* …mouse is moved into our window */
|
||||||
|
XCB_EVENT_MASK_BUTTON_PRESS | /* …mouse is pressed */
|
||||||
XCB_EVENT_MASK_EXPOSURE; /* …our window needs to be redrawn */
|
XCB_EVENT_MASK_EXPOSURE; /* …our window needs to be redrawn */
|
||||||
|
|
||||||
struct Stack_Window *stack_win = &(container->stack_win);
|
struct Stack_Window *stack_win = &(container->stack_win);
|
||||||
|
|
Loading…
Reference in New Issue