unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: "Jan Djärv" <jan.h.d@swipnet.se>
To: martin rudalics <rudalics@gmx.at>
Cc: "16013@debbugs.gnu.org" <16013@debbugs.gnu.org>
Subject: bug#16013: 24.3.50; Rows in height is interpreted as pixels.
Date: Tue, 3 Dec 2013 08:53:08 +0100	[thread overview]
Message-ID: <F7B1AAD0-75DE-400A-B18D-E54A84060284@swipnet.se> (raw)
In-Reply-To: <529CCE48.9090404@gmx.at>

Hello. 

> 2 dec 2013 kl. 19:15 skrev martin rudalics <rudalics@gmx.at>:
> 
> >> (/ (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.

Why not check in the patch at once instead of posting it here?
The current trunk is unusable, so it must be an improvement. 

Also, did you test on the other X variants, i.e. Lucid, Motif and no toolkit?  This seems it only affects Gtk+..

    Jan D. 

> 
> Thanks, martin
> === 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 */
> 
> 





  parent reply	other threads:[~2013-12-03  7:53 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-30 13:08 bug#16013: 24.3.50; Rows in height is interpreted as pixels Jan Djärv
2013-11-30 15:00 ` martin rudalics
2013-11-30 18:52   ` Jan Djärv
2013-12-01  9:44     ` martin rudalics
2013-12-01 10:01       ` Jan Djärv
2013-12-01 11:24         ` martin rudalics
2013-12-01 12:02           ` Jan Djärv
2013-12-02 18:15             ` martin rudalics
2013-12-02 22:03               ` Stephen Berman
2013-12-03  7:56                 ` martin rudalics
2013-12-03  9:13                   ` Stephen Berman
2013-12-03 18:34                     ` martin rudalics
2013-12-03 20:02                       ` Stephen Berman
2013-12-03  7:53               ` Jan Djärv [this message]
2013-12-03  7:58                 ` martin rudalics
2013-12-03 16:30                   ` Jan Djärv
2013-12-03 18:34                     ` martin rudalics
2013-12-03 19:30                       ` Jan Djärv
2013-12-03 19:45                         ` Jan Djärv
2013-12-04 18:06                           ` martin rudalics
2013-12-07 17:53                             ` Jan Djärv
2013-12-07 18:09                               ` martin rudalics
2013-12-09 18:26                               ` martin rudalics
2014-01-11 14:01                           ` martin rudalics
2014-01-11 17:46                             ` Jan Djärv
2014-01-12  9:54                               ` martin rudalics
2014-01-12 11:13                                 ` Jan Djärv
2014-01-12 11:46                                   ` martin rudalics
2014-01-12 20:25                                   ` Stefan Monnier
2014-01-12 22:21                                     ` Jan Djärv
2014-01-14 17:30                                   ` Jan Djärv
2014-01-14 18:10                                     ` martin rudalics
2014-01-16 10:03                                   ` martin rudalics
2014-01-16 10:14                                     ` martin rudalics
2014-01-18 11:30                                     ` Jan Djärv
2014-01-18 12:07                                       ` martin rudalics
2014-01-29 10:14                                       ` martin rudalics
2020-09-09 13:07                                         ` Lars Ingebrigtsen
2020-09-09 14:46                                           ` Eli Zaretskii
2020-09-10 12:40                                             ` Lars Ingebrigtsen
2013-12-04 18:06                         ` martin rudalics

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=F7B1AAD0-75DE-400A-B18D-E54A84060284@swipnet.se \
    --to=jan.h.d@swipnet.se \
    --cc=16013@debbugs.gnu.org \
    --cc=rudalics@gmx.at \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).