// Purpose: wxBitmapComboBox
// Author: Jaakko Salli
// Created: 2008-05-19
-// RCS-ID: $Id:
+// RCS-ID: $Id$
// Copyright: (c) 2008 Jaakko Salli
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
{
m_bitmapCellIndex = 0;
m_stringCellIndex = 1;
- m_bitmapSize = wxSize(0, 0);
+ m_bitmapSize = wxSize(-1, -1);
}
wxBitmapComboBox::wxBitmapComboBox(wxWindow *parent,
// 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),
{
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
// ----------------------------------------------------------------------------
{
if ( bitmap.IsOk() )
{
- if ( m_bitmapSize.x == 0 )
+ if ( m_bitmapSize.x < 0 )
{
m_bitmapSize.x = bitmap.GetWidth();
m_bitmapSize.y = bitmap.GetHeight();
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 );
{
if ( GetEntry() )
wxComboBox::WriteText(value);
+ else
+ SetStringSelection(value);
}
wxString wxBitmapComboBox::GetValue() const