]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/checklst.cpp
minimize overlay area to avoid eg scrolling artifacts when using a caret
[wxWidgets.git] / src / msw / checklst.cpp
index b40783e67a16b2b10bc80635f2bdde0d62613a59..cf5c5f771ead41aeaf59e526760f63eb89f24483 100644 (file)
 #include "wx/wxprec.h"
 
 #ifdef __BORLANDC__
-#pragma hdrstop
+    #pragma hdrstop
 #endif
 
 #if wxUSE_CHECKLISTBOX && wxUSE_OWNER_DRAWN
 
+#include "wx/checklst.h"
+
 #ifndef WX_PRECOMP
+    #include "wx/msw/wrapwin.h"
     #include "wx/object.h"
     #include "wx/colour.h"
     #include "wx/font.h"
     #include "wx/window.h"
     #include "wx/listbox.h"
     #include "wx/dcmemory.h"
-
     #include "wx/settings.h"
-
     #include "wx/log.h"
 #endif
 
 #include "wx/ownerdrw.h"
-#include "wx/checklst.h"
 
-#include "wx/msw/wrapwin.h"
 #include <windowsx.h>
 
 #include "wx/msw/private.h"
@@ -126,44 +125,44 @@ class wxCheckListBoxItem : public wxOwnerDrawn
 {
 friend class WXDLLEXPORT wxCheckListBox;
 public:
-  // ctor
-  wxCheckListBoxItem(wxCheckListBox *pParent, size_t nIndex);
+    // ctor
+    wxCheckListBoxItem(wxCheckListBox *pParent, size_t nIndex);
 
-  // drawing functions
-  virtual bool OnDrawItem(wxDC& dc, const wxRect& rc, wxODAction act, wxODStatus stat);
+    // drawing functions
+    virtual bool OnDrawItem(wxDC& dc, const wxRect& rc, wxODAction act, wxODStatus stat);
 
-  // simple accessors and operations
-  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 Check(bool bCheck);
+    void Toggle() { Check(!IsChecked()); }
 
-  void SendEvent();
+    void SendEvent();
 
 private:
-  bool            m_bChecked;
-  wxCheckListBox *m_pParent;
-  size_t          m_nIndex;
+    bool            m_bChecked;
+    wxCheckListBox *m_pParent;
+    size_t    m_nIndex;
 
-  DECLARE_NO_COPY_CLASS(wxCheckListBoxItem)
+    DECLARE_NO_COPY_CLASS(wxCheckListBoxItem)
 };
 
 wxCheckListBoxItem::wxCheckListBoxItem(wxCheckListBox *pParent, size_t nIndex)
                   : wxOwnerDrawn(wxEmptyString, true)   // checkable
 {
-  m_bChecked = false;
-  m_pParent  = pParent;
-  m_nIndex   = nIndex;
-
-  // we don't initialize m_nCheckHeight/Width vars because it's
-  // done in OnMeasure while they are used only in OnDraw and we
-  // know that there will always be OnMeasure before OnDraw
-
-  // fix appearance for check list boxes: they don't look quite the same as
-  // menu icons
-  SetMarginWidth(::GetSystemMetrics(SM_CXMENUCHECK) -
-                    2*wxSystemSettings::GetMetric(wxSYS_EDGE_X) + 1);
-  SetBackgroundColour(pParent->GetBackgroundColour());
+    m_bChecked = false;
+    m_pParent  = pParent;
+    m_nIndex   = nIndex;
+
+    // we don't initialize m_nCheckHeight/Width vars because it's
+    // done in OnMeasure while they are used only in OnDraw and we
+    // know that there will always be OnMeasure before OnDraw
+
+    // fix appearance for check list boxes: they don't look quite the same as
+    // menu icons
+    SetMarginWidth(::GetSystemMetrics(SM_CXMENUCHECK) -
+                      2*wxSystemSettings::GetMetric(wxSYS_EDGE_X) + 1);
+    SetBackgroundColour(pParent->GetBackgroundColour());
 }
 
 bool wxCheckListBoxItem::OnDrawItem(wxDC& dc, const wxRect& rc,
@@ -335,22 +334,22 @@ bool wxCheckListBox::Create(wxWindow *parent, wxWindowID id,
 // misc overloaded methods
 // -----------------------
 
-void wxCheckListBox::Delete(int N)
+void wxCheckListBox::Delete(unsigned int n)
 {
-    wxCHECK_RET( IsValid(N),
+    wxCHECK_RET( IsValid(n),
                  wxT("invalid index in wxListBox::Delete") );
 
-    wxListBox::Delete(N);
+    wxListBox::Delete(n);
 
     // free memory
-    delete m_aItems[N];
+    delete m_aItems[n];
 
-    m_aItems.RemoveAt(N);
+    m_aItems.RemoveAt(n);
 }
 
 bool wxCheckListBox::SetFont( const wxFont &font )
 {
-    size_t i;
+    unsigned int i;
     for ( i = 0; i < m_aItems.GetCount(); i++ )
         m_aItems[i]->SetFont(font);
 
@@ -391,16 +390,16 @@ bool wxCheckListBox::MSWOnMeasure(WXMEASUREITEMSTRUCT *item)
 // check items
 // -----------
 
-bool wxCheckListBox::IsChecked(size_t uiIndex) const
+bool wxCheckListBox::IsChecked(unsigned int uiIndex) const
 {
-    wxCHECK_MSG( uiIndex < (size_t)GetCount(), false, _T("bad wxCheckListBox index") );
+    wxCHECK_MSG( IsValid(uiIndex), false, _T("bad wxCheckListBox index") );
 
     return GetItem(uiIndex)->IsChecked();
 }
 
-void wxCheckListBox::Check(size_t uiIndex, bool bCheck)
+void wxCheckListBox::Check(unsigned int uiIndex, bool bCheck)
 {
-    wxCHECK_RET( uiIndex < (size_t)GetCount(), _T("bad wxCheckListBox index") );
+    wxCHECK_RET( IsValid(uiIndex), _T("bad wxCheckListBox index") );
 
     GetItem(uiIndex)->Check(bCheck);
 }
@@ -494,21 +493,24 @@ void wxCheckListBox::OnKeyDown(wxKeyEvent& event)
 
 void wxCheckListBox::OnLeftClick(wxMouseEvent& event)
 {
-  // clicking on the item selects it, clicking on the checkmark toggles
-  if ( event.GetX() <= wxOwnerDrawn::GetDefaultMarginWidth() ) {
-    int nItem = HitTest(event.GetX(), event.GetY());
-
-    if ( nItem != wxNOT_FOUND ) {
-      wxCheckListBoxItem *item = GetItem(nItem);
-      item->Toggle();
-      item->SendEvent();
+    // clicking on the item selects it, clicking on the checkmark toggles
+    if ( event.GetX() <= wxOwnerDrawn::GetDefaultMarginWidth() )
+    {
+        int nItem = HitTest(event.GetX(), event.GetY());
+
+        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
+    {
+        // implement default behaviour: clicking on the item selects it
+        event.Skip();
     }
-    //else: it's not an error, just click outside of client zone
-  }
-  else {
-    // implement default behaviour: clicking on the item selects it
-    event.Skip();
-  }
 }
 
 int wxCheckListBox::DoHitTestItem(wxCoord x, wxCoord y) const
@@ -521,7 +523,7 @@ int wxCheckListBox::DoHitTestItem(wxCoord x, wxCoord y) const
                               MAKELPARAM(x, y)
                              );
 
-  return nItem >= (int)m_noItems ? wxNOT_FOUND : nItem;
+    return nItem >= (int)m_noItems ? wxNOT_FOUND : nItem;
 }