From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: martin rudalics Newsgroups: gmane.emacs.bugs Subject: bug#16013: 24.3.50; Rows in height is interpreted as pixels. Date: Mon, 02 Dec 2013 19:15:36 +0100 Message-ID: <529CCE48.9090404@gmx.at> References: <5579FC36-5F75-4679-87F6-048C5B7326F6@swipnet.se> <5299FD88.2090600@gmx.at> <529A33F4.5030606@swipnet.se> <529B0519.3010902@gmx.at> <529B1C71.9020707@gmx.at> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------030700060506020709030907" X-Trace: ger.gmane.org 1386008194 15920 80.91.229.3 (2 Dec 2013 18:16:34 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 2 Dec 2013 18:16:34 +0000 (UTC) Cc: 16013@debbugs.gnu.org To: Jan =?UTF-8?Q?Dj=C3=A4rv?= Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Dec 02 19:16:38 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 1VnY2v-0000eO-VN for geb-bug-gnu-emacs@m.gmane.org; Mon, 02 Dec 2013 19:16:38 +0100 Original-Received: from localhost ([::1]:38261 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VnY2v-000774-Fc for geb-bug-gnu-emacs@m.gmane.org; Mon, 02 Dec 2013 13:16:37 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:33187) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VnY2T-0006YF-Le for bug-gnu-emacs@gnu.org; Mon, 02 Dec 2013 13:16:16 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VnY2M-0008Fm-Bo for bug-gnu-emacs@gnu.org; Mon, 02 Dec 2013 13:16:09 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:40979) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VnY2M-0008Ff-8v for bug-gnu-emacs@gnu.org; Mon, 02 Dec 2013 13:16:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1VnY2L-0006ku-Td for bug-gnu-emacs@gnu.org; Mon, 02 Dec 2013 13:16:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: martin rudalics Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 02 Dec 2013 18:16:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 16013 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 16013-submit@debbugs.gnu.org id=B16013.138600815125946 (code B ref 16013); Mon, 02 Dec 2013 18:16:01 +0000 Original-Received: (at 16013) by debbugs.gnu.org; 2 Dec 2013 18:15:51 +0000 Original-Received: from localhost ([127.0.0.1]:54998 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1VnY2B-0006kP-1a for submit@debbugs.gnu.org; Mon, 02 Dec 2013 13:15:51 -0500 Original-Received: from mout.gmx.net ([212.227.17.20]:56882) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1VnY28-0006k9-HE for 16013@debbugs.gnu.org; Mon, 02 Dec 2013 13:15:49 -0500 Original-Received: from [62.47.32.26] ([62.47.32.26]) by mail.gmx.com (mrgmx103) with ESMTPSA (Nemesis) id 0LgI0W-1VHYoE0KUW-00ndKr for <16013@debbugs.gnu.org>; Mon, 02 Dec 2013 19:15:42 +0100 In-Reply-To: X-Provags-ID: V03:K0:fuIr5PAMzE4SJdklfnpjX6hY6DLliH89ORpNuozguGwKRmAxsyc u/45m4sXlbCYkKVrXRjm8alZm9Lhh4lkwlWiT1l+cBrvfSaosdcvsdeMiFcXQnUZ5GAAySH Q69zN0ilgm+tt94ptC4+OXgMHUWbLTC8vYrTpQJyoLAHssZaByRrwphtKa+7WZ4jpRpzFfG pbnBpUy8CzJ3FVE1nYmdQ== 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:81268 Archived-At: This is a multi-part message in MIME format. --------------030700060506020709030907 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit >> (/ (frame-text-height) (frame-char-height)) > > 47. > >> (/ (frame-text-width) (frame-char-width)) > > This is a bit random. On 5 starts, I got 79 once, 83 once and 84 three times. > And the number of columns match, 79, 83 and 84. My old patch was silly - it propagated the frame's pixel sizes instead of the text sizes to xg_frame_set_char_size. Please try the attached one. I still have two problems here: The height of the initial frame is by six lines too small and a new frame made via C-x 5 2 is two lines higher than the initial one. Thanks, martin --------------030700060506020709030907 Content-Type: text/plain; name="change-frame-size.diff" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="change-frame-size.diff" === modified file 'src/gtkutil.c' --- src/gtkutil.c 2013-11-30 09:25:31 +0000 +++ src/gtkutil.c 2013-12-02 16:39:10 +0000 @@ -940,26 +940,12 @@ void xg_frame_set_char_size (struct frame *f, int width, int height) { - int pixelwidth; + int pixelwidth = FRAME_TEXT_TO_PIXEL_WIDTH (f, width); int pixelheight = FRAME_TEXT_TO_PIXEL_HEIGHT (f, height); if (FRAME_PIXEL_HEIGHT (f) == 0) return; - /* Take into account the size of the scroll bar. Always use the - number of columns occupied by the scroll bar here otherwise we - might end up with a frame width that is not a multiple of the - frame's character width which is bad for vertically split - windows. */ - f->scroll_bar_actual_width - = FRAME_SCROLL_BAR_COLS (f) * FRAME_COLUMN_WIDTH (f); - - compute_fringe_widths (f, 0); - - /* FRAME_TEXT_COLS_TO_PIXEL_WIDTH uses scroll_bar_actual_width, so call it - after calculating that value. */ - pixelwidth = FRAME_TEXT_TO_PIXEL_WIDTH (f, width); - /* Do this before resize, as we don't know yet if we will be resized. */ xg_clear_under_internal_border (f); @@ -987,11 +973,7 @@ x_wait_for_event (f, ConfigureNotify); } else - { - change_frame_size (f, width, height, 0, 1, 0, 1); - FRAME_PIXEL_WIDTH (f) = pixelwidth; - FRAME_PIXEL_HEIGHT (f) = pixelheight; - } + change_frame_size (f, width, height, 0, 1, 0, 1); } /* Handle height/width changes (i.e. add/remove/move menu/toolbar). @@ -1095,7 +1077,7 @@ && FRAME_X_DISPLAY (f) == dpy) { x_set_scroll_bar_default_width (f); - xg_frame_set_char_size (f, FRAME_COLS (f), FRAME_LINES (f)); + xg_frame_set_char_size (f, FRAME_TEXT_WIDTH (f), FRAME_TEXT_HEIGHT (f)); } } } === modified file 'src/gtkutil.h' --- src/gtkutil.h 2013-09-17 07:06:42 +0000 +++ src/gtkutil.h 2013-12-02 15:49:38 +0000 @@ -139,7 +139,7 @@ extern void xg_frame_resized (struct frame *f, int pixelwidth, int pixelheight); -extern void xg_frame_set_char_size (struct frame *f, int cols, int rows); +extern void xg_frame_set_char_size (struct frame *f, int width, int height); extern GtkWidget * xg_win_to_widget (Display *dpy, Window wdesc); extern void xg_display_open (char *display_name, Display **dpy); === modified file 'src/xfns.c' --- src/xfns.c 2013-11-30 09:25:31 +0000 +++ src/xfns.c 2013-12-02 14:36:33 +0000 @@ -3069,6 +3069,20 @@ happen. */ init_frame_faces (f); + /* PXW: This is a duplicate from below. We have to do it here since + otherwise x_set_tool_bar_lines will work with the character sizes + installed by init_frame_faces while the frame's pixel size is still + calculated from a character size of 1 and we subsequently hit the + eassert (height >= 0) assertion in window_box_height. The + non-pixelwise code apparently worked around this because it had one + frame line vs one toolbar line which left us with a zero root + window height which was obviously wrong as well ... */ + width = FRAME_TEXT_WIDTH (f); + height = FRAME_TEXT_HEIGHT (f); + FRAME_TEXT_HEIGHT (f) = 0; + SET_FRAME_WIDTH (f, 0); + change_frame_size (f, width, height, 1, 0, 0, 1); + /* Set the menu-bar-lines and tool-bar-lines parameters. We don't look up the X resources controlling the menu-bar and tool-bar here; they are processed specially at startup, and reflected in === modified file 'src/xterm.c' --- src/xterm.c 2013-11-30 16:25:51 +0000 +++ src/xterm.c 2013-12-02 17:16:35 +0000 @@ -8745,6 +8745,8 @@ { block_input (); + check_frame_size (f, &width, &height, pixelwise); + if (NILP (tip_frame) || XFRAME (tip_frame) != f) { int text_width, text_height; @@ -8771,14 +8773,20 @@ change_frame_size (f, text_width, text_height, 0, 1, 0, 1); } + if (! pixelwise) + { + width = width * FRAME_COLUMN_WIDTH (f); + height = height * FRAME_LINE_HEIGHT (f); + } + #ifdef USE_GTK if (FRAME_GTK_WIDGET (f)) xg_frame_set_char_size (f, width, height); else - x_set_window_size_1 (f, change_gravity, width, height, pixelwise); + x_set_window_size_1 (f, change_gravity, width, height, 1); #else /* not USE_GTK */ - x_set_window_size_1 (f, change_gravity, width, height, pixelwise); + x_set_window_size_1 (f, change_gravity, width, height, 1); #endif /* not USE_GTK */ --------------030700060506020709030907--