X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/60b71826d657aea1ea285ec855a55cc8f44192df..4e15d1caa03346c126015019c1fdf093033ef40b:/src/gtk/bmpcbox.cpp?ds=sidebyside diff --git a/src/gtk/bmpcbox.cpp b/src/gtk/bmpcbox.cpp index 13fb8edf00..f9f8f042fb 100644 --- a/src/gtk/bmpcbox.cpp +++ b/src/gtk/bmpcbox.cpp @@ -1,9 +1,9 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: src/gtk/bmpcboxg.cpp +// Name: src/gtk/bmpcbox.cpp // Purpose: wxBitmapComboBox // Author: Jaakko Salli // Created: 2008-05-19 -// RCS-ID: $Id: +// RCS-ID: $Id$ // Copyright: (c) 2008 Jaakko Salli // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -30,6 +30,7 @@ #include "wx/log.h" #endif +#include #include "wx/gtk/private.h" // ============================================================================ @@ -101,9 +102,9 @@ bool wxBitmapComboBox::Create(wxWindow *parent, // Select 'value' in entry-less mode if ( !GetEntry() ) { - int n = FindString(value); - if ( n != wxNOT_FOUND ) - SetSelection(n); + int i = FindString(value); + if (i != wxNOT_FOUND) + SetSelection(i); } return true; @@ -121,9 +122,14 @@ void wxBitmapComboBox::GTKCreateComboBoxWidget() } else { +#ifdef __WXGTK3__ + m_widget = gtk_combo_box_new_with_model_and_entry(GTK_TREE_MODEL(store)); + gtk_combo_box_set_entry_text_column(GTK_COMBO_BOX(m_widget), m_stringCellIndex); +#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 ); +#endif + 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 +170,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 +230,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 +283,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 +316,8 @@ void wxBitmapComboBox::WriteText(const wxString& value) { if ( GetEntry() ) wxComboBox::WriteText(value); + else + SetStringSelection(value); } wxString wxBitmapComboBox::GetValue() const