Listview AB0
Dimitrie O. Paun
dpaun at rogers.com
Tue Nov 5 20:14:51 CST 2002
Back to hacking (partially).
Should fix the 'jumping selection' bug:
http://bugs.winehq.org/show_bug.cgi?id=1108
ChangeLog
Fix the 'jumping selection' bug (#1108)
Misc small cleanups.
Index: dlls/comctl32/listview.c
===================================================================
RCS file: /var/cvs/wine/dlls/comctl32/listview.c,v
retrieving revision 1.327
diff -u -r1.327 listview.c
--- dlls/comctl32/listview.c 31 Oct 2002 22:01:33 -0000 1.327
+++ dlls/comctl32/listview.c 6 Nov 2002 02:07:30 -0000
@@ -2984,7 +2984,7 @@
LISTVIEW_SetSelection(infoPtr, nItem);
}
}
- ListView_EnsureVisible(infoPtr->hwndSelf, nItem, FALSE);
+ LISTVIEW_EnsureVisible(infoPtr, nItem, FALSE);
}
UpdateWindow(infoPtr->hwndSelf); /* update client area */
@@ -3088,6 +3088,7 @@
*/
static BOOL set_main_item(LISTVIEW_INFO *infoPtr, const LVITEMW *lpLVItem, BOOL isNew, BOOL isW, BOOL *bChanged)
{
+ UINT uView = infoPtr->dwStyle & LVS_TYPEMASK;
ITEM_INFO *lpItem;
NMLISTVIEW nmlv;
UINT uChanged = 0;
@@ -3190,7 +3191,7 @@
{
LISTVIEW_SetItemFocus(infoPtr, -1);
infoPtr->nFocusedItem = lpLVItem->iItem;
- LISTVIEW_EnsureVisible(infoPtr, lpLVItem->iItem, FALSE);
+ LISTVIEW_EnsureVisible(infoPtr, lpLVItem->iItem, uView == LVS_LIST);
}
else if (infoPtr->nFocusedItem == lpLVItem->iItem)
infoPtr->nFocusedItem = -1;
@@ -8126,6 +8127,8 @@
{
UINT uView = infoPtr->dwStyle & LVS_TYPEMASK;
+ TRACE("uView=%d, rcList(old)=%s\n", uView, debugrect(&infoPtr->rcList));
+
GetClientRect(infoPtr->hwndSelf, &infoPtr->rcList);
if (uView == LVS_LIST)
@@ -8141,7 +8144,7 @@
infoPtr->rcList.bottom -= GetSystemMetrics(SM_CYHSCROLL);
infoPtr->rcList.bottom = max (infoPtr->rcList.bottom - 2, 0);
}
- else if (uView == LVS_REPORT)
+ else if (uView == LVS_REPORT && !(infoPtr->dwStyle & LVS_NOCOLUMNHEADER))
{
HDLAYOUT hl;
WINDOWPOS wp;
@@ -8152,9 +8155,10 @@
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);
+ infoPtr->rcList.top = max(wp.cy, 0);
}
+
+ TRACE(" rcList=%s\n", debugrect(&infoPtr->rcList));
}
/***
@@ -8233,7 +8237,7 @@
}
if (uNewView == LVS_REPORT)
- ShowWindow(infoPtr->hwndHeader, (LVS_NOCOLUMNHEADER & lpss->styleNew) ? SW_HIDE : SW_SHOWNORMAL);
+ ShowWindow(infoPtr->hwndHeader, (lpss->styleNew & LVS_NOCOLUMNHEADER) ? SW_HIDE : SW_SHOWNORMAL);
if ( (uNewView == LVS_ICON || uNewView == LVS_SMALLICON) &&
(uNewView != uOldView || ((lpss->styleNew ^ lpss->styleOld) & LVS_ALIGNMASK)) )
--
Dimi.
More information about the wine-patches
mailing list