emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: address@hidden: Re: mode-line redisplay bug]


From: YAMAMOTO Mitsuharu
Subject: Re: address@hidden: Re: mode-line redisplay bug]
Date: Thu, 13 Oct 2005 17:22:35 +0900
User-agent: Wanderlust/2.14.0 (Africa) SEMI/1.14.6 (Maruoka) FLIM/1.14.6 (Marutamachi) APEL/10.6 Emacs/22.0.50 (sparc-sun-solaris2.8) MULE/5.0 (SAKAKI)

>>>>> On Wed, 12 Oct 2005 15:42:31 +0200, address@hidden (Kim F. Storm) said:

> I think your change was pretty close to being ok.  Here is something
> which seems to work for me on X -- maybe you can install it and
> adapt it to W32 and MAC if it works for you too.

The same change seems to work for Mac, too.  Thanks.  I'm not sure
about W32: it looks slightly different from others (help_echo_string
is not cleared before note_mouse_movement is called).

                                     YAMAMOTO Mitsuharu
                                address@hidden

Index: src/macterm.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/macterm.c,v
retrieving revision 1.137
diff -c -r1.137 macterm.c
*** src/macterm.c       12 Oct 2005 12:18:18 -0000      1.137
--- src/macterm.c       13 Oct 2005 08:04:17 -0000
***************
*** 4149,4155 ****
  static Point last_mouse_motion_position;
  static Lisp_Object last_mouse_motion_frame;
  
! static void
  note_mouse_movement (frame, pos)
       FRAME_PTR frame;
       Point *pos;
--- 4149,4155 ----
  static Point last_mouse_motion_position;
  static Lisp_Object last_mouse_motion_frame;
  
! static int
  note_mouse_movement (frame, pos)
       FRAME_PTR frame;
       Point *pos;
***************
*** 4180,4198 ****
            rif->define_frame_cursor (frame,
                                      frame->output_data.mac->nontext_cursor);
        }
      }
    /* Has the mouse moved off the glyph it was on at the last sighting?  */
!   else if (pos->h < last_mouse_glyph.left
!          || pos->h >= last_mouse_glyph.right
!          || pos->v < last_mouse_glyph.top
!          || pos->v >= last_mouse_glyph.bottom)
      {
        frame->mouse_moved = 1;
        last_mouse_scroll_bar = Qnil;
        note_mouse_highlight (frame, pos->h, pos->v);
        /* Remember which glyph we're now on.  */
        remember_mouse_glyph (frame, pos->h, pos->v, &last_mouse_glyph);
      }
  }
  
  
--- 4180,4201 ----
            rif->define_frame_cursor (frame,
                                      frame->output_data.mac->nontext_cursor);
        }
+       return 1;
      }
    /* Has the mouse moved off the glyph it was on at the last sighting?  */
!   if (pos->h < last_mouse_glyph.left
!       || pos->h >= last_mouse_glyph.right
!       || pos->v < last_mouse_glyph.top
!       || pos->v >= last_mouse_glyph.bottom)
      {
        frame->mouse_moved = 1;
        last_mouse_scroll_bar = Qnil;
        note_mouse_highlight (frame, pos->h, pos->v);
        /* Remember which glyph we're now on.  */
        remember_mouse_glyph (frame, pos->h, pos->v, &last_mouse_glyph);
+       return 1;
      }
+   return 0;
  }
  
  
***************
*** 10031,10038 ****
                          er.where.h + 1, er.where.v + 1);
  #endif
              previous_help_echo_string = help_echo_string;
!             help_echo_string = help_echo_object = help_echo_window = Qnil;
!             help_echo_pos = -1;
  
              if (dpyinfo->grabbed && last_mouse_frame
                  && FRAME_LIVE_P (last_mouse_frame))
--- 10034,10040 ----
                          er.where.h + 1, er.where.v + 1);
  #endif
              previous_help_echo_string = help_echo_string;
!             help_echo_string = Qnil;
  
              if (dpyinfo->grabbed && last_mouse_frame
                  && FRAME_LIVE_P (last_mouse_frame))
***************
*** 10091,10097 ****
  
                          last_window=window;
                        }
!                     note_mouse_movement (f, &mouse_pos);
                    }
                }
  
--- 10093,10100 ----
  
                          last_window=window;
                        }
!                     if (!note_mouse_movement (f, &mouse_pos))
!                       help_echo_string = previous_help_echo_string;
                    }
                }
  




reply via email to

[Prev in Thread] Current Thread [Next in Thread]