]> git.eshelyaron.com Git - emacs.git/commitdiff
Try to fix latest fix of w32_mouse_position
authorMartin Rudalics <rudalics@gmx.at>
Wed, 26 Apr 2017 13:20:09 +0000 (15:20 +0200)
committerMartin Rudalics <rudalics@gmx.at>
Wed, 26 Apr 2017 13:20:09 +0000 (15:20 +0200)
* src/w32term.c (w32_mouse_position): Fix a bug introduced by
latest fix and try to make the affected code more rigorous.

src/w32term.c

index f02201c9d766530016c7900ac8b459b02d5c7db4..6b0da0cb3e92459d86dde07162ee2aac8300c5d4 100644 (file)
@@ -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;
+                     }
+                 }
              }
          }