]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/bmpcbox.cpp
Avoid overflowing the wake up when handling events in Unix console apps.
[wxWidgets.git] / src / gtk / bmpcbox.cpp
index 6cbf891530fa55685d3e20eaf972b15cfba95e0e..7ac3b0ecdead07b95c67650c7d597a80cfe2f7bf 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        src/gtk/bmpcboxg.cpp
+// Name:        src/gtk/bmpcbox.cpp
 // Purpose:     wxBitmapComboBox
 // Author:      Jaakko Salli
 // Created:     2008-05-19
@@ -122,8 +122,8 @@ void wxBitmapComboBox::GTKCreateComboBoxWidget()
     else
     {
         m_widget = gtk_combo_box_entry_new_with_model( GTK_TREE_MODEL(store), m_stringCellIndex );
-        m_entry = GTK_ENTRY( GTK_BIN(m_widget)->child );
-        gtk_entry_set_editable( m_entry, TRUE );
+        m_entry = GTK_ENTRY(gtk_bin_get_child(GTK_BIN(m_widget)));
+        gtk_editable_set_editable(GTK_EDITABLE(m_entry), true);
     }
     g_object_ref(m_widget);
 
@@ -164,6 +164,19 @@ GdkWindow *wxBitmapComboBox::GTKGetWindow(wxArrayGdkWindows& windows) const
     return wxChoice::GTKGetWindow(windows);
 }
 
+wxSize wxBitmapComboBox::DoGetBestSize() const
+{
+    wxSize best = wxComboBox::DoGetBestSize();
+
+    int delta = GetBitmapSize().y - GetCharHeight();
+    if ( delta > 0 )
+    {
+        best.y += delta;
+        CacheBestSize(best);
+    }
+    return best;
+}
+
 // ----------------------------------------------------------------------------
 // Item manipulation
 // ----------------------------------------------------------------------------
@@ -211,7 +224,7 @@ wxBitmap wxBitmapComboBox::GetItemBitmap(unsigned int n) const
         if ( pixbuf )
         {
             g_object_ref( pixbuf );
-            bitmap.SetPixbuf( pixbuf );
+            bitmap = wxBitmap(pixbuf);
         }
         g_value_unset( &value );
     }
@@ -264,6 +277,15 @@ int wxBitmapComboBox::Insert(const wxString& item, const wxBitmap& bitmap,
     return n;
 }
 
+int wxBitmapComboBox::Insert(const wxString& item, const wxBitmap& bitmap,
+                             unsigned int pos, void *clientData)
+{
+    const int n = wxComboBox::Insert(item, pos, clientData);
+    if ( n != wxNOT_FOUND )
+        SetItemBitmap(n, bitmap);
+    return n;
+}
+
 void wxBitmapComboBox::GTKInsertComboBoxTextItem( unsigned int n, const wxString& text )
 {
     GtkComboBox* combobox = GTK_COMBO_BOX( m_widget );
@@ -288,6 +310,8 @@ void wxBitmapComboBox::WriteText(const wxString& value)
 {
     if ( GetEntry() )
         wxComboBox::WriteText(value);
+    else
+        SetStringSelection(value);
 }
 
 wxString wxBitmapComboBox::GetValue() const