]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/bmpcboxg.cpp
wxchar.h doesn't have to be C file anymore, it's C++
[wxWidgets.git] / src / generic / bmpcboxg.cpp
index fb993f38adbbff90c4bc3388ee0d3f5143ceb072..6aec2b629ee4e20968280ee46b65ebe875d1665b 100644 (file)
@@ -4,7 +4,7 @@
 // Author:      Jaakko Salli
 // Modified by:
 // Created:     Aug-31-2006
 // Author:      Jaakko Salli
 // Modified by:
 // Created:     Aug-31-2006
-// RCS-ID:      $Id:
+// RCS-ID:      $Id$
 // Copyright:   (c) 2005 Jaakko Salli
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 // Copyright:   (c) 2005 Jaakko Salli
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -66,7 +66,7 @@ const wxChar wxBitmapComboBoxNameStr[] = wxT("bitmapComboBox");
 
 
 BEGIN_EVENT_TABLE(wxBitmapComboBox, wxOwnerDrawnComboBox)
 
 
 BEGIN_EVENT_TABLE(wxBitmapComboBox, wxOwnerDrawnComboBox)
-    EVT_SIZE(wxBitmapComboBox::OnResize)
+    EVT_SIZE(wxBitmapComboBox::OnSize)
 END_EVENT_TABLE()
 
 
 END_EVENT_TABLE()
 
 
@@ -146,6 +146,9 @@ bool wxBitmapComboBox::Create(wxWindow *parent,
 void wxBitmapComboBox::PostCreate()
 {
     m_fontHeight = GetCharHeight() + EXTRA_FONT_HEIGHT;
 void wxBitmapComboBox::PostCreate()
 {
     m_fontHeight = GetCharHeight() + EXTRA_FONT_HEIGHT;
+
+    while ( m_bitmaps.GetCount() < GetCount() )
+        m_bitmaps.Add( new wxBitmap() );
 }
 
 wxBitmapComboBox::~wxBitmapComboBox()
 }
 
 wxBitmapComboBox::~wxBitmapComboBox()
@@ -159,7 +162,7 @@ wxBitmapComboBox::~wxBitmapComboBox()
 
 void wxBitmapComboBox::SetItemBitmap(unsigned int n, const wxBitmap& bitmap)
 {
 
 void wxBitmapComboBox::SetItemBitmap(unsigned int n, const wxBitmap& bitmap)
 {
-    wxCHECK_RET( n < m_bitmaps.size(), wxT("invalid item index") );
+    wxCHECK_RET( n < GetCount(), wxT("invalid item index") );
     OnAddBitmap(bitmap);
     *GetBitmapPtr(n) = bitmap;
 
     OnAddBitmap(bitmap);
     *GetBitmapPtr(n) = bitmap;
 
@@ -169,7 +172,7 @@ void wxBitmapComboBox::SetItemBitmap(unsigned int n, const wxBitmap& bitmap)
 
 wxBitmap wxBitmapComboBox::GetItemBitmap(unsigned int n) const
 {
 
 wxBitmap wxBitmapComboBox::GetItemBitmap(unsigned int n) const
 {
-    wxCHECK_MSG( n < m_bitmaps.size(), wxNullBitmap, wxT("invalid item index") );
+    wxCHECK_MSG( n < GetCount(), wxNullBitmap, wxT("invalid item index") );
     return *GetBitmapPtr(n);
 }
 
     return *GetBitmapPtr(n);
 }
 
@@ -264,6 +267,8 @@ int wxBitmapComboBox::DoInsertWithImage(const wxString& item,
                                         const wxBitmap& image,
                                         unsigned int pos)
 {
                                         const wxBitmap& image,
                                         unsigned int pos)
 {
+    wxCHECK_MSG( IsValidInsert(pos), wxNOT_FOUND, wxT("invalid item index") );
+
     if ( !DoInsertBitmap(image, pos) )
         return wxNOT_FOUND;
 
     if ( !DoInsertBitmap(image, pos) )
         return wxNOT_FOUND;
 
@@ -317,7 +322,7 @@ void wxBitmapComboBox::DetermineIndent()
 
     if ( m_usedImgSize.x > 0 )
     {
 
     if ( m_usedImgSize.x > 0 )
     {
-        indent = m_usedImgSize.y + IMAGE_SPACING_LEFT + IMAGE_SPACING_RIGHT;
+        indent = m_usedImgSize.x + IMAGE_SPACING_LEFT + IMAGE_SPACING_RIGHT;
         m_imgAreaWidth = indent;
 
         indent -= 3;
         m_imgAreaWidth = indent;
 
         indent -= 3;
@@ -326,7 +331,7 @@ void wxBitmapComboBox::DetermineIndent()
     SetCustomPaintWidth(indent);
 }
 
     SetCustomPaintWidth(indent);
 }
 
-void wxBitmapComboBox::OnResize(wxSizeEvent& event)
+void wxBitmapComboBox::OnSize(wxSizeEvent& event)
 {
     // Prevent infinite looping
     if ( !m_inResize )
 {
     // Prevent infinite looping
     if ( !m_inResize )
@@ -375,7 +380,8 @@ void wxBitmapComboBox::OnDrawBackground(wxDC& dc,
 {
     if ( GetCustomPaintWidth() == 0 ||
          !(flags & wxODCB_PAINTING_SELECTED) ||
 {
     if ( GetCustomPaintWidth() == 0 ||
          !(flags & wxODCB_PAINTING_SELECTED) ||
-         item < 0 )
+         item < 0 ||
+         ( (flags & wxODCB_PAINTING_CONTROL) && (GetInternalFlags() & wxCC_FULL_BUTTON)) )
     {
         wxOwnerDrawnComboBox::OnDrawBackground(dc, rect, item, flags);
         return;
     {
         wxOwnerDrawnComboBox::OnDrawBackground(dc, rect, item, flags);
         return;