Commit b6c28ff6 authored by Duane Clark's avatar Duane Clark Committed by Alexandre Julliard

Add support for report mode text justification.

parent 4a6b990c
...@@ -272,6 +272,7 @@ static BOOL LISTVIEW_IsSelected(HWND hwnd, INT nItem); ...@@ -272,6 +272,7 @@ static BOOL LISTVIEW_IsSelected(HWND hwnd, INT nItem);
static VOID LISTVIEW_RemoveSelectionRange(HWND hwnd, INT lItem, INT uItem); static VOID LISTVIEW_RemoveSelectionRange(HWND hwnd, INT lItem, INT uItem);
static void LISTVIEW_FillBackground(HWND hwnd, HDC hdc, LPRECT rc); static void LISTVIEW_FillBackground(HWND hwnd, HDC hdc, LPRECT rc);
static void ListView_UpdateLargeItemLabelRect (HWND hwnd, const LISTVIEW_INFO* infoPtr, int nItem, RECT *rect); static void ListView_UpdateLargeItemLabelRect (HWND hwnd, const LISTVIEW_INFO* infoPtr, int nItem, RECT *rect);
static LRESULT LISTVIEW_GetColumnT(HWND, INT, LPLVCOLUMNW, BOOL);
/******** Defines that LISTVIEW_ProcessLetterKeys uses ****************/ /******** Defines that LISTVIEW_ProcessLetterKeys uses ****************/
#define KEY_DELAY 450 #define KEY_DELAY 450
...@@ -3006,8 +3007,11 @@ static VOID LISTVIEW_DrawSubItem(HWND hwnd, HDC hdc, INT nItem, INT nSubItem, ...@@ -3006,8 +3007,11 @@ static VOID LISTVIEW_DrawSubItem(HWND hwnd, HDC hdc, INT nItem, INT nSubItem,
LISTVIEW_INFO *infoPtr = (LISTVIEW_INFO *)GetWindowLongW(hwnd, 0); LISTVIEW_INFO *infoPtr = (LISTVIEW_INFO *)GetWindowLongW(hwnd, 0);
WCHAR szDispText[DISP_TEXT_SIZE]; WCHAR szDispText[DISP_TEXT_SIZE];
LVITEMW lvItem; LVITEMW lvItem;
LVCOLUMNW lvColumn;
UINT textoutOptions = ETO_CLIPPED | ETO_OPAQUE; UINT textoutOptions = ETO_CLIPPED | ETO_OPAQUE;
RECT rcTemp; RECT rcTemp;
INT textLeft;
INT nLabelWidth = 0;
TRACE("(hwnd=%x, hdc=%x, nItem=%d, nSubItem=%d)\n", hwnd, hdc, TRACE("(hwnd=%x, hdc=%x, nItem=%d, nSubItem=%d)\n", hwnd, hdc,
nItem, nSubItem); nItem, nSubItem);
...@@ -3023,6 +3027,22 @@ static VOID LISTVIEW_DrawSubItem(HWND hwnd, HDC hdc, INT nItem, INT nSubItem, ...@@ -3023,6 +3027,22 @@ static VOID LISTVIEW_DrawSubItem(HWND hwnd, HDC hdc, INT nItem, INT nSubItem,
LISTVIEW_GetItemW(hwnd, &lvItem, TRUE); LISTVIEW_GetItemW(hwnd, &lvItem, TRUE);
TRACE(" lvItem=%s\n", debuglvitem_t(&lvItem, TRUE)); TRACE(" lvItem=%s\n", debuglvitem_t(&lvItem, TRUE));
ZeroMemory(&lvColumn, sizeof(lvColumn));
lvColumn.mask = LVCF_FMT;
LISTVIEW_GetColumnT(hwnd, nSubItem, &lvColumn, TRUE);
textLeft = rcItem.left;
if (lvColumn.fmt != LVCFMT_LEFT)
{
if ((nLabelWidth = LISTVIEW_GetStringWidthT(hwnd, lvItem.pszText, TRUE)))
{
if (lvColumn.fmt == LVCFMT_RIGHT)
textLeft = rcItem.right - nLabelWidth;
else
textLeft = rcItem.left + (rcItem.right-rcItem.left-nLabelWidth)/2;
}
}
/* redraw the background of the item */ /* redraw the background of the item */
rcTemp = rcItem; rcTemp = rcItem;
if(infoPtr->nColumnCount == (nSubItem + 1)) if(infoPtr->nColumnCount == (nSubItem + 1))
...@@ -3062,7 +3082,7 @@ static VOID LISTVIEW_DrawSubItem(HWND hwnd, HDC hdc, INT nItem, INT nSubItem, ...@@ -3062,7 +3082,7 @@ static VOID LISTVIEW_DrawSubItem(HWND hwnd, HDC hdc, INT nItem, INT nSubItem,
SetTextColor(hdc, infoPtr->clrText); SetTextColor(hdc, infoPtr->clrText);
} }
ExtTextOutW(hdc, rcItem.left, rcItem.top, textoutOptions, ExtTextOutW(hdc, textLeft, rcItem.top, textoutOptions,
&rcItem, lvItem.pszText, lstrlenW(lvItem.pszText), NULL); &rcItem, lvItem.pszText, lstrlenW(lvItem.pszText), NULL);
if (Selected) if (Selected)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment