bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#18789: 24.4; Can't resize frame pixelwise on w32, causing partial co


From: martin rudalics
Subject: bug#18789: 24.4; Can't resize frame pixelwise on w32, causing partial columns when using non-standard font
Date: Wed, 22 Oct 2014 15:43:01 +0200

> Under MS-Windows, it appears that the width of the frame only can be a
> multiple of the character width. Unfortunately, the width of the fringes
> and scrollbars used by side-by-side windows does not always add up to full
> characters -- if you use a font other than the default. The effect is that
> when using side-by-side windows, you could get a partial column. (Partial
> columns are not desirable, for example, they work differently when you
> place the cursor on the end of a full line.)

In order to obtain pixelwise resizing you have to set
`frame-resize-pixelwise' to a non-nil-value.  Please do that.

> Steps to repeat 1:
>      emacs -q
>
>      Switch to *scratch*: C-x b RET
>
>      Evaluate:
>      (set-default-font
>        (create-fontset-from-ascii-font
>         "-raster-Terminal-bold-r-normal-normal-8-60-96-96-c-*-ms-oemlatin"))
>
>      Split the window using: C-x 3
>
>      Insert a long line: C-u 37 x
>
>      Here, the cursor is at the end of the line in the left window, it is
> rendered in the right fringe. (OK)
>
>      Go to the other window: C-x o
>
>      Place the cursor at the end: C-x >
>
>      Here, the cursor is visible in the partially visible column. (NOT OK)

Sorry.  Such problems can't be avoided, even without fringes and scroll
bars, when the window size is not a multiple of the size of the default
font.  However, you can always calculate your "ideal" frame size based
on the number of side-by-side windows and the widths of the font, the
scroll bars and the fringes.  Provided `frame-resize-pixelwise' is
non-nil, `set-frame-width' should then make the frame fit this size.

> Steps to repeat 2:
>
>      emacs -q
>
>       Evaluate the following:
>
>      (set-frame-width (selected-frame) 607 nil t)
>      (frame-pixel-width)
>
>      Here, 632 is returned.
>
>      (set-frame-width (selected-frame) 608 nil t)
>      (frame-pixel-width)
>
>      Here, 640 is returned. Clearly, the width of the frame is always a
> multiple of the character width.

Here on windows XP doing

(setq frame-resize-pixelwise t)
(set-frame-width (selected-frame) 607 nil t)
(frame-text-width)

yields 607 and

(setq frame-resize-pixelwise t)
(set-frame-width (selected-frame) 608 nil t)
(frame-text-width)

yields 608, as expected.

martin





reply via email to

[Prev in Thread] Current Thread [Next in Thread]