From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Davor Cubranic Newsgroups: gmane.emacs.bugs Subject: bug#6888: Patch for mouse-autoselect-window on NextStep platforms Date: Wed, 21 Aug 2013 10:08:19 -0700 Message-ID: References: <3A99758B-67F8-471C-A702-335D6BB5DC14@cse.unsw.edu.au> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 (Apple Message framework v1283) Content-Type: multipart/mixed; boundary="Apple-Mail=_D7BBB093-89FA-4E9E-9860-C2F33CD88E54" X-Trace: ger.gmane.org 1377105444 9487 80.91.229.3 (21 Aug 2013 17:17:24 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 21 Aug 2013 17:17:24 +0000 (UTC) To: 6888@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Aug 21 19:17:25 2013 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1VCC26-0006eV-Tg for geb-bug-gnu-emacs@m.gmane.org; Wed, 21 Aug 2013 19:17:23 +0200 Original-Received: from localhost ([::1]:55318 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VCC26-0008SP-BT for geb-bug-gnu-emacs@m.gmane.org; Wed, 21 Aug 2013 13:17:22 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:48453) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VCC1v-0008QT-1o for bug-gnu-emacs@gnu.org; Wed, 21 Aug 2013 13:17:19 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VCC1m-0000Ps-OE for bug-gnu-emacs@gnu.org; Wed, 21 Aug 2013 13:17:10 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:51035) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VCC1m-0000Po-KY for bug-gnu-emacs@gnu.org; Wed, 21 Aug 2013 13:17:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1VCC1m-0000YV-9Q for bug-gnu-emacs@gnu.org; Wed, 21 Aug 2013 13:17:02 -0400 X-Loop: help-debbugs@gnu.org In-Reply-To: <3A99758B-67F8-471C-A702-335D6BB5DC14@cse.unsw.edu.au> Resent-From: Davor Cubranic Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 21 Aug 2013 17:17:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 6888 X-GNU-PR-Package: emacs,ns X-GNU-PR-Keywords: Original-Received: via spool by 6888-submit@debbugs.gnu.org id=B6888.13771054112109 (code B ref 6888); Wed, 21 Aug 2013 17:17:02 +0000 Original-Received: (at 6888) by debbugs.gnu.org; 21 Aug 2013 17:16:51 +0000 Original-Received: from localhost ([127.0.0.1]:45351 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1VCC1a-0000Xu-BI for submit@debbugs.gnu.org; Wed, 21 Aug 2013 13:16:50 -0400 Original-Received: from hajek.stat.ubc.ca ([142.103.121.1]:40034) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1VCBtM-0000JW-Tt for 6888@debbugs.gnu.org; Wed, 21 Aug 2013 13:08:21 -0400 Original-Received: from whistler.stat.ubc.ca (whistler.stat.ubc.ca [142.103.175.134]) (authenticated bits=0) by hajek.stat.ubc.ca (8.14.5/8.14.5) with ESMTP id r7LH8JIC023332 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NOT) for <6888@debbugs.gnu.org>; Wed, 21 Aug 2013 10:08:20 -0700 (PDT) X-Mailer: Apple Mail (2.1283) X-Mailman-Approved-At: Wed, 21 Aug 2013 13:16:49 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:77586 Archived-At: --Apple-Mail=_D7BBB093-89FA-4E9E-9860-C2F33CD88E54 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii FWIW, I was able to copy the SELECT_WINDOW_EVENT code from X (xterm.c) = and Win32 (w32term.c) into nsterm.m, adjusting for a few minor = differences in variable naming. Focus-follows-mouse on windows within = the active frame when mouse-autoselect-window is not nil now works fine = in my (not extensive) use of Emacs on my computer. Patch attached. Davor --Apple-Mail=_D7BBB093-89FA-4E9E-9860-C2F33CD88E54 Content-Disposition: attachment; filename=ns-select-window-event.diff Content-Type: application/octet-stream; name="ns-select-window-event.diff" Content-Transfer-Encoding: 7bit diff --git a/src/ChangeLog b/src/ChangeLog index f62c8ab..6c7ef59 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2013-08-21 Davor Cubranic + + * nsterm.m (mouseMoved): Add support for mouse-autoselect-window + on nextstep (Bug#6888). + 2013-07-15 Glenn Morris * image.c (Fimage_flush): Fix doc typo. diff --git a/src/nsterm.m b/src/nsterm.m index a57e744..217272e 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -169,6 +169,9 @@ struct ns_display_info *x_display_list; /* Chain of existing displays */ 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; @@ -5316,6 +5319,34 @@ not_in_argv (NSString *arg) 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; + emacs_event->timestamp = EV_TIMESTAMP(e); + if (q_event_ptr) + { + n_emacs_events_pending++; + kbd_buffer_store_event_hold (emacs_event, q_event_ptr); + } + else + hold_event (emacs_event); + + EVENT_INIT (*emacs_event); + } + 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; --Apple-Mail=_D7BBB093-89FA-4E9E-9860-C2F33CD88E54--