]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/listbox.cpp
Compilation fixes for wx{X11,GTK1,Motif} after making ref data non copyable.
[wxWidgets.git] / src / msw / listbox.cpp
index 53d60ce89bc54ed8f04e3c967ccb71a9d84f29dc..97bbe9284072a0717466fe8c4cb7386b681b1b0d 100644 (file)
@@ -351,7 +351,11 @@ void wxListBox::DoSetSelection(int N, bool select)
 
     if ( HasMultipleSelection() )
     {
-        SendMessage(GetHwnd(), LB_SETSEL, select, N);
+        // Setting selection to -1 should deselect everything.
+        const bool deselectAll = N == wxNOT_FOUND;
+        SendMessage(GetHwnd(), LB_SETSEL,
+                    deselectAll ? FALSE : select,
+                    deselectAll ? -1 : N);
     }
     else
     {
@@ -689,20 +693,10 @@ bool wxListBox::MSWCommand(WXUINT param, WXWORD WXUNUSED(id))
     if ( n == wxNOT_FOUND )
        return false;
 
-    // As we don't use m_oldSelections in single selection mode, we store the
-    // last item that we notified the user about in it in this case because we
-    // need to remember it to be able to filter out the dummy LBN_SELCHANGE
-    // messages that we get when the user clicks on an already selected item.
     if ( param == LBN_SELCHANGE )
     {
-        if ( !m_oldSelections.empty() && *m_oldSelections.begin() == n )
-        {
-            // Same item as the last time.
+        if ( !DoChangeSingleSelection(n) )
             return false;
-        }
-
-        m_oldSelections.clear();
-        m_oldSelections.push_back(n);
     }
 
     // Do generate an event otherwise.