]> git.eshelyaron.com Git - emacs.git/commitdiff
Handle pointer axes changing along with scroll valuators
authorPo Lu <luangruo@yahoo.com>
Mon, 16 May 2022 01:18:33 +0000 (09:18 +0800)
committerPo Lu <luangruo@yahoo.com>
Mon, 16 May 2022 01:18:33 +0000 (09:18 +0800)
* xterm.c (x_get_scroll_valuator_delta): Set valuator_return to
NULL if no valuator was found.
(handle_one_xevent): Assume pointer axes might've changed if no
scroll valuator was found but valuators were set when handling
motion events.

src/xterm.c

index 21c31271ca516cdafdb606fc3b1c6cf22ac7775a..45b756b0afd33175731e844b46f7c0a8bdb36c85 100644 (file)
@@ -4307,6 +4307,7 @@ x_get_scroll_valuator_delta (struct x_display_info *dpyinfo,
        }
     }
 
+  *valuator_return = NULL;
   return DBL_MAX;
 }
 
@@ -17507,6 +17508,7 @@ handle_one_xevent (struct x_display_info *dpyinfo,
              XIValuatorState *states;
              double *values;
              bool found_valuator = false;
+             bool other_valuators_found = false;
 #endif
              /* A fake XMotionEvent for x_note_mouse_movement. */
              XMotionEvent ev;
@@ -17564,6 +17566,12 @@ handle_one_xevent (struct x_display_info *dpyinfo,
                                                           i, *values, &val);
                      values++;
 
+                     if (!val)
+                       {
+                         other_valuators_found = true;
+                         continue;
+                       }
+
                      if (delta != DBL_MAX)
                        {
                          if (!f)
@@ -17752,7 +17760,10 @@ handle_one_xevent (struct x_display_info *dpyinfo,
                      if (source && !NILP (source->name))
                        inev.ie.device = source->name;
 
-                     goto XI_OTHER;
+                     if (!other_valuators_found)
+                       goto XI_OTHER;
+                     else
+                       puts ("ovf");
                    }
 #ifdef HAVE_XWIDGETS
                }