comctl32: header: Move common code from SetItemT/InsertItemT into a new function.
diff --git a/dlls/comctl32/header.c b/dlls/comctl32/header.c
index bf8581d..99c19d0 100644
--- a/dlls/comctl32/header.c
+++ b/dlls/comctl32/header.c
@@ -110,6 +110,51 @@
}
}
+static void HEADER_StoreHDItemInHeader(HEADER_ITEM *lpItem, HDITEMW *phdi, BOOL fUnicode)
+{
+ if (phdi->mask & HDI_BITMAP)
+ lpItem->hbm = phdi->hbm;
+
+ if (phdi->mask & HDI_FORMAT)
+ lpItem->fmt = phdi->fmt;
+
+ if (phdi->mask & HDI_LPARAM)
+ lpItem->lParam = phdi->lParam;
+
+ if (phdi->mask & HDI_WIDTH)
+ lpItem->cxy = phdi->cxy;
+
+ if (phdi->mask & HDI_IMAGE)
+ {
+ lpItem->iImage = phdi->iImage;
+ }
+
+ if (phdi->mask & HDI_TEXT)
+ {
+ if (!phdi->pszText) phdi->pszText = emptyString; /* null pointer check */
+ if (phdi->pszText != LPSTR_TEXTCALLBACKW) /* covers != TEXTCALLBACKA too */
+ {
+ if (lpItem->pszText)
+ {
+ if (lpItem->pszText != emptyString && lpItem->pszText != LPSTR_TEXTCALLBACKW)
+ Free(lpItem->pszText);
+ lpItem->pszText = NULL;
+ }
+ if (phdi->pszText)
+ {
+ if (fUnicode)
+ Str_SetPtrW(&lpItem->pszText, phdi->pszText);
+ else
+ Str_SetPtrAtoW(&lpItem->pszText, (LPSTR)phdi->pszText);
+ }
+ }
+ else
+ {
+ lpItem->pszText = phdi->pszText;
+ }
+ }
+}
+
inline static LRESULT
HEADER_IndexToOrder (HWND hwnd, INT iItem)
{
@@ -1085,44 +1130,11 @@
}
lpItem = &infoPtr->items[nItem];
- lpItem->bDown = FALSE;
-
- if (phdi->mask & HDI_WIDTH)
- lpItem->cxy = phdi->cxy;
-
- if (phdi->mask & HDI_FORMAT)
- lpItem->fmt = phdi->fmt;
-
- if (lpItem->fmt == 0)
- lpItem->fmt = HDF_LEFT;
-
- if (phdi->mask & HDI_BITMAP)
- lpItem->hbm = phdi->hbm;
-
- if (phdi->mask & HDI_LPARAM)
- lpItem->lParam = phdi->lParam;
-
- if (phdi->mask & HDI_IMAGE)
- {
- lpItem->iImage = phdi->iImage;
- }
+ ZeroMemory(lpItem, sizeof(HEADER_ITEM));
+ HEADER_StoreHDItemInHeader(lpItem, phdi, bUnicode);
if (phdi->mask & HDI_TEXT)
- {
- if (!phdi->pszText) phdi->pszText = emptyString; /* null pointer check */
- if (phdi->pszText != LPSTR_TEXTCALLBACKW) /* covers != TEXTCALLBACKA too */
- {
- if (bUnicode)
- Str_SetPtrW(&lpItem->pszText, phdi->pszText);
- else
- Str_SetPtrAtoW(&lpItem->pszText, (LPSTR)phdi->pszText);
- }
- else
- {
- lpItem->pszText = phdi->pszText;
- }
lpItem->fmt |= HDF_STRING;
- }
lpItem->iOrder = iOrder;
@@ -1221,46 +1233,7 @@
}
lpItem = &infoPtr->items[nItem];
- if (phdi->mask & HDI_BITMAP)
- lpItem->hbm = phdi->hbm;
-
- if (phdi->mask & HDI_FORMAT)
- lpItem->fmt = phdi->fmt;
-
- if (phdi->mask & HDI_LPARAM)
- lpItem->lParam = phdi->lParam;
-
- if (phdi->mask & HDI_WIDTH)
- lpItem->cxy = phdi->cxy;
-
- if (phdi->mask & HDI_IMAGE)
- {
- lpItem->iImage = phdi->iImage;
- }
-
- if (phdi->mask & HDI_TEXT)
- {
- if (phdi->pszText != LPSTR_TEXTCALLBACKW) /* covers != TEXTCALLBACKA too */
- {
- if (lpItem->pszText)
- {
- if (lpItem->pszText != emptyString && lpItem->pszText != LPSTR_TEXTCALLBACKW)
- Free(lpItem->pszText);
- lpItem->pszText = NULL;
- }
- if (phdi->pszText)
- {
- if (bUnicode)
- Str_SetPtrW(&lpItem->pszText, phdi->pszText);
- else
- Str_SetPtrAtoW(&lpItem->pszText, (LPSTR)phdi->pszText);
- }
- }
- else
- {
- lpItem->pszText = phdi->pszText;
- }
- }
+ HEADER_StoreHDItemInHeader(lpItem, phdi, bUnicode);
if (phdi->mask & HDI_ORDER)
{