]> git.saurik.com Git - wxWidgets.git/commitdiff
don't send CHECKLISTBOX_TOGGLE event when Check() is called (closes bug 651140)
authorVadim Zeitlin <vadim@wxwidgets.org>
Wed, 1 Jan 2003 22:41:10 +0000 (22:41 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Wed, 1 Jan 2003 22:41:10 +0000 (22:41 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@18491 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/changes.txt
docs/latex/wx/checklst.tex
src/msw/checklst.cpp

index af9579572a76c8fa28eab5e58a3dea35d1fecde2..feb0423315960046def61c7a53605fc42b5d5177 100644 (file)
@@ -23,6 +23,7 @@ wxMSW:
 
 - wxStaticBitmap doesn't stretch its bitmap any longer (like other ports)
 - support for accelerator keys in the owner drawn menus (Derry Bryson)
+- wxCheckListBox::Check() doesn't send CHECKLISTBOX_TOGGLE event any more
 
 All:
 
index cf9dba3c67793b296f719e4e451e7e1701ec550e..a66f7c944d3bbf0a25d295492ee8e9eb8b0625fd 100644 (file)
@@ -89,7 +89,8 @@ Destructor, destroying the list box.
 
 \func{void}{Check}{\param{int }{item}, \param{bool}{ check = TRUE}}
 
-Checks the given item.
+Checks the given item. Note that calling this method doesn't result in
+wxEVT\_COMMAND\_CHECKLISTBOX\_TOGGLE being emitted.
 
 \wxheading{Parameters}
 
index 42ffa063a1097cf193fbbe4fbe667cc7611eea54..9c688afc3b45458316a02bd512e46331ec5c05d0 100644 (file)
@@ -81,15 +81,18 @@ public:
   // drawing functions
   virtual bool OnDrawItem(wxDC& dc, const wxRect& rc, wxODAction act, wxODStatus stat);
 
-  // simple accessors
-  bool IsChecked() const  { return m_bChecked;        }
+  // simple accessors and operations
+  bool IsChecked() const { return m_bChecked; }
+
   void Check(bool bCheck);
   void Toggle() { Check(!IsChecked()); }
 
+  void SendEvent();
+
 private:
   bool            m_bChecked;
   wxCheckListBox *m_pParent;
-  size_t            m_nIndex;
+  size_t          m_nIndex;
 };
 
 wxCheckListBoxItem::wxCheckListBoxItem(wxCheckListBox *pParent, size_t nIndex)
@@ -220,7 +223,7 @@ void wxCheckListBoxItem::Check(bool check)
 {
     m_bChecked = check;
 
-    // index may be chanegd because new items were added/deleted
+    // index may be changed because new items were added/deleted
     if ( m_pParent->GetItemIndex(this) != (int)m_nIndex )
     {
         // update it
@@ -253,7 +256,11 @@ void wxCheckListBoxItem::Check(bool check)
     #endif  // Win32/16
 
     InvalidateRect(hwndListbox, &rcUpdate, FALSE);
+}
 
+// send an "item checked" event
+void wxCheckListBoxItem::SendEvent()
+{
     wxCommandEvent event(wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, m_pParent->GetId());
     event.SetInt(m_nIndex);
     event.SetEventObject(m_pParent);
@@ -298,8 +305,9 @@ bool wxCheckListBox::Create(wxWindow *parent, wxWindowID id,
     return wxListBox::Create(parent, id, pos, size, n, choices,
                              style | wxLB_OWNERDRAW, validator, name);
 }
-                            
 
+// misc overloaded methods
+// -----------------------
 
 void wxCheckListBox::Delete(int N)
 {
@@ -442,6 +450,10 @@ void wxCheckListBox::OnKeyDown(wxKeyEvent& event)
                 default:
                     wxFAIL_MSG( _T("what should this key do?") );
             }
+
+            // we should send an event as this has been done by the user and
+            // not by the program
+            item->SendEvent();
         }
     }
     else // nothing to do
@@ -456,8 +468,11 @@ void wxCheckListBox::OnLeftClick(wxMouseEvent& event)
   if ( event.GetX() <= wxOwnerDrawn::GetDefaultMarginWidth() ) {
     int nItem = HitTest(event.GetX(), event.GetY());
 
-    if ( nItem != wxNOT_FOUND )
-      GetItem(nItem)->Toggle();
+    if ( nItem != wxNOT_FOUND ) {
+      wxCheckListBoxItem *item = GetItem(nItem);
+      item->Toggle();
+      item->SendEvent();
+    }
     //else: it's not an error, just click outside of client zone
   }
   else {