diff -ru a/src/events.c b/src/events.c --- a/src/events.c 2016-04-18 13:24:10.000000000 +0300 +++ b/src/events.c 2016-04-18 13:24:19.000000000 +0300 @@ -793,6 +794,19 @@ selection.len = 0; } +static void +enter_notify (XCrossingEvent *xe) +{ + rp_window *cur_win; + rp_frame *new_frame; + + cur_win = find_window (xe->window); + if(cur_win){ + new_frame = win_get_frame (cur_win); + if(new_frame) + set_active_frame (new_frame, 0); + } +} + /* Given an event, call the correct function to handle it. */ static void delegate_event (XEvent *ev) @@ -871,13 +885,16 @@ PRINT_DEBUG (("--- Handling ConfigureNotify ---\n")); configure_notify( &ev->xconfigure ); break; - + case EnterNotify: + PRINT_DEBUG (("--- Handling EnterNotify ---\n")); + enter_notify( &ev->xcrossing ); + break; + case MapNotify: case Expose: case MotionNotify: case KeyRelease: case ReparentNotify: - case EnterNotify: case SelectionNotify: case CirculateRequest: /* Ignore these events. */ @@ -1003,7 +1020,7 @@ if (QLength (dpy) > 0 || select(x_fd+1, &fds, NULL, NULL, NULL) == 1) { - XNextEvent (dpy, &rp_current_event); + XNextEvent (dpy, &rp_current_event); delegate_event (&rp_current_event); XSync(dpy, False); } diff -ru a/src/globals.h b/src/globals.h --- a/src/globals.h 2016-04-18 13:24:10.000000000 +0300 +++ b/src/globals.h 2016-04-18 13:24:19.000000000 +0300 @@ -42,7 +42,7 @@ #define MAX_FONT_WIDTH(f) (rp_font_width) -#define WIN_EVENTS (StructureNotifyMask | PropertyChangeMask | ColormapChangeMask | FocusChangeMask) +#define WIN_EVENTS (StructureNotifyMask | PropertyChangeMask | ColormapChangeMask | FocusChangeMask | EnterWindowMask) /* EMPTY is used when a frame doesn't contain a window, or a window doesn't have a frame. Any time a field refers to the number of a window/frame/screen/etc, Use EMPTY to denote a lack there of. */ diff -ru a/src/screen.c b/src/screen.c --- a/src/screen.c 2016-04-18 13:24:10.000000000 +0300 +++ b/src/screen.c 2016-04-18 13:24:19.000000000 +0300 @@ -269,7 +269,7 @@ XSelectInput(dpy, RootWindow (dpy, screen_num), PropertyChangeMask | ColormapChangeMask | SubstructureRedirectMask | SubstructureNotifyMask - | StructureNotifyMask); + | StructureNotifyMask | EnterWindowMask); XSync (dpy, False); /* Set the numset for the frames to our global numset. */