]> git.saurik.com Git - wxWidgets.git/commitdiff
try (this can be vetoed) to set focus to the listbox before generating the events...
authorVadim Zeitlin <vadim@wxwidgets.org>
Fri, 2 Nov 2007 00:27:13 +0000 (00:27 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Fri, 2 Nov 2007 00:27:13 +0000 (00:27 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49593 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/msw/checklst.cpp

index 933537bc1b5981d6c6f98a04d0dc5c6d3f20e17c..98a4e6763bbc39ef5464faf282c9ac885fc4d8a2 100644 (file)
@@ -483,9 +483,19 @@ void wxCheckListBox::OnLeftClick(wxMouseEvent& event)
 
         if ( nItem != wxNOT_FOUND )
         {
-            wxCheckListBoxItem *item = GetItem(nItem);
-            item->Toggle();
-            item->SendEvent();
+            // people expect to get "kill focus" event for the currently
+            // focused control before getting events from the other controls
+            // and, equally importantly, they may prevent the focus change from
+            // taking place at all (e.g. because the old control contents is
+            // invalid and needs to be corrected) in which case we shouldn't
+            // generate this event at all
+            SetFocus();
+            if ( FindFocus() == this )
+            {
+                wxCheckListBoxItem *item = GetItem(nItem);
+                item->Toggle();
+                item->SendEvent();
+            }
         }
         //else: it's not an error, just click outside of client zone
     }