From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.bugs Subject: bug#17588: 24.3.91; mouse-face glitchy Date: Thu, 29 May 2014 18:56:49 +0300 Message-ID: <83k394h932.fsf@gnu.org> References: <87lhtpwuh5@ristopher.com> <83a9a5k6dw.fsf@gnu.org> <87ppj1sjz9@ristopher.com> <837g59jmd2.fsf@gnu.org> <874n0dkkdz@ristopher.com> <8361ksk0ug.fsf@gnu.org> <87mwe4cn20@ristopher.com> <83tx8chrkn.fsf@gnu.org> <87egzf7klh@ristopher.com> <83lhtni4xv.fsf@gnu.org> <87sinu2ilw@ristopher.com> <83zji1hhn2.fsf@gnu.org> <87y4xl3bjb@ristopher.com> Reply-To: Eli Zaretskii NNTP-Posting-Host: plane.gmane.org X-Trace: ger.gmane.org 1401379118 5560 80.91.229.3 (29 May 2014 15:58:38 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 29 May 2014 15:58:38 +0000 (UTC) Cc: 17588@debbugs.gnu.org To: Christopher Schmidt Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Thu May 29 17:58:31 2014 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 1Wq2it-00030T-2A for geb-bug-gnu-emacs@m.gmane.org; Thu, 29 May 2014 17:58:31 +0200 Original-Received: from localhost ([::1]:48831 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wq2is-00089b-M3 for geb-bug-gnu-emacs@m.gmane.org; Thu, 29 May 2014 11:58:30 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:49962) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wq2iX-0007jH-1M for bug-gnu-emacs@gnu.org; Thu, 29 May 2014 11:58:15 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Wq2iQ-0004me-Ay for bug-gnu-emacs@gnu.org; Thu, 29 May 2014 11:58:08 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:37373) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wq2iQ-0004mJ-8K for bug-gnu-emacs@gnu.org; Thu, 29 May 2014 11:58:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1Wq2iP-00043N-Sl for bug-gnu-emacs@gnu.org; Thu, 29 May 2014 11:58:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 29 May 2014 15:58:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 17588 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-Cc: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.140137903315487 (code B ref -1); Thu, 29 May 2014 15:58:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 29 May 2014 15:57:13 +0000 Original-Received: from localhost ([127.0.0.1]:36250 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Wq2hZ-00041e-5N for submit@debbugs.gnu.org; Thu, 29 May 2014 11:57:13 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:47209) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Wq2hT-00040y-Qj for submit@debbugs.gnu.org; Thu, 29 May 2014 11:57:07 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Wq2hH-0004LJ-Tq for submit@debbugs.gnu.org; Thu, 29 May 2014 11:56:58 -0400 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:32993) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wq2hH-0004LF-RZ for submit@debbugs.gnu.org; Thu, 29 May 2014 11:56:51 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:48845) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wq2hB-0007dA-9i for bug-gnu-emacs@gnu.org; Thu, 29 May 2014 11:56:51 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Wq2h4-0004HJ-KF for bug-gnu-emacs@gnu.org; Thu, 29 May 2014 11:56:45 -0400 Original-Received: from mtaout26.012.net.il ([80.179.55.182]:59635) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wq2h4-0004Gd-73 for bug-gnu-emacs@gnu.org; Thu, 29 May 2014 11:56:38 -0400 Original-Received: from conversion-daemon.mtaout26.012.net.il by mtaout26.012.net.il (HyperSendmail v2007.08) id <0N6C00J00EB5QA00@mtaout26.012.net.il> for bug-gnu-emacs@gnu.org; Thu, 29 May 2014 18:53:20 +0300 (IDT) Original-Received: from HOME-C4E4A596F7 ([87.69.4.28]) by mtaout26.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0N6C00BCAESWUIA0@mtaout26.012.net.il>; Thu, 29 May 2014 18:53:20 +0300 (IDT) In-reply-to: <87y4xl3bjb@ristopher.com> X-012-Sender: halo1@inter.net.il X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). 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:89692 Archived-At: > From: Christopher Schmidt > Date: Wed, 28 May 2014 16:15:25 -0400 (EDT) > > > So are you saying that clear_mouse_face is never called with non-nil > > hlinfo->mouse_face_window? IOW, if you put a conditional breakpoint > > in clear_mouse_face, like this: > > > > (gdb) break clear_mouse_face if hlinfo->mouse_face_window != Qnil > > > > then this breakpoint never breaks, is that right? > > Yes, it never breaks. > > > If so, I'd like to see which code resets mouse_face_window to nil, > > after it is set by show_mouse_face. (We know that it must be set by > > show_mouse_face because you do see the highlighting when the mouse is > > above text with mouse-face.) To this end, set a breakpoint in > > show_mouse_face, like this: > > > > (gdb) break show_mouse_face if draw == DRAW_MOUSE_FACE > > The watchpoint is triggered in turns as part of the following two > contexts. Qnil is 12026738. > > Hardware watchpoint 12: -location hlinfo->mouse_face_window > > Old value = 12026738 > New value = 18193773 > mouse_face_from_buffer_pos (disp_string=12026738, after_string=12026738, > before_string=12026738, end_charpos=, start_charpos=6711, > mouse_charpos=6717, hlinfo=, window=18193773) at xdisp.c:28062 > 28062 !hlinfo->mouse_face_hidden, -1); This is where the mouse highlight is turned on. > Hardware watchpoint 12: -location hlinfo->mouse_face_window > > Old value = 18193773 > New value = 12026738 > reset_mouse_highlight (hlinfo=0x13960a0) at dispextern.h:2725 > 2725 hlinfo->mouse_face_overlay = Qnil; > #0 reset_mouse_highlight (hlinfo=0x13960a0) at dispextern.h:2725 > #1 x_update_window_end (w=0x1139998, cursor_on_p=, > mouse_face_overwritten_p=) at xterm.c:600 > #2 0x000000000041b17d in update_window (w=w@entry=0x1139998, > force_p=, force_p@entry=true) at dispnew.c:3486 And this seems to be our villain. Does the patch below help? === modified file 'src/xterm.c' --- src/xterm.c 2014-04-17 09:07:58 +0000 +++ src/xterm.c 2014-05-29 15:54:27 +0000 @@ -597,7 +597,13 @@ x_update_window_end (struct window *w, b /* If a row with mouse-face was overwritten, arrange for XTframe_up_to_date to redisplay the mouse highlight. */ if (mouse_face_overwritten_p) - reset_mouse_highlight (MOUSE_HL_INFO (XFRAME (w->frame))); + { + Mouse_HLInfo *hlinfo = MOUSE_HL_INFO (XFRAME (w->frame)); + + hlinfo->mouse_face_beg_row = hlinfo->mouse_face_beg_col = -1; + hlinfo->mouse_face_end_row = hlinfo->mouse_face_end_col = -1; + hlinfo->mouse_face_window = Qnil; + } }