Author: cwittich
Date: Sat Apr  4 18:51:28 2015
New Revision: 67052

URL: http://svn.reactos.org/svn/reactos?rev=67052&view=rev
Log:
[SHELL32]
implement invert selection

Modified:
    trunk/reactos/dll/win32/shell32/CDefView.cpp
    trunk/reactos/include/reactos/rosctrls.h

Modified: trunk/reactos/dll/win32/shell32/CDefView.cpp
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/CDefView.cpp?rev=67052&r1=67051&r2=67052&view=diff
==============================================================================
--- trunk/reactos/dll/win32/shell32/CDefView.cpp        [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/CDefView.cpp        [iso-8859-1] Sat Apr  4 
18:51:28 2015
@@ -1554,9 +1554,10 @@
 */
 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);
@@ -1603,6 +1604,12 @@
 
         case FCIDM_SHVIEW_SELECTALL:
             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:

Modified: trunk/reactos/include/reactos/rosctrls.h
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/rosctrls.h?rev=67052&r1=67051&r2=67052&view=diff
==============================================================================
--- trunk/reactos/include/reactos/rosctrls.h    [iso-8859-1] (original)
+++ trunk/reactos/include/reactos/rosctrls.h    [iso-8859-1] Sat Apr  4 
18:51:28 2015
@@ -165,6 +165,11 @@
         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;


Reply via email to