Listview Z3
Dimitrie O. Paun
dpaun at rogers.com
Fri Oct 25 10:19:58 CDT 2002
http://cezar.kappa.ro/bmw/galben/photos.html
ChangeLog
Cleanup, and simplification of UpdateSize.
--- dlls/comctl32/listview.c.Z2 Fri Oct 25 10:32:52 2002
+++ dlls/comctl32/listview.c Fri Oct 25 11:15:51 2002
@@ -375,7 +375,7 @@
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_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 @@
* [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;
- }
- }
- else if (uView == LVS_REPORT)
- {
- HDLAYOUT hl;
- WINDOWPOS wp;
+ HDLAYOUT hl;
+ WINDOWPOS wp;
- hl.prc = &rcList;
- hl.pwpos = ℘
- Header_Layout(infoPtr->hwndHeader, &hl);
+ 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);
+ 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)));
+ if (!(infoPtr->dwStyle & LVS_NOCOLUMNHEADER))
+ infoPtr->rcList.top = max(wp.cy, 0);
+ }
}
/***
--
Dimi.
More information about the wine-patches
mailing list