From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: YAMAMOTO Mitsuharu Newsgroups: gmane.emacs.devel Subject: Re: About x_draw_xwidget_glyph_string Date: Mon, 11 Apr 2016 09:04:45 +0900 Organization: Faculty of Science, Chiba University Message-ID: References: <83oac93bnr.fsf@gnu.org> <83shyvi64r.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII X-Trace: ger.gmane.org 1460333117 31704 80.91.229.3 (11 Apr 2016 00:05:17 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 11 Apr 2016 00:05:17 +0000 (UTC) Cc: Eli Zaretskii , emacs-devel@gnu.org To: joakim@verona.se Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Apr 11 02:05:16 2016 Return-path: Envelope-to: ged-emacs-devel@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 1apPLw-0006Mb-Df for ged-emacs-devel@m.gmane.org; Mon, 11 Apr 2016 02:05:16 +0200 Original-Received: from localhost ([::1]:38336 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1apPLv-0005Fs-PC for ged-emacs-devel@m.gmane.org; Sun, 10 Apr 2016 20:05:15 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:36432) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1apPLc-0005Cw-3R for emacs-devel@gnu.org; Sun, 10 Apr 2016 20:04:57 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1apPLb-0001xg-6L for emacs-devel@gnu.org; Sun, 10 Apr 2016 20:04:56 -0400 Original-Received: from mathmail.math.s.chiba-u.ac.jp ([133.82.132.2]:59598) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1apPLV-0001wC-6G; Sun, 10 Apr 2016 20:04:49 -0400 Original-Received: from fermat1.math.s.chiba-u.ac.jp (fermat [192.168.32.10]) by mathmail.math.s.chiba-u.ac.jp (Postfix) with ESMTP id 36990F08F6; Mon, 11 Apr 2016 09:04:45 +0900 (JST) (envelope-from mituharu@math.s.chiba-u.ac.jp) In-Reply-To: User-Agent: Wanderlust/2.14.0 (Africa) SEMI/1.14.6 (Maruoka) FLIM/1.14.8 (=?ISO-8859-4?Q?Shij=F2?=) APEL/10.6 Emacs/22.3 (sparc-sun-solaris2.8) MULE/5.0 (SAKAKI) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 133.82.132.2 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:202844 Archived-At: >>>>> On Sun, 10 Apr 2016 17:29:26 +0900, YAMAMOTO Mitsuharu said: >>> I think clip_top should use text_area_y and clip_bottom should use >>> text_area_height. >>> >>> Other than those two issues, what other problems do you see? >> Well, I saw nothing at all :) >> This patch seems to work during some brief testing. > C-x 2 or C-x 3 makes the display incorrect. > I'm not sure if I understand the intended meaning of clip_* variables > correctly, but shouldn't this part be something like below? > YAMAMOTO Mitsuharu > mituharu@math.s.chiba-u.ac.jp > diff --git a/src/xwidget.c b/src/xwidget.c > index 7e96307..0777777 100644 > --- a/src/xwidget.c > +++ b/src/xwidget.c > @@ -580,20 +580,14 @@ x_draw_xwidget_glyph_string (struct glyph_string *s) > int text_area_x, text_area_y, text_area_width, text_area_height; > - window_box (s->w, > - ANY_AREA, > - &text_area_x, > - &text_area_y, > - &text_area_width, > - &text_area_height); > - clip_right = min (xww->width, > - text_area_width); > - clip_left = max (0, > - text_area_x); > - > - clip_bottom = min (xww->height, > - text_area_height); > - clip_top = max (0, text_area_y); > + window_box (s->w, TEXT_AREA, &text_area_x, &text_area_y, > + &text_area_width, &text_area_height); > + clip_left = max (0, text_area_x - x); > + clip_right = max (clip_left, > + min (xww->width, text_area_x + text_area_width - x)); > + clip_top = max (0, text_area_y - y); > + clip_bottom = max (clip_top, > + min (xww->height, text_area_y + text_area_height - y)); > /* We are concerned with movement of the onscreen area. The area > might sit still when the widget actually moves. This happens > @@ -622,8 +616,7 @@ x_draw_xwidget_glyph_string (struct glyph_string *s) > || xv->clip_bottom != clip_bottom > || xv->clip_top != clip_top || xv->clip_left != clip_left) > { > - gtk_widget_set_size_request (xv->widgetwindow, clip_right + clip_left, > - clip_bottom + clip_top); > + gtk_widget_set_size_request (xv->widgetwindow, clip_right, clip_bottom); > gtk_fixed_move (GTK_FIXED (xv->widgetwindow), xv->widget, -clip_left, > -clip_top); Oops, I meant "gtk_widget_set_size_request (xv->widgetwindow, clip_right - clip_left, clip_bottom - clip_top);" for the last hunk. Could you double check if this matches your intended meaning of clip_* variables? Adding some comments to the corresponding members in src/xwidget.h would be nice. Also, could you also take a look at the other issue of "xwidget-view-list gets longer and longer" I mentioned in the original message? YAMAMOTO Mitsuharu mituharu@math.s.chiba-u.ac.jp