From 96c8b65ebd79360fdcf81786461805bb4377ca11 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20Dj=C3=A4rv?= Date: Sun, 21 Jul 2013 13:47:07 +0200 Subject: [PATCH] * nsterm.m (sendEvent:): Skip mouse moved if no dialog and no Emacs frame have focus. Fixes: debbugs:14895 --- src/ChangeLog | 5 +++++ src/nsterm.m | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/ChangeLog b/src/ChangeLog index e97e07aac60..fb2d875eb26 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2013-07-21 Jan Djärv + + * nsterm.m (sendEvent:): Skip mouse moved if no dialog and no Emacs + frame have focus (Bug#14895). + 2013-07-21 Paul Eggert Avoid vfork-related deadlock more cleanly. diff --git a/src/nsterm.m b/src/nsterm.m index f3c35e95bfe..61538798337 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -4416,6 +4416,7 @@ ns_term_shutdown (int sig) { int type = [theEvent type]; NSWindow *window = [theEvent window]; + /* NSTRACE (sendEvent); */ /*fprintf (stderr, "received event of type %d\t%d\n", type);*/ @@ -4469,6 +4470,23 @@ ns_term_shutdown (int sig) } } + +#ifdef NS_IMPL_COCOA + /* If no dialog and none of our frames have focus and it is a move, skip it. + It is a mouse move in an auxillary menu, i.e. on the top right on OSX, + such as Wifi, sound, date or similar. + This prevents "spooky" highlightning in the frame under the menu. */ + if (type == NSMouseMoved && [NSApp modalWindow] == nil) + { + struct ns_display_info *di; + BOOL has_focus = NO; + for (di = x_display_list; ! has_focus && di; di = di->next) + has_focus = di->x_focus_frame != 0; + if (! has_focus) + return; + } +#endif + [super sendEvent: theEvent]; } -- 2.39.2