Commit 425fd8f8 authored by Angelo Haller's avatar Angelo Haller Committed by Alexandre Julliard

comctl32/listview: Move sending LVN_ODSTATECHANGED notifications to a function.

parent 8b392553
...@@ -438,6 +438,7 @@ static INT LISTVIEW_GetStringWidthT(const LISTVIEW_INFO *, LPCWSTR, BOOL); ...@@ -438,6 +438,7 @@ static INT LISTVIEW_GetStringWidthT(const LISTVIEW_INFO *, LPCWSTR, BOOL);
static BOOL LISTVIEW_KeySelection(LISTVIEW_INFO *, INT, BOOL); static BOOL LISTVIEW_KeySelection(LISTVIEW_INFO *, INT, BOOL);
static UINT LISTVIEW_GetItemState(const LISTVIEW_INFO *, INT, UINT); static UINT LISTVIEW_GetItemState(const LISTVIEW_INFO *, INT, UINT);
static BOOL LISTVIEW_SetItemState(LISTVIEW_INFO *, INT, const LVITEMW *); static BOOL LISTVIEW_SetItemState(LISTVIEW_INFO *, INT, const LVITEMW *);
static VOID LISTVIEW_SetOwnerDataState(LISTVIEW_INFO *, INT, INT, const LVITEMW *);
static LRESULT LISTVIEW_VScroll(LISTVIEW_INFO *, INT, INT); static LRESULT LISTVIEW_VScroll(LISTVIEW_INFO *, INT, INT);
static LRESULT LISTVIEW_HScroll(LISTVIEW_INFO *, INT, INT); static LRESULT LISTVIEW_HScroll(LISTVIEW_INFO *, INT, INT);
static BOOL LISTVIEW_EnsureVisible(LISTVIEW_INFO *, INT, BOOL); static BOOL LISTVIEW_EnsureVisible(LISTVIEW_INFO *, INT, BOOL);
...@@ -3565,7 +3566,6 @@ static BOOL LISTVIEW_AddGroupSelection(LISTVIEW_INFO *infoPtr, INT nItem) ...@@ -3565,7 +3566,6 @@ static BOOL LISTVIEW_AddGroupSelection(LISTVIEW_INFO *infoPtr, INT nItem)
INT nFirst = min(infoPtr->nSelectionMark, nItem); INT nFirst = min(infoPtr->nSelectionMark, nItem);
INT nLast = max(infoPtr->nSelectionMark, nItem); INT nLast = max(infoPtr->nSelectionMark, nItem);
HWND hwndSelf = infoPtr->hwndSelf; HWND hwndSelf = infoPtr->hwndSelf;
NMLVODSTATECHANGE nmlv;
DWORD old_mask; DWORD old_mask;
LVITEMW item; LVITEMW item;
INT i; INT i;
...@@ -3587,13 +3587,8 @@ static BOOL LISTVIEW_AddGroupSelection(LISTVIEW_INFO *infoPtr, INT nItem) ...@@ -3587,13 +3587,8 @@ static BOOL LISTVIEW_AddGroupSelection(LISTVIEW_INFO *infoPtr, INT nItem)
for (i = nFirst; i <= nLast; i++) for (i = nFirst; i <= nLast; i++)
LISTVIEW_SetItemState(infoPtr,i,&item); LISTVIEW_SetItemState(infoPtr,i,&item);
ZeroMemory(&nmlv, sizeof(nmlv)); LISTVIEW_SetOwnerDataState(infoPtr, nFirst, nLast, &item);
nmlv.iFrom = nFirst;
nmlv.iTo = nLast;
nmlv.uOldState = 0;
nmlv.uNewState = item.state;
notify_hdr(infoPtr, LVN_ODSTATECHANGED, (LPNMHDR)&nmlv);
if (!IsWindow(hwndSelf)) if (!IsWindow(hwndSelf))
return FALSE; return FALSE;
infoPtr->notify_mask |= old_mask; infoPtr->notify_mask |= old_mask;
...@@ -9023,6 +9018,22 @@ static BOOL LISTVIEW_SetItemPosition(LISTVIEW_INFO *infoPtr, INT nItem, const PO ...@@ -9023,6 +9018,22 @@ static BOOL LISTVIEW_SetItemPosition(LISTVIEW_INFO *infoPtr, INT nItem, const PO
return LISTVIEW_MoveIconTo(infoPtr, nItem, &Pt, FALSE); return LISTVIEW_MoveIconTo(infoPtr, nItem, &Pt, FALSE);
} }
/* Make sure to also disable per item notifications via the notification mask. */
static VOID LISTVIEW_SetOwnerDataState(LISTVIEW_INFO *infoPtr, INT nFirst, INT nLast, const LVITEMW *item)
{
NMLVODSTATECHANGE nmlv;
if (!item) return;
ZeroMemory(&nmlv, sizeof(nmlv));
nmlv.iFrom = nFirst;
nmlv.iTo = nLast;
nmlv.uOldState = 0;
nmlv.uNewState = item->state;
notify_hdr(infoPtr, LVN_ODSTATECHANGED, (LPNMHDR)&nmlv);
}
/*** /***
* DESCRIPTION: * DESCRIPTION:
* Sets the state of one or many items. * Sets the state of one or many items.
......
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