GNU bug report logs - #5848
23.1.95; bands of background after font change if --with-x-toolkit=no

Previous Next

Package: emacs;

Reported by: Ted Phelps <phelps <at> pobox.com>

Date: Tue, 6 Apr 2010 14:28:02 UTC

Severity: normal

Done: Jan Djärv <jan.h.d <at> swipnet.se>

Bug is archived. No further changes may be made.

Full log


Message #41 received at 5848 <at> debbugs.gnu.org (full text, mbox):

From: YAMAMOTO Mitsuharu <mituharu <at> math.s.chiba-u.ac.jp>
To: Jan Djärv <jan.h.d <at> swipnet.se>
Cc: Ted Phelps <phelps <at> pobox.com>, 5848 <at> debbugs.gnu.org,
	YAMAMOTO Mitsuharu <mituharu <at> math.s.chiba-u.ac.jp>
Subject: Re: bug#5848: 23.1.95;
	bands of background after font change if --with-x-toolkit=no
Date: Wed, 07 Apr 2010 18:48:22 +0900
>>>>> On Wed, 07 Apr 2010 11:18:25 +0200, Jan Djärv <jan.h.d <at> swipnet.se> said:

>> FRAME_COL_TO_PIXEL_X and FRAME_LINE_TO_PIXEL_Y include the left and
>> top side internal border width, respectively.  So, the internal border
>> is already counted twice in FRAME_TEXT_COLS_TO_PIXEL_WIDTH and
>> FRAME_TEXT_LINES_TO_PIXEL_HEIGHT above.

> Upon further investigation, this is true for cols, but not always for lines.
> We have

> #define FRAME_LINE_TO_PIXEL_Y(f, row) \
>    ((row < FRAME_TOP_MARGIN (f) ? 0 : FRAME_INTERNAL_BORDER_WIDTH (f))	\
>     + (row) * FRAME_LINE_HEIGHT (f))


> So if row is less than FRAME_TOP_MARGIN (which is menu bar lines + tool bar 
> lines), internal border width is not added.  That makes sense for 
> FRAME_LINE_TO_PIXEL_Y as the internal border is below the tool bar.  But it is 
> not correct for
> FRAME_TEXT_LINES_TO_PIXEL_HEIGHT, which is supposed to return the total frame 
> size.  When setting wm size hints, this call

>      base_height = FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, 0);

> will return just one internal border.  Thus, a pixel is missing.
> Thanks for pointing me in the right direction.

FRAME_LINE_TO_PIXEL_Y used to be 

#define FRAME_LINE_TO_PIXEL_Y(f, row) \
  (FRAME_INTERNAL_BORDER_WIDTH (f)  \
   + (row) * FRAME_LINE_HEIGHT (f))

and I changed the definition as you quoted so it takes account of the
`row < FRAME_TOP_MARGIN (f)' case in order to draw and handle events
for non-toolkit menu/tool bars correctly.  Actually I seem to have
overlooked the `base_height' calculation by specifying 0 as the number
of lines.  (Also, `row' should have been parenthesized.)

				     YAMAMOTO Mitsuharu
				mituharu <at> math.s.chiba-u.ac.jp




This bug report was last modified 15 years and 106 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.