comctl32: Implement TCM_REMOVEIMAGE message
Nikolay Sivov
bunglehead at gmail.com
Sun Mar 22 17:47:34 CDT 2009
Chaneglog:
- Implement TCM_REMOVEIMAGE
>From c419ca8f87ae3103e63604d9646d3851a5d959e7 Mon Sep 17 00:00:00 2001
From: Nikolay Sivov <bunglehead at gmail.com>
Date: Sun, 22 Mar 2009 18:43:46 -0400
Subject: Implement TCM_REMOVEIMAGE
---
dlls/comctl32/tab.c | 26 +++++++++++++++++++++++---
1 files changed, 23 insertions(+), 3 deletions(-)
diff --git a/dlls/comctl32/tab.c b/dlls/comctl32/tab.c
index 3880ceb..d358178 100644
--- a/dlls/comctl32/tab.c
+++ b/dlls/comctl32/tab.c
@@ -53,7 +53,6 @@
* TCN_KEYDOWN
*
* Messages:
- * TCM_REMOVEIMAGE
* TCM_DESELECTALL
* TCM_GETEXTENDEDSTYLE
* TCM_SETEXTENDEDSTYLE
@@ -3099,6 +3098,28 @@ TAB_SetItemExtra (TAB_INFO *infoPtr, INT cbInfo)
return TRUE;
}
+static LRESULT TAB_RemoveImage (TAB_INFO *infoPtr, INT image)
+{
+ if (!infoPtr)
+ return 0;
+
+ if (ImageList_Remove (infoPtr->himl, image))
+ {
+ INT i, item = -1;
+ RECT r;
+
+ /* shift indices, get item to repaint */
+ for (i = 0; i < infoPtr->uNumItem; i++)
+ if (infoPtr->items[i].iImage >= image && infoPtr->items[i].iImage-- == image)
+ item = i;
+
+ if (item != -1 && TAB_InternalGetItemRect (infoPtr, item, &r, NULL))
+ InvalidateRect (infoPtr->hwnd, &r, TRUE);
+ }
+
+ return 0;
+}
+
static LRESULT WINAPI
TAB_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
@@ -3159,8 +3180,7 @@ TAB_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
return TAB_SetItemSize (infoPtr, lParam);
case TCM_REMOVEIMAGE:
- FIXME("Unimplemented msg TCM_REMOVEIMAGE\n");
- return 0;
+ return TAB_RemoveImage (infoPtr, wParam);
case TCM_SETPADDING:
return TAB_SetPadding (infoPtr, lParam);
--
1.5.6.5
More information about the wine-patches
mailing list