comctl32/listview: Add partial support for cxMin width field.

This commit is contained in:
Nikolay Sivov 2009-09-06 13:54:28 +04:00 committed by Alexandre Julliard
parent d9ebf1962c
commit 52add2a308
2 changed files with 12 additions and 3 deletions

View File

@ -176,7 +176,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(listview);
typedef struct tagCOLUMN_INFO typedef struct tagCOLUMN_INFO
{ {
RECT rcHeader; /* tracks the header's rectangle */ RECT rcHeader; /* tracks the header's rectangle */
int fmt; /* same as LVCOLUMN.fmt */ INT fmt; /* same as LVCOLUMN.fmt */
INT cxMin;
} COLUMN_INFO; } COLUMN_INFO;
typedef struct tagITEMHDR typedef struct tagITEMHDR
@ -5733,6 +5734,9 @@ static BOOL LISTVIEW_GetColumnT(const LISTVIEW_INFO *infoPtr, INT nColumn, LPLVC
if (lpColumn->mask & LVCF_SUBITEM) if (lpColumn->mask & LVCF_SUBITEM)
lpColumn->iSubItem = hdi.lParam; lpColumn->iSubItem = hdi.lParam;
if (lpColumn->mask & LVCF_MINWIDTH)
lpColumn->cxMin = lpColumnInfo->cxMin;
return TRUE; return TRUE;
} }
@ -7456,6 +7460,7 @@ static INT LISTVIEW_InsertColumnT(LISTVIEW_INFO *infoPtr, INT nColumn,
if (DPA_InsertPtr(infoPtr->hdpaColumns, nNewColumn, lpColumnInfo) == -1) goto fail; if (DPA_InsertPtr(infoPtr->hdpaColumns, nNewColumn, lpColumnInfo) == -1) goto fail;
if (lpColumn->mask & LVCF_FMT) lpColumnInfo->fmt = lpColumn->fmt; if (lpColumn->mask & LVCF_FMT) lpColumnInfo->fmt = lpColumn->fmt;
if (lpColumn->mask & LVCF_MINWIDTH) lpColumnInfo->cxMin = lpColumn->cxMin;
if (!SendMessageW(infoPtr->hwndHeader, HDM_GETITEMRECT, nNewColumn, (LPARAM)&lpColumnInfo->rcHeader)) if (!SendMessageW(infoPtr->hwndHeader, HDM_GETITEMRECT, nNewColumn, (LPARAM)&lpColumnInfo->rcHeader))
goto fail; goto fail;
@ -7535,7 +7540,7 @@ static BOOL LISTVIEW_SetColumnT(const LISTVIEW_INFO *infoPtr, INT nColumn,
if (lpColumn->mask & LVCF_FMT) if (lpColumn->mask & LVCF_FMT)
{ {
COLUMN_INFO *lpColumnInfo = LISTVIEW_GetColumnInfo(infoPtr, nColumn); COLUMN_INFO *lpColumnInfo = LISTVIEW_GetColumnInfo(infoPtr, nColumn);
int oldFmt = lpColumnInfo->fmt; INT oldFmt = lpColumnInfo->fmt;
lpColumnInfo->fmt = lpColumn->fmt; lpColumnInfo->fmt = lpColumn->fmt;
if ((oldFmt ^ lpColumn->fmt) & (LVCFMT_JUSTIFYMASK | LVCFMT_IMAGE)) if ((oldFmt ^ lpColumn->fmt) & (LVCFMT_JUSTIFYMASK | LVCFMT_IMAGE))
@ -7544,6 +7549,9 @@ static BOOL LISTVIEW_SetColumnT(const LISTVIEW_INFO *infoPtr, INT nColumn,
} }
} }
if (lpColumn->mask & LVCF_MINWIDTH)
LISTVIEW_GetColumnInfo(infoPtr, nColumn)->cxMin = lpColumn->cxMin;
return TRUE; return TRUE;
} }
@ -7679,7 +7687,7 @@ static BOOL LISTVIEW_SetColumnWidth(LISTVIEW_INFO *infoPtr, INT nColumn, INT cx)
/* call header to update the column change */ /* call header to update the column change */
hdi.mask = HDI_WIDTH; hdi.mask = HDI_WIDTH;
hdi.cxy = cx; hdi.cxy = max(cx, LISTVIEW_GetColumnInfo(infoPtr, nColumn)->cxMin);
TRACE("hdi.cxy=%d\n", hdi.cxy); TRACE("hdi.cxy=%d\n", hdi.cxy);
return SendMessageW(infoPtr->hwndHeader, HDM_SETITEMW, nColumn, (LPARAM)&hdi); return SendMessageW(infoPtr->hwndHeader, HDM_SETITEMW, nColumn, (LPARAM)&hdi);
} }

View File

@ -2989,6 +2989,7 @@ static const WCHAR WC_LISTVIEWW[] = { 'S','y','s',
#define LVCF_SUBITEM 0x0008 #define LVCF_SUBITEM 0x0008
#define LVCF_IMAGE 0x0010 #define LVCF_IMAGE 0x0010
#define LVCF_ORDER 0x0020 #define LVCF_ORDER 0x0020
#define LVCF_MINWIDTH 0x0040
#define LVCFMT_LEFT 0x0000 #define LVCFMT_LEFT 0x0000
#define LVCFMT_RIGHT 0x0001 #define LVCFMT_RIGHT 0x0001