]> git.eshelyaron.com Git - emacs.git/commitdiff
Really eliminate tooltip flicker on Haiku
authorPo Lu <luangruo@yahoo.com>
Mon, 17 Jan 2022 04:52:00 +0000 (04:52 +0000)
committerPo Lu <luangruo@yahoo.com>
Mon, 17 Jan 2022 04:53:42 +0000 (04:53 +0000)
* src/haikufns.c (tip_frame): Make non-static.
* src/haikuterm.c (haiku_read_socket): Ignore motion events that
didn't actually move when a tip frame is visible.
* src/haikuterm.h (tip_frame): Declare.

src/haikufns.c
src/haikuterm.c
src/haikuterm.h

index 52bb13bc89b80446ec1af3fe79f29e24c5817f9f..2edf883b9cbc279309e6f0e51e261995083b3f73 100644 (file)
@@ -45,7 +45,7 @@ along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.  */
 #define BLUE_FROM_ULONG(color) ((color) & 0xff)
 
 /* The frame of the currently visible tooltip.  */
-static Lisp_Object tip_frame;
+Lisp_Object tip_frame;
 
 /* The window-system window corresponding to the frame of the
    currently visible tooltip.  */
index 05f9788f184e51149e9e34c23564d5981d9e1a54..cc4c3961ec4c023a0aedddb7cf9d01efbc6b5b43 100644 (file)
@@ -2786,6 +2786,16 @@ haiku_read_socket (struct terminal *terminal, struct input_event *hold_quit)
                struct haiku_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
                struct haiku_rect r = dpyinfo->last_mouse_glyph;
 
+               /* For an unknown reason Haiku sends phantom motion events when a
+                  tooltip frame is visible.  FIXME */
+               if (FRAMEP (tip_frame)
+                   && FRAME_LIVE_P (XFRAME (tip_frame))
+                   && FRAME_VISIBLE_P (XFRAME (tip_frame))
+                   && f == dpyinfo->last_mouse_motion_frame
+                   && b->x == dpyinfo->last_mouse_motion_x
+                   && b->y == dpyinfo->last_mouse_motion_y)
+                 continue;
+
                dpyinfo->last_mouse_motion_x = b->x;
                dpyinfo->last_mouse_motion_y = b->y;
                dpyinfo->last_mouse_motion_frame = f;
index 3e39403ab4d7d96acdb48bf7f3d81a6ae3d6a4cf..de302883e4865133938e95dbeee37d305e276dbc 100644 (file)
@@ -178,6 +178,8 @@ struct x_output
 extern struct haiku_display_info *x_display_list;
 extern struct font_driver const haikufont_driver;
 
+extern Lisp_Object tip_frame;
+
 struct scroll_bar
 {
   /* These fields are shared by all vectors.  */