+2004-04-21 Kim F. Storm <storm@cua.dk>
+
+ * dispextern.h (struct glyph_slice): New struct.
+ (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.
+
+ * dispnew.c (buffer_posn_from_coords): Return full image width
+ and height even for image slices (posn is relative to full image).
+ (marginal_area_string): Adjust x0,y0 for image slice.
+
+ * image.c (image_ascent): Add slice arg; calculate ascent for
+ image slice (or full image).
+
+ * keyboard.c (Fposn_at_x_y, Fposn_at_point): New defuns.
+ (syms_of_keyboard): Defsubr them.
+
+ * lisp.h (pos_visible_p): Fix prototype.
+
+ * macterm.c (x_draw_relief_rect): Add top_p and bot_p args.
+ (x_draw_glyph_string_box): Fix call to x_draw_relief_rect.
+ (x_draw_image_foreground, x_draw_image_relief)
+ (x_draw_image_foreground_1, x_draw_image_glyph_string):
+ Draw sliced images.
+
+ * w32term.c (w32_draw_relief_rect): Add top_p and bot_p args.
+ (x_draw_glyph_string_box): Fix call to x_draw_relief_rect.
+ (x_draw_image_foreground, x_draw_image_relief)
+ (w32_draw_image_foreground_1, x_draw_image_glyph_string):
+ Draw sliced images.
+
+ * w32term.h (image_ascent): Remove prototype.
+
+ * window.c (Fpos_visible_in_window_p): Return pixel position if
+ PARTIALLY arg is non-nil. Simplify. Doc fix.
+ (Fwindow_vscroll, Fset_window_vscroll): Add optional PIXEL_P arg
+ to return/set vscroll in pixels.
+
+ * window.h (Fwindow_vscroll, Fset_window_vscroll): Fix EXFUN.
+
+ * xdisp.c (Qslice): New variable.
+ (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.
+
+ * xterm.c (x_draw_relief_rect): Add top_p and bot_p args.
+ (x_draw_glyph_string_box): Fix call to x_draw_relief_rect.
+ (x_draw_image_foreground, x_draw_image_relief)
+ (x_draw_image_foreground_1, x_draw_image_glyph_string):
+ Draw sliced images.
+
+ * xterm.h (image_ascent): Remove prototype.
+
2004-04-20 John Paul Wallington <jpw@gnu.org>
* fns.c (Fassoc, Feql): Fix indentation.