comctl32: comboex.c (small fix)
felix.nawothnig at t-online.de
felix.nawothnig at t-online.de
Tue May 3 22:30:48 CDT 2005
Indention in the example at http://www.kumei.jp/c_lang/sdk2/sdk_195.htm
looks right now.
Changelog:
- Set iItem to index before notifying callback items.
-------------- next part --------------
Index: comboex.c
===================================================================
RCS file: /home/wine/wine/dlls/comctl32/comboex.c,v
retrieving revision 1.82
diff -u -r1.82 comboex.c
--- comboex.c 23 Mar 2005 13:15:21 -0000 1.82
+++ comboex.c 4 May 2005 03:15:06 -0000
@@ -283,6 +283,26 @@
}
+static INT COMBOEX_GetIndex(COMBOEX_INFO *infoPtr, CBE_ITEMDATA *item)
+{
+ CBE_ITEMDATA *moving;
+ INT index;
+
+ moving = infoPtr->items;
+ index = infoPtr->nb_items - 1;
+
+ while (moving && (moving != item)) {
+ moving = moving->next;
+ index--;
+ }
+ if (!moving || (index < 0)) {
+ ERR("COMBOBOXEX item structures broken. Please report!\n");
+ return -1;
+ }
+ return index;
+}
+
+
static LPCWSTR COMBOEX_GetText(COMBOEX_INFO *infoPtr, CBE_ITEMDATA *item)
{
NMCOMBOBOXEXW nmce;
@@ -295,6 +315,7 @@
ZeroMemory(&nmce, sizeof(nmce));
nmce.ceItem.mask = CBEIF_TEXT;
nmce.ceItem.lParam = item->lParam;
+ nmce.ceItem.iItem = COMBOEX_GetIndex(infoPtr, item);
COMBOEX_NotifyItem(infoPtr, CBEN_GETDISPINFOW, &nmce);
if (is_textW(nmce.ceItem.pszText)) {
@@ -1389,6 +1410,7 @@
ZeroMemory(&nmce, sizeof(nmce));
nmce.ceItem.mask = CBEIF_INDENT;
nmce.ceItem.lParam = item->lParam;
+ nmce.ceItem.iItem = dis->itemID;
COMBOEX_NotifyItem(infoPtr, CBEN_GETDISPINFOW, &nmce);
if (nmce.ceItem.mask & CBEIF_DI_SETITEM)
item->iIndent = nmce.ceItem.iIndent;
@@ -1453,6 +1475,7 @@
ZeroMemory(&nmce, sizeof(nmce));
nmce.ceItem.mask = (drawstate == ILD_NORMAL) ? CBEIF_IMAGE : CBEIF_SELECTEDIMAGE;
nmce.ceItem.lParam = item->lParam;
+ nmce.ceItem.iItem = dis->itemID;
COMBOEX_NotifyItem(infoPtr, CBEN_GETDISPINFOW, &nmce);
if (drawstate == ILD_NORMAL) {
if (nmce.ceItem.mask & CBEIF_DI_SETITEM) item->iImage = nmce.ceItem.iImage;
@@ -1468,6 +1491,7 @@
ZeroMemory(&nmce, sizeof(nmce));
nmce.ceItem.mask = CBEIF_OVERLAY;
nmce.ceItem.lParam = item->lParam;
+ nmce.ceItem.iItem = dis->itemID;
COMBOEX_NotifyItem(infoPtr, CBEN_GETDISPINFOW, &nmce);
if (nmce.ceItem.mask & CBEIF_DI_SETITEM)
item->iOverlay = nmce.ceItem.iOverlay;
More information about the wine-patches
mailing list