Module: wine Branch: master Commit: 753de28cd525eca4e4ae6e904d3b543a6516ef44 URL: http://source.winehq.org/git/wine.git/?a=commit;h=753de28cd525eca4e4ae6e904d...
Author: Michael Stefaniuc mstefani@redhat.de Date: Tue Oct 7 00:59:32 2014 +0200
comctl32: Correctly handle the ImageList index in BeginDrag().
---
dlls/comctl32/imagelist.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/dlls/comctl32/imagelist.c b/dlls/comctl32/imagelist.c index 645068d..3b11e89 100644 --- a/dlls/comctl32/imagelist.c +++ b/dlls/comctl32/imagelist.c @@ -599,6 +599,7 @@ ImageList_BeginDrag (HIMAGELIST himlTrack, INT iTrack, INT dxHotspot, INT dyHotspot) { INT cx, cy; + POINT src, dst;
TRACE("(himlTrack=%p iTrack=%d dx=%d dy=%d)\n", himlTrack, iTrack, dxHotspot, dyHotspot); @@ -606,6 +607,9 @@ ImageList_BeginDrag (HIMAGELIST himlTrack, INT iTrack, if (!is_valid(himlTrack)) return FALSE;
+ if (iTrack >= himlTrack->cCurImage) + return FALSE; + if (InternalDrag.himl) ImageList_EndDrag ();
@@ -622,10 +626,12 @@ ImageList_BeginDrag (HIMAGELIST himlTrack, INT iTrack, InternalDrag.dyHotspot = dyHotspot;
/* copy image */ - BitBlt (InternalDrag.himl->hdcImage, 0, 0, cx, cy, himlTrack->hdcImage, iTrack * cx, 0, SRCCOPY); - - /* copy mask */ - BitBlt (InternalDrag.himl->hdcMask, 0, 0, cx, cy, himlTrack->hdcMask, iTrack * cx, 0, SRCCOPY); + imagelist_point_from_index(InternalDrag.himl, 0, &dst); + imagelist_point_from_index(himlTrack, iTrack, &src); + BitBlt(InternalDrag.himl->hdcImage, dst.x, dst.y, cx, cy, himlTrack->hdcImage, src.x, src.y, + SRCCOPY); + BitBlt(InternalDrag.himl->hdcMask, dst.x, dst.y, cx, cy, himlTrack->hdcMask, src.x, src.y, + SRCCOPY);
InternalDrag.himl->cCurImage = 1;