X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9ff9d30c0aab3b281ef9b380eac17435556c5088..a1bdd4ab9bb8cdcf8a14b8a64a5f5508be48ba4c:/src/gtk/bmpcbox.cpp?ds=sidebyside diff --git a/src/gtk/bmpcbox.cpp b/src/gtk/bmpcbox.cpp index 0378a0a0df..7743cd1465 100644 --- a/src/gtk/bmpcbox.cpp +++ b/src/gtk/bmpcbox.cpp @@ -3,7 +3,7 @@ // Purpose: wxBitmapComboBox // Author: Jaakko Salli // Created: 2008-05-19 -// RCS-ID: $Id: +// RCS-ID: $Id$ // Copyright: (c) 2008 Jaakko Salli // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -48,7 +48,7 @@ void wxBitmapComboBox::Init() { m_bitmapCellIndex = 0; m_stringCellIndex = 1; - m_bitmapSize = wxSize(0, 0); + m_bitmapSize = wxSize(-1, -1); } wxBitmapComboBox::wxBitmapComboBox(wxWindow *parent, @@ -129,7 +129,7 @@ void wxBitmapComboBox::GTKCreateComboBoxWidget() // This must be called as gtk_combo_box_entry_new_with_model adds // automatically adds one text column. - gtk_cell_layout_clear( GTK_CELL_LAYOUT(m_widget) ); + gtk_cell_layout_clear( GTK_CELL_LAYOUT(m_widget) ); GtkCellRenderer* imageRenderer = gtk_cell_renderer_pixbuf_new(); gtk_cell_layout_pack_start( GTK_CELL_LAYOUT(m_widget), @@ -160,10 +160,23 @@ GdkWindow *wxBitmapComboBox::GTKGetWindow(wxArrayGdkWindows& windows) const { if ( GetEntry() ) return wxComboBox::GTKGetWindow(windows); - + 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 // ---------------------------------------------------------------------------- @@ -172,7 +185,7 @@ void wxBitmapComboBox::SetItemBitmap(unsigned int n, const wxBitmap& bitmap) { if ( bitmap.IsOk() ) { - if ( m_bitmapSize.x == 0 ) + if ( m_bitmapSize.x < 0 ) { m_bitmapSize.x = bitmap.GetWidth(); m_bitmapSize.y = bitmap.GetHeight(); @@ -288,6 +301,8 @@ void wxBitmapComboBox::WriteText(const wxString& value) { if ( GetEntry() ) wxComboBox::WriteText(value); + else + SetStringSelection(value); } wxString wxBitmapComboBox::GetValue() const