From: Christoph von Wittich Date: Sat, 4 Apr 2015 18:51:28 +0000 (+0000) Subject: [SHELL32] X-Git-Tag: backups/colins-printing-for-freedom@73041~560 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=a91d1b68a51de3da8b6b3a420ce0f0e5bb61e056 [SHELL32] implement invert selection svn path=/trunk/; revision=67052 --- diff --git a/reactos/dll/win32/shell32/CDefView.cpp b/reactos/dll/win32/shell32/CDefView.cpp index ccc3760c749..9bb4bb732a5 100644 --- a/reactos/dll/win32/shell32/CDefView.cpp +++ b/reactos/dll/win32/shell32/CDefView.cpp @@ -1554,9 +1554,10 @@ LRESULT CDefView::OnKillFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHa */ LRESULT CDefView::OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled) { - DWORD dwCmdID; - DWORD dwCmd; - HWND hwndCmd; + DWORD dwCmdID; + DWORD dwCmd; + HWND hwndCmd; + int nCount; dwCmdID = GET_WM_COMMAND_ID(wParam, lParam); dwCmd = GET_WM_COMMAND_CMD(wParam, lParam); @@ -1605,6 +1606,12 @@ LRESULT CDefView::OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHand m_ListView.SetItemState(-1, LVIS_SELECTED, LVIS_SELECTED); break; + case FCIDM_SHVIEW_INVERTSELECTION: + nCount = m_ListView.GetItemCount(); + for (int i=0; i < nCount; i++) + m_ListView.SetItemState(i, m_ListView.GetItemState(i, LVIS_SELECTED) ? 0 : LVIS_SELECTED, LVIS_SELECTED); + break; + case FCIDM_SHVIEW_REFRESH: Refresh(); break; diff --git a/reactos/include/reactos/rosctrls.h b/reactos/include/reactos/rosctrls.h index e5282605b00..d3d75008333 100644 --- a/reactos/include/reactos/rosctrls.h +++ b/reactos/include/reactos/rosctrls.h @@ -165,6 +165,11 @@ public: spacing.cy = HIWORD(ret); } + UINT GetItemState(int i, UINT mask) + { + return SendMessage(LVM_GETITEMSTATE, i, (LPARAM)mask); + } + void SetItemState(int i, UINT state, UINT mask) { LV_ITEM item;