comctl32/tests: Add hotspot/drag test for IImageList.
This commit is contained in:
parent
341e6ed533
commit
c0a6c5cd3f
|
@ -1306,6 +1306,81 @@ static void test_iimagelist(void)
|
||||||
ImageList_Destroy(himl);
|
ImageList_Destroy(himl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void testHotspot_v6(void)
|
||||||
|
{
|
||||||
|
struct hotspot {
|
||||||
|
int dx;
|
||||||
|
int dy;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define SIZEX1 47
|
||||||
|
#define SIZEY1 31
|
||||||
|
#define SIZEX2 11
|
||||||
|
#define SIZEY2 17
|
||||||
|
#define HOTSPOTS_MAX 4 /* Number of entries in hotspots */
|
||||||
|
static const struct hotspot hotspots[HOTSPOTS_MAX] = {
|
||||||
|
{ 10, 7 },
|
||||||
|
{ SIZEX1, SIZEY1 },
|
||||||
|
{ -9, -8 },
|
||||||
|
{ -7, 35 }
|
||||||
|
};
|
||||||
|
int i, j;
|
||||||
|
HIMAGELIST himl1 = createImageList(SIZEX1, SIZEY1);
|
||||||
|
HIMAGELIST himl2 = createImageList(SIZEX2, SIZEY2);
|
||||||
|
IImageList *imgl1, *imgl2;
|
||||||
|
HRESULT hr;
|
||||||
|
|
||||||
|
/* cast to IImageList */
|
||||||
|
imgl1 = (IImageList *) himl1;
|
||||||
|
imgl2 = (IImageList *) himl2;
|
||||||
|
|
||||||
|
for (i = 0; i < HOTSPOTS_MAX; i++) {
|
||||||
|
for (j = 0; j < HOTSPOTS_MAX; j++) {
|
||||||
|
int dx1 = hotspots[i].dx;
|
||||||
|
int dy1 = hotspots[i].dy;
|
||||||
|
int dx2 = hotspots[j].dx;
|
||||||
|
int dy2 = hotspots[j].dy;
|
||||||
|
int correctx, correcty, newx, newy;
|
||||||
|
char loc[256];
|
||||||
|
IImageList *imglNew;
|
||||||
|
POINT ppt;
|
||||||
|
|
||||||
|
hr = IImageList_BeginDrag(imgl1, 0, dx1, dy1);
|
||||||
|
ok(SUCCEEDED(hr), "BeginDrag failed for { %d, %d }\n", dx1, dy1);
|
||||||
|
sprintf(loc, "BeginDrag (%d,%d)\n", i, j);
|
||||||
|
|
||||||
|
/* check merging the dragged image with a second image */
|
||||||
|
hr = IImageList_SetDragCursorImage(imgl2, (IUnknown *) imgl2, 0, dx2, dy2);
|
||||||
|
ok(SUCCEEDED(hr), "SetDragCursorImage failed for {%d, %d}{%d, %d}\n",
|
||||||
|
dx1, dy1, dx2, dy2);
|
||||||
|
sprintf(loc, "SetDragCursorImage (%d,%d)\n", i, j);
|
||||||
|
|
||||||
|
/* check new hotspot, it should be the same like the old one */
|
||||||
|
hr = IImageList_GetDragImage(imgl2, NULL, &ppt, &IID_IImageList, (PVOID *) &imglNew);
|
||||||
|
ok(SUCCEEDED(hr), "GetDragImage failed\n");
|
||||||
|
ok(ppt.x == dx1 && ppt.y == dy1,
|
||||||
|
"Expected drag hotspot [%d,%d] got [%d,%d]\n",
|
||||||
|
dx1, dy1, ppt.x, ppt.y);
|
||||||
|
/* check size of new dragged image */
|
||||||
|
IImageList_GetIconSize(imglNew, &newx, &newy);
|
||||||
|
correctx = max(SIZEX1, max(SIZEX2 + dx2, SIZEX1 - dx2));
|
||||||
|
correcty = max(SIZEY1, max(SIZEY2 + dy2, SIZEY1 - dy2));
|
||||||
|
ok(newx == correctx && newy == correcty,
|
||||||
|
"Expected drag image size [%d,%d] got [%d,%d]\n",
|
||||||
|
correctx, correcty, newx, newy);
|
||||||
|
sprintf(loc, "GetDragImage (%d,%d)\n", i, j);
|
||||||
|
IImageList_EndDrag(imgl2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#undef SIZEX1
|
||||||
|
#undef SIZEY1
|
||||||
|
#undef SIZEX2
|
||||||
|
#undef SIZEY2
|
||||||
|
#undef HOTSPOTS_MAX
|
||||||
|
IImageList_Release(imgl2);
|
||||||
|
IImageList_Release(imgl1);
|
||||||
|
}
|
||||||
|
|
||||||
static void DoTest1_v6(void)
|
static void DoTest1_v6(void)
|
||||||
{
|
{
|
||||||
IImageList *imgl;
|
IImageList *imgl;
|
||||||
|
@ -1571,6 +1646,8 @@ START_TEST(imagelist)
|
||||||
test_ImageList_DrawIndirect();
|
test_ImageList_DrawIndirect();
|
||||||
test_shell_imagelist();
|
test_shell_imagelist();
|
||||||
test_iimagelist();
|
test_iimagelist();
|
||||||
|
|
||||||
|
testHotspot_v6();
|
||||||
DoTest1_v6();
|
DoTest1_v6();
|
||||||
DoTest3_v6();
|
DoTest3_v6();
|
||||||
testMerge_v6();
|
testMerge_v6();
|
||||||
|
|
Loading…
Reference in New Issue