From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Jan =?UTF-8?Q?Dj=C3=A4rv?= Newsgroups: gmane.emacs.bugs Subject: bug#6888: Patch for mouse-autoselect-window on NextStep platforms Date: Mon, 26 Aug 2013 17:07:14 +0200 Message-ID: <7C338BEC-71B9-4790-9F53-AF95FF80F3ED@swipnet.se> References: <3A99758B-67F8-471C-A702-335D6BB5DC14@cse.unsw.edu.au> <52170AB7.7080303@gmx.at> <521B5529.2040408@gmx.at> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 (Mac OS X Mail 6.5 \(1508\)) Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable X-Trace: ger.gmane.org 1377529702 29244 80.91.229.3 (26 Aug 2013 15:08:22 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 26 Aug 2013 15:08:22 +0000 (UTC) Cc: Davor Cubranic , 6888@debbugs.gnu.org To: martin rudalics Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Aug 26 17:08:20 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 1VDyOy-0004HM-BE for geb-bug-gnu-emacs@m.gmane.org; Mon, 26 Aug 2013 17:08:20 +0200 Original-Received: from localhost ([::1]:51812 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VDyOx-0001I3-QU for geb-bug-gnu-emacs@m.gmane.org; Mon, 26 Aug 2013 11:08:19 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:34310) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VDyOn-00018Y-8U for bug-gnu-emacs@gnu.org; Mon, 26 Aug 2013 11:08:15 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VDyOh-0004Bf-6v for bug-gnu-emacs@gnu.org; Mon, 26 Aug 2013 11:08:09 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:34625) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VDyOh-0004Bb-2t for bug-gnu-emacs@gnu.org; Mon, 26 Aug 2013 11:08:03 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1VDyOg-0000zU-II for bug-gnu-emacs@gnu.org; Mon, 26 Aug 2013 11:08:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Jan =?UTF-8?Q?Dj=C3=A4rv?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 26 Aug 2013 15:08: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: patch help Original-Received: via spool by 6888-submit@debbugs.gnu.org id=B6888.13775296373748 (code B ref 6888); Mon, 26 Aug 2013 15:08:02 +0000 Original-Received: (at 6888) by debbugs.gnu.org; 26 Aug 2013 15:07:17 +0000 Original-Received: from localhost ([127.0.0.1]:57174 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1VDyNw-0000yN-Ms for submit@debbugs.gnu.org; Mon, 26 Aug 2013 11:07:17 -0400 Original-Received: from mail01.bdtv.se ([176.10.222.34]:38055) by debbugs.gnu.org with smtp (Exim 4.80) (envelope-from ) id 1VDyNt-0000yD-T1 for 6888@debbugs.gnu.org; Mon, 26 Aug 2013 11:07:15 -0400 Original-Received: (qmail 29561 invoked by uid 89); 26 Aug 2013 15:07:11 -0000 Original-Received: from h-46-59-42-57.na.cust.bahnhof.se (HELO coolsville.localdomain) (boel.djarv@bdtv.se@46.59.42.57) by mail01.bdtv.se with ESMTPA; 26 Aug 2013 15:07:11 -0000 Original-Received: from [172.20.199.13] (unknown [172.20.199.13]) by coolsville.localdomain (Postfix) with ESMTPSA id B553D1A008F; Mon, 26 Aug 2013 15:07:11 +0000 (UTC) In-Reply-To: <521B5529.2040408@gmx.at> X-Mailer: Apple Mail (2.1508) 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:77745 Archived-At: 26 aug 2013 kl. 15:16 skrev martin rudalics : >> It does but I don't want to check it in as is. It needs formatting = fixes and there is some unfortunate code duplication that needs to be = done in another way. >=20 > Can you please tell Davor how to rewrite it? >=20 > Thanks, martin =3D=3D=3D modified file 'src/nsterm.m' --- src/nsterm.m 2013-08-23 04:03:25 +0000 +++ src/nsterm.m 2013-08-24 09:18:57 +0000 @@ -184,6 +184,9 @@ Lisp_Object ns_display_name_list; long context_menu_value =3D 0; =20 +/* 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 =3D EV_TIMESTAMP (e); = \ if (q_event_ptr) = \ { = \ @@ -5490,6 +5498,27 @@ previous_help_echo_string =3D help_echo_string; help_echo_string =3D Qnil; =20 + if (!NILP (Vmouse_autoselect_window)) + { + NSTRACE (mouse_autoselect_window); + Lisp_Object window; + window =3D 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 =3D SELECT_WINDOW_EVENT; + emacs_event->frame_or_window =3D window; + EV_TRAILER2 (e); + } + last_window =3D window; + } + if (!note_mouse_movement (emacsframe, last_mouse_motion_position.x, last_mouse_motion_position.y)) help_echo_string =3D previous_help_echo_string;