diff options
author | Martin Rudalics <rudalics@gmx.at> | 2017-04-26 15:20:09 +0200 |
---|---|---|
committer | Martin Rudalics <rudalics@gmx.at> | 2017-04-26 15:20:09 +0200 |
commit | 7a4851e11b3bbc0fbfc7ea021b69374ab23eb882 (patch) | |
tree | 0e7e840a859c02e5bd6d50af7277d03ead6af4a3 | |
parent | b780f16953355e931a70f7b0fd666fa7f9dad795 (diff) | |
download | emacs-7a4851e11b3bbc0fbfc7ea021b69374ab23eb882.tar.gz |
Try to fix latest fix of w32_mouse_position
* src/w32term.c (w32_mouse_position): Fix a bug introduced by
latest fix and try to make the affected code more rigorous.
-rw-r--r-- | src/w32term.c | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/src/w32term.c b/src/w32term.c index f02201c9d76..6b0da0cb3e9 100644 --- a/src/w32term.c +++ b/src/w32term.c @@ -3464,25 +3464,25 @@ w32_mouse_position (struct frame **fp, int insist, Lisp_Object *bar_window, f1 = dpyinfo->last_mouse_frame; else { - /* Try to check for a child window first. */ - HWND wfp = ChildWindowFromPoint (wfp, pt); + HWND wfp = WindowFromPoint (pt); if (wfp) { - struct frame *f2 = x_any_window_to_frame (dpyinfo, wfp); + f1 = x_any_window_to_frame (dpyinfo, wfp); + if (f1) + { + HWND cwfp = ChildWindowFromPoint (wfp, pt); - /* If f2 is one of our frames, make sure it's a child - frame (Bug#26615, maybe). */ - if (f2 && FRAME_PARENT_FRAME (f2)) - f1 = f2; - } + if (cwfp) + { + struct frame *f2 = x_any_window_to_frame (dpyinfo, cwfp); - if (!f1) - { - /* Check for a top-level window second. */ - wfp = WindowFromPoint (pt); - if (wfp) - f1 = x_any_window_to_frame (dpyinfo, wfp); + /* If a child window was found, make sure that its + frame is a child frame (Bug#26615, maybe). */ + if (f2 && FRAME_PARENT_FRAME (f2)) + f1 = f2; + } + } } } |