comctl32: Listview - allow selection toggle with ctrl+space [Bug
1106]
Vitaliy Margolen
wine-patch at kievinfo.com
Mon Jan 2 12:39:53 CST 2006
ChangeLog:
comctl32: Listview - allow selection toggle with ctrl+space [Bug 1106]
dlls/comctl32/listview.c | 15 ++++++++++++++-
1 files changed, 14 insertions(+), 1 deletions(-)
-------------- next part --------------
7725f974a31669d12bc8f87e038d593c82ed9719
diff --git a/dlls/comctl32/listview.c b/dlls/comctl32/listview.c
index 3cb5137..4b95caf 100644
--- a/dlls/comctl32/listview.c
+++ b/dlls/comctl32/listview.c
@@ -3173,6 +3173,7 @@ static BOOL LISTVIEW_KeySelection(LISTVI
WORD wCtrl = HIWORD(GetKeyState(VK_CONTROL));
BOOL bResult = FALSE;
+ TRACE("nItem=%d, wShift=%d, wCtrl=%d\n", nItem, wShift, wCtrl);
if ((nItem >= 0) && (nItem < infoPtr->nItemCount))
{
if (infoPtr->dwStyle & LVS_SINGLESEL)
@@ -3189,6 +3190,14 @@ static BOOL LISTVIEW_KeySelection(LISTVI
}
else if (wCtrl)
{
+ LVITEMW lvItem;
+ lvItem.state = ~LISTVIEW_GetItemState(infoPtr, nItem, LVIS_SELECTED);
+ lvItem.stateMask = LVIS_SELECTED;
+ LISTVIEW_SetItemState(infoPtr, nItem, &lvItem);
+
+ if (lvItem.state & LVIS_SELECTED)
+ infoPtr->nSelectionMark = nItem;
+
bResult = LISTVIEW_SetItemFocus(infoPtr, nItem);
}
else
@@ -8016,6 +8025,10 @@ static LRESULT LISTVIEW_KeyDown(LISTVIEW
switch (nVirtualKey)
{
+ case VK_SPACE:
+ nItem = infoPtr->nFocusedItem;
+ break;
+
case VK_RETURN:
if ((infoPtr->nItemCount > 0) && (infoPtr->nFocusedItem != -1))
{
@@ -8082,7 +8095,7 @@ static LRESULT LISTVIEW_KeyDown(LISTVIEW
break;
}
- if ((nItem != -1) && (nItem != infoPtr->nFocusedItem))
+ if ((nItem != -1) && (nItem != infoPtr->nFocusedItem || nVirtualKey == VK_SPACE))
LISTVIEW_KeySelection(infoPtr, nItem);
return 0;
More information about the wine-patches
mailing list