(syms_of_xdisp): Intern and staticpro it.
(pos_visible_p): Return pixel position in new x and y args.
(init_iterator): Reset it->slice info.
(handle_display_prop): Parse (slice ...) property.
(push_it, pop_it): Save/restore slice info.
(make_cursor_line_fully_visible): Fix 2004-04-14 change. Do not
force repositioning of tall row if window is vscrolled, as that
would reset vscroll.
(append_space): Set it->constrain_row_ascent_descent_p to avoid
increasing row height if row is non-empty.
(fill_image_glyph_string): Copy slice info.
(take_vertical_position_into_account): Simplify.
(produce_image_glyph): Handle iterator slice info, setup glyph
slice info. Do not force minimum line height.
(x_produce_glyphs): If it->constrain_row_ascent_descent_p is set,
do not increase height (ascent/descent) of non-empty row when
adding normal character glyph; instead reduce glyph ascent/descent
appropriately; if row is higher than current glyph, adjust glyph
descent/ascent to reposition glyph within the existing row.
Likewise, when char is newline, only set ascent/descent if row is
currently empty.
(note_mouse_highlight): Handle hotspots with sliced image.
(struct glyph): New member slice.
(GLYPH_SLICE_EQUAL_P): New macro.
(GLYPH_EQUAL_P): Use it.
(struct glyph_string): New member slice.
(struct it_slice): New struct.
(struct it): New member slice, add member to stack too.
New member constrain_row_ascent_descent_p.
(image_ascent): Add prototype.
Combine prefix with KEYS to make up the full key sequence to describe.
Correlate meta_prefix_char and following (simple) key to describe
as meta modifier. All callers changed.
(describe_map): Rename arg `keys' to `prefix'. Remove local
`elt_prefix' var. Use Fkey_description with prefix instead of
elt_prefix combined with Fsingle_key_description.
(describe_vector): Declare static. Replace arg `elt_prefix' with
`prefix'. Add KEYMAP_P arg. Add local var `elt_prefix'; use it
if !KEYMAP_P. Use Fkey_description with prefix instead of
Fsingle_key_description.
height to glyph height when cursor row is not fully visible.
(make_cursor_line_fully_visible): Add FORCE_P arg to return
failure in case row is higher than window. Callers changed.
(try_scrolling): Fix loop in scrolling if last_line_misfit (from Gerd).
Try to scroll partially visible, higher-than-window cursor row.
(redisplay_window): Always try to scroll partially visible,
higher-than-window cursor row - both initially and again with
centering_position = 0.
Clear desired matrix before retrying with centering_position = 0.