mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-11 09:20:51 +00:00
(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.
This commit is contained in:
parent
0633d52c3e
commit
cedd7cd9f1
@ -5730,6 +5730,9 @@ buffer_posn_from_coords (w, x, y, pos, object, dx, dy, width, height)
|
||||
struct text_pos startp;
|
||||
Lisp_Object string;
|
||||
struct glyph_row *row;
|
||||
#ifdef HAVE_WINDOW_SYSTEM
|
||||
struct image *img = 0;
|
||||
#endif
|
||||
int x0, x1;
|
||||
|
||||
current_buffer = XBUFFER (w->buffer);
|
||||
@ -5755,7 +5758,6 @@ buffer_posn_from_coords (w, x, y, pos, object, dx, dy, width, height)
|
||||
#ifdef HAVE_WINDOW_SYSTEM
|
||||
if (it.what == IT_IMAGE)
|
||||
{
|
||||
struct image *img;
|
||||
if ((img = IMAGE_FROM_ID (it.f, it.image_id)) != NULL
|
||||
&& !NILP (img->spec))
|
||||
*object = img->spec;
|
||||
@ -5768,12 +5770,22 @@ buffer_posn_from_coords (w, x, y, pos, object, dx, dy, width, height)
|
||||
if (it.hpos < row->used[TEXT_AREA])
|
||||
{
|
||||
struct glyph *glyph = row->glyphs[TEXT_AREA] + it.hpos;
|
||||
*width = glyph->pixel_width;
|
||||
*height = glyph->ascent + glyph->descent;
|
||||
#ifdef HAVE_WINDOW_SYSTEM
|
||||
if (glyph->type == IMAGE_GLYPH)
|
||||
*dy -= row->ascent - glyph->ascent;
|
||||
if (img)
|
||||
{
|
||||
*dy -= row->ascent - glyph->ascent;
|
||||
*dx += glyph->slice.x;
|
||||
*dy += glyph->slice.y;
|
||||
/* Image slices positions are still relative to the entire image */
|
||||
*width = img->width;
|
||||
*height = img->height;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
*width = glyph->pixel_width;
|
||||
*height = glyph->ascent + glyph->descent;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -5939,6 +5951,8 @@ marginal_area_string (w, part, x, y, charpos, object, dx, dy, width, height)
|
||||
if (img != NULL)
|
||||
*object = img->spec;
|
||||
y0 -= row->ascent - glyph->ascent;
|
||||
x0 += glyph->slice.x;
|
||||
y0 += glyph->slice.y;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user