Cleanup, and simplification of UpdateSize.

This commit is contained in:
Dimitrie O. Paun 2002-10-28 20:35:09 +00:00 committed by Alexandre Julliard
parent 9a9fcab763
commit 19a1c42386
1 changed files with 32 additions and 46 deletions

View File

@ -375,7 +375,7 @@ static void LISTVIEW_SetGroupSelection(LISTVIEW_INFO *, INT);
static BOOL LISTVIEW_SetItemT(LISTVIEW_INFO *, LPLVITEMW, BOOL);
static void LISTVIEW_UpdateScroll(LISTVIEW_INFO *);
static void LISTVIEW_SetSelection(LISTVIEW_INFO *, INT);
static BOOL LISTVIEW_UpdateSize(LISTVIEW_INFO *);
static void LISTVIEW_UpdateSize(LISTVIEW_INFO *);
static HWND LISTVIEW_EditLabelT(LISTVIEW_INFO *, INT, BOOL);
static LRESULT LISTVIEW_Command(LISTVIEW_INFO *, WPARAM, LPARAM);
static BOOL LISTVIEW_SortItems(LISTVIEW_INFO *, PFNLVCOMPARE, LPARAM);
@ -8059,9 +8059,12 @@ static LRESULT LISTVIEW_SetRedraw(LISTVIEW_INFO *infoPtr, BOOL bRedraw)
*/
static LRESULT LISTVIEW_Size(LISTVIEW_INFO *infoPtr, int Width, int Height)
{
RECT rcOld = infoPtr->rcList;
TRACE("(width=%d, height=%d)\n", Width, Height);
if (!LISTVIEW_UpdateSize(infoPtr)) return 0;
LISTVIEW_UpdateSize(infoPtr);
if (EqualRect(&rcOld, &infoPtr->rcList)) return 0;
/* do not bother with display related stuff if we're not redrawing */
if (!is_redrawing(infoPtr)) return 0;
@ -8084,58 +8087,41 @@ static LRESULT LISTVIEW_Size(LISTVIEW_INFO *infoPtr, int Width, int Height)
* [I] infoPtr : valid pointer to the listview structure
*
* RETURN:
* Zero if no size change
* 1 of size changed
* None
*/
static BOOL LISTVIEW_UpdateSize(LISTVIEW_INFO *infoPtr)
static void LISTVIEW_UpdateSize(LISTVIEW_INFO *infoPtr)
{
UINT uView = infoPtr->dwStyle & LVS_TYPEMASK;
RECT rcList;
RECT rcOld;
UINT uView = infoPtr->dwStyle & LVS_TYPEMASK;
GetClientRect(infoPtr->hwndSelf, &rcList);
CopyRect(&rcOld,&(infoPtr->rcList));
infoPtr->rcList.left = 0;
infoPtr->rcList.right = max(rcList.right - rcList.left, 1);
infoPtr->rcList.top = 0;
infoPtr->rcList.bottom = max(rcList.bottom - rcList.top, 1);
GetClientRect(infoPtr->hwndSelf, &infoPtr->rcList);
if (uView == LVS_LIST)
{
/* Apparently the "LIST" style is supposed to have the same
* number of items in a column even if there is no scroll bar.
* Since if a scroll bar already exists then the bottom is already
* reduced, only reduce if the scroll bar does not currently exist.
* The "2" is there to mimic the native control. I think it may be
* related to either padding or edges. (GLA 7/2002)
*/
if (!(infoPtr->dwStyle & WS_HSCROLL))
if (uView == LVS_LIST)
{
INT nHScrollHeight = GetSystemMetrics(SM_CYHSCROLL);
if (infoPtr->rcList.bottom > nHScrollHeight)
infoPtr->rcList.bottom -= (nHScrollHeight + 2);
/* Apparently the "LIST" style is supposed to have the same
* number of items in a column even if there is no scroll bar.
* Since if a scroll bar already exists then the bottom is already
* reduced, only reduce if the scroll bar does not currently exist.
* The "2" is there to mimic the native control. I think it may be
* related to either padding or edges. (GLA 7/2002)
*/
if (!(infoPtr->dwStyle & WS_HSCROLL))
infoPtr->rcList.bottom -= GetSystemMetrics(SM_CYHSCROLL);
infoPtr->rcList.bottom = max (infoPtr->rcList.bottom - 2, 0);
}
else
else if (uView == LVS_REPORT)
{
if (infoPtr->rcList.bottom > 2)
infoPtr->rcList.bottom -= 2;
HDLAYOUT hl;
WINDOWPOS wp;
hl.prc = &infoPtr->rcList;
hl.pwpos = ℘
Header_Layout(infoPtr->hwndHeader, &hl);
SetWindowPos(wp.hwnd, wp.hwndInsertAfter, wp.x, wp.y, wp.cx, wp.cy, wp.flags);
if (!(infoPtr->dwStyle & LVS_NOCOLUMNHEADER))
infoPtr->rcList.top = max(wp.cy, 0);
}
}
else if (uView == LVS_REPORT)
{
HDLAYOUT hl;
WINDOWPOS wp;
hl.prc = &rcList;
hl.pwpos = ℘
Header_Layout(infoPtr->hwndHeader, &hl);
SetWindowPos(wp.hwnd, wp.hwndInsertAfter, wp.x, wp.y, wp.cx, wp.cy, wp.flags);
if (!(LVS_NOCOLUMNHEADER & infoPtr->dwStyle))
infoPtr->rcList.top = max(wp.cy, 0);
}
return (EqualRect(&rcOld,&(infoPtr->rcList)));
}
/***