From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Manuel Giraud via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#67794: 30.0.50; mouse-face is not respected on SVG images Date: Tue, 19 Dec 2023 13:45:03 +0100 Message-ID: <87msu6tl80.fsf@ledu-giraud.fr> References: <838r5yroyp.fsf@gnu.org> <87v8920xlb.fsf@ledu-giraud.fr> <835y12rle4.fsf@gnu.org> <87bkatgnj6.fsf@ledu-giraud.fr> <83plz9qgsb.fsf@gnu.org> <877clh868o.fsf@ledu-giraud.fr> <83jzphqeto.fsf@gnu.org> <87frzzai4h.fsf@ledu-giraud.fr> <87il4v8iim.fsf@ledu-giraud.fr> Reply-To: Manuel Giraud Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="4892"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Cc: gerd.moellmann@gmail.com, 67794@debbugs.gnu.org, Eli Zaretskii To: Alan Third Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Tue Dec 19 13:46:15 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1rFZUD-00010y-JZ for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 19 Dec 2023 13:46:13 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rFZU3-0006pN-DG; Tue, 19 Dec 2023 07:46:03 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rFZU0-0006mu-IZ for bug-gnu-emacs@gnu.org; Tue, 19 Dec 2023 07:46:00 -0500 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rFZTz-0005Ua-6w for bug-gnu-emacs@gnu.org; Tue, 19 Dec 2023 07:46:00 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rFZU1-0005HX-Ns for bug-gnu-emacs@gnu.org; Tue, 19 Dec 2023 07:46:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Manuel Giraud Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 19 Dec 2023 12:46:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 67794 X-GNU-PR-Package: emacs Original-Received: via spool by 67794-submit@debbugs.gnu.org id=B67794.170298991614325 (code B ref 67794); Tue, 19 Dec 2023 12:46:01 +0000 Original-Received: (at 67794) by debbugs.gnu.org; 19 Dec 2023 12:45:16 +0000 Original-Received: from localhost ([127.0.0.1]:34567 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rFZTI-0003ho-1O for submit@debbugs.gnu.org; Tue, 19 Dec 2023 07:45:16 -0500 Original-Received: from ledu-giraud.fr ([51.159.28.247]:4272) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rFZTF-0003W0-C6 for 67794@debbugs.gnu.org; Tue, 19 Dec 2023 07:45:14 -0500 DKIM-Signature: v=1; a=ed25519-sha256; c=simple/simple; s=ed25519; bh=t415RFaN Fv6/oUusRVcd32ZiQaCJ/syQa+iVX92gCsk=; h=date:references:in-reply-to: subject:cc:to:from; d=ledu-giraud.fr; b=XbdCaMZok7ZtCPU7WOjVU03uVfSGM4 uhUE0ND8rBv4kHaw6r30NQ1xIOOtM92mJnnWJnTec/0vDpNInTuZ/6AQ== DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; s=rsa; bh=t415RFaNFv6/oUus RVcd32ZiQaCJ/syQa+iVX92gCsk=; h=date:references:in-reply-to:subject: cc:to:from; d=ledu-giraud.fr; b=b71CGsmG09k1pRojZEOC9+qiQFpfDNvZuNJwyc e2bLMMAftvwgj6ohRrou91hsFUon/KhUKy5TASFnzoNIR7P/NIqCJ5bSRAuv9Dc0aG/zjx zxj4LKI9w4yAFknn5K2syx5IPDRdWnRMwk1CztA3xslXsEBE9Kp1xP7pg+KhHCYqUyiPpb g+2OCKA0vB4YBSsMhYICxPezGgwipi/zwasbwPywGEjP9J/EMcmPm06O1WpYgnpRzuKdnS wrL1v46CC+i/MV8oDwxxGVYXwJasQzGASiRRXQ21wkJVFPKBeo53oLKb3Auhno9QdtzFt7 mzI+7DsDpPpz525u1zraJ3iw== Original-Received: from computer ( [10.1.1.1]) by ledu-giraud.fr (OpenSMTPD) with ESMTPSA id efe54f47 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Tue, 19 Dec 2023 13:45:09 +0100 (CET) In-Reply-To: (Alan Third's message of "Mon, 18 Dec 2023 19:48:06 +0000") X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list 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-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:276509 Archived-At: --=-=-= Content-Type: text/plain Alan Third writes: [...] > Thanks, that worked. It was fine in NS (under GNUstep no less! It's > unusual for GNUstep to work when other things don't) but failed under > GTK/Cairo. > > I believe that we need to do some final set-up for the image under > X/GTK/whatever and it looks as though this is all that's needed: > > id = lookup_image (f, s->img->spec, hlinfo->mouse_face_face_id); > s->img = IMAGE_FROM_ID (f, id); > prepare_image_for_display (f, s->img); <------ > > Under X we need to send the image to the X server, and under Cairo it > does some other stuff. That's what prepare_image_for_display does. It > does nothing under NS, so the image worked fine under GNUstep. Thank you Alan! That does the trick. So here is an updated version of the patch that works with XRender (i'll test with cairo). -- Manuel Giraud --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Respect-mouse-face-on-image-glyphs-bug-67794.patch >From 10c123988308cea24384205d118af75fdc09635c Mon Sep 17 00:00:00 2001 From: Manuel Giraud Date: Tue, 19 Dec 2023 12:25:24 +0100 Subject: [PATCH] Respect mouse-face on image glyphs (bug#67794) * src/xdisp.c (draw_glyphs): Maybe update image glyphs with mouse face features before drawing. --- src/xdisp.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/xdisp.c b/src/xdisp.c index 75d769600c4..cd9ce57c0da 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -30985,6 +30985,21 @@ draw_glyphs (struct window *w, int x, struct glyph_row *row, } } + /* Update image glyphs with mouse face features. */ + if (hl == DRAW_MOUSE_FACE) + { + Mouse_HLInfo *hlinfo = MOUSE_HL_INFO (f); + for (s = head; s; s = s->next) + if (s->first_glyph->type == IMAGE_GLYPH) + if (s->img) + { + ptrdiff_t id; + id = lookup_image (f, s->img->spec, hlinfo->mouse_face_face_id); + s->img = IMAGE_FROM_ID (f, id); + prepare_image_for_display(f, s->img); + } + } + /* Draw all strings. */ for (s = head; s; s = s->next) FRAME_RIF (f)->draw_glyph_string (s); -- 2.43.0 --=-=-=--