APPROVE COMMIT.
andy
-----Original Message-----
From: xemacs-beta-admin(a)xemacs.org
[mailto:xemacs-beta-adminï¼ xemacs.org]On Behalf Of Andy Piper
Sent: Monday, April 22, 2002 10:34 PM
To: Charles Hines; XEmacs Beta List; xemacs-patches(a)xemacs.org
Cc: Kyle Jones; nix(a)esperi.demon.co.uk
Subject: [PATCH 21.4] RE: redisplay bug(s) with glyphs (was Re: email
embedded images displayed improperly after upgrading VM)
> Ok, after chatting with Kyle Jones about the odd problem I
> reported earlier
> this week (or was it last week) about the incorrect display of
> wide graphics
> in XEmacs after updating VM, we decided that a redisplay bug or
> two was being
> triggered. I have some simple elisp to demonstrate this attached below
> (attached below), which displays a short wide pixmap in a
couple different
> ways (requires XPM support compiled in, obviously). Tested it in
> a "clean"
> 21.4.6 environment like so:
The attached patch fixes this. Please let me know if it doesn't do quite
what you expect - I have tried to cope with the various clipping and
wrapping scenarios in a sane way.
This also contains Nix's redisplay patch modulo some indent, I will apply
both to the windows branch barring any further problems.
andy
2002-04-22 Andy Piper <andy(a)xemacs.org>
* extents.c (extent_fragment_update): check for glyphs we have
previously displayed.
* extents.c (print_extent_1): warning removal.
* extents.h: change prototype.
* redisplay-output.c (redisplay_normalize_glyph_area): calculate
widths correctly for wide glyphs.
* redisplay.c (position_redisplay_data_type): add end_glyph_width.
* redisplay.c (prop_type): add PROP_GLYPH.
* redisplay.c (struct prop_block): add glyph type
* redisplay.c (add_glyph_rune): when adding part of a glyph add it
to the propagation data.
* redisplay.c (create_text_block): if there is a glyph in the
propagation data use it to salt extent_fragment_update.
* redisplay.c (create_string_text_block): ditto.
2002-04-13 Nix <nix(a)esperi.demon.co.uk>
* redisplay.h (struct rune): Add ascent, descent, and
yoffset fields.
* redisplay-output.c (compare_runes): Compare them.
* redisplay.c: Update copyright date.
* redisplay.c (pos_data): Add need_baseline_computation field.
* redisplay.c (add_glyph_rune): Update ascent, descent, and
need_baseline_computation; zero yoffset. Set max_pixmap_height
for all pixmaps, not just automatically positioned ones.
* redisplay.c (calculate_yoffset): New, compute yoffset values.
* redisplay.c (calculate_baseline): New, compute textual baseline.
* redisplay.c (add_glyph_rune): Call them.
* redisplay.c (create_text_block): Likewise.
* redisplay.c (create_overlay_glyph_block): Likewise.
* redisplay.c (add_margin_runes): Likewise.
* redisplay.c (create_string_text_block): Likewise. Fix tabdamage.
* redisplay.h: (redisplay_calculate_display_boxes): Change
prototype.
* redisplay-output.c (redisplay_calculate_display_boxes):
Use yoffset.
* redisplay-msw.c (mswindows_output_blank): Pass 0 as yoffset.
* redisplay-msw.c (mswindows_output_string): Likewise.
* redisplay-msw.c (mswindows_output_display_block): Pass yoffset.
* redisplay-gtk.c (gtk_output_display_block): Likewise.
* redisplay-x.c (x_output_display_block): Likewise.