emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] trunk r114044: * nsterm.m (last_window): New variable.


From: Jan D.
Subject: [Emacs-diffs] trunk r114044: * nsterm.m (last_window): New variable.
Date: Wed, 28 Aug 2013 16:20:29 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 114044
revision-id: address@hidden
parent: address@hidden
fixes bug: http://debbugs.gnu.org/6888
committer: Jan D. <address@hidden>
branch nick: trunk
timestamp: Wed 2013-08-28 18:20:15 +0200
message:
  * nsterm.m (last_window): New variable.
  (EV_TRAILER2): New macro.
  (EV_TRAILER): Call EV_TRAILER2.
  (mouseMoved:):  Add support for mouse-autoselect-window
  on nextstep.
modified:
  src/ChangeLog                  changelog-20091113204419-o5vbwnq5f7feedwu-1438
  src/nsterm.m                   nsterm.m-20091113204419-o5vbwnq5f7feedwu-8747
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2013-08-28 13:50:55 +0000
+++ b/src/ChangeLog     2013-08-28 16:20:15 +0000
@@ -1,3 +1,11 @@
+2013-08-28  Davor Cubranic  <address@hidden> (tiny change)
+
+       * nsterm.m (last_window): New variable.
+       (EV_TRAILER2): New macro.
+       (EV_TRAILER): Call EV_TRAILER2.
+       (mouseMoved:):  Add support for mouse-autoselect-window
+       on nextstep (Bug#6888).
+
 2013-08-28  Andreas Schwab  <address@hidden>
 
        * regex.c (CHAR_CHARSET, CHARSET_LEADING_CODE_BASE, CHAR_HEAD_P)

=== modified file 'src/nsterm.m'
--- a/src/nsterm.m      2013-08-28 11:00:03 +0000
+++ b/src/nsterm.m      2013-08-28 16:20:15 +0000
@@ -184,6 +184,9 @@
 Lisp_Object ns_display_name_list;
 long context_menu_value = 0;
 
+/* Last window where we saw the mouse.  Used by mouse-autoselect-window.  */
+static Lisp_Object last_window;
+
 /* display update */
 NSPoint last_mouse_motion_position;
 static NSRect last_mouse_glyph;
@@ -308,8 +311,13 @@
 /* This is a piece of code which is common to all the event handling
    methods.  Maybe it should even be a function.  */
 #define EV_TRAILER(e)                                                   \
-    {                                                                   \
-      XSETFRAME (emacs_event->frame_or_window, emacsframe);             \
+  {                                                                     \
+    XSETFRAME (emacs_event->frame_or_window, emacsframe);               \
+    EV_TRAILER2 (e);                                                    \
+  }
+
+#define EV_TRAILER2(e)                                                  \
+  {                                                                     \
       if (e) emacs_event->timestamp = EV_TIMESTAMP (e);                 \
       if (q_event_ptr)                                                  \
         {                                                               \
@@ -5465,6 +5473,27 @@
   previous_help_echo_string = help_echo_string;
   help_echo_string = Qnil;
 
+  if (!NILP (Vmouse_autoselect_window))
+    {
+      NSTRACE (mouse_autoselect_window);
+      Lisp_Object window;
+      window = window_from_coordinates(emacsframe, 
last_mouse_motion_position.x,
+                                       last_mouse_motion_position.y, 0, 0);
+      if (WINDOWP (window)
+          && !EQ (window, last_window)
+          && !EQ (window, selected_window)
+          && (focus_follows_mouse
+              || (EQ (XWINDOW (window)->frame,
+                      XWINDOW (selected_window)->frame))))
+        {
+          NSTRACE (in_window);
+          emacs_event->kind = SELECT_WINDOW_EVENT;
+          emacs_event->frame_or_window = window;
+          EV_TRAILER2 (e);
+        }
+      last_window = window;
+    }
+
   if (!note_mouse_movement (emacsframe, last_mouse_motion_position.x,
                             last_mouse_motion_position.y))
     help_echo_string = previous_help_echo_string;


reply via email to

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