X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/14f355c2b5c71fc7c3d680aea366582d2ac60f7b..6ab5d4883f3b51e88ccdd3b59fb0e000b3b6ad0f:/src/gtk1/listbox.cpp diff --git a/src/gtk1/listbox.cpp b/src/gtk1/listbox.cpp index 56f3a23383..15c355869d 100644 --- a/src/gtk1/listbox.cpp +++ b/src/gtk1/listbox.cpp @@ -316,6 +316,18 @@ wxListBox::wxListBox() #endif // wxUSE_CHECKLISTBOX } +bool wxListBox::Create( wxWindow *parent, wxWindowID id, + const wxPoint &pos, const wxSize &size, + const wxArrayString& choices, + long style, const wxValidator& validator, + const wxString &name ) +{ + wxCArrayString chs(choices); + + return Create( parent, id, pos, size, chs.GetCount(), chs.GetStrings(), + style, validator, name ); +} + bool wxListBox::Create( wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size, int n, const wxString choices[], @@ -392,19 +404,10 @@ bool wxListBox::Create( wxWindow *parent, wxWindowID id, DoAppend(choices[i]); } - // call it after appending the strings to the listbox, otherwise it doesn't - // work correctly - SetBestSize( size ); - m_parent->DoAddChild( this ); - PostCreation(); - - SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_LISTBOX ) ); - SetForegroundColour( parent->GetForegroundColour() ); - SetFont( parent->GetFont() ); - - Show( TRUE ); + PostCreation(size); + SetBestSize(size); // need this too because this is a wxControlWithItems return TRUE; } @@ -572,12 +575,14 @@ void wxListBox::GtkAddItem( const wxString &item, int pos ) gtk_widget_realize( GTK_BIN(list_item)->child ); // Apply current widget style to the new list_item - if (m_widgetStyle) + GtkRcStyle *style = CreateWidgetStyle(); + if (style) { - gtk_widget_set_style( GTK_WIDGET( list_item ), m_widgetStyle ); + gtk_widget_modify_style( GTK_WIDGET( list_item ), style ); GtkBin *bin = GTK_BIN( list_item ); GtkWidget *label = GTK_WIDGET( bin->child ); - gtk_widget_set_style( label, m_widgetStyle ); + gtk_widget_modify_style( label, style ); + gtk_rc_style_unref( style ); } #if wxUSE_TOOLTIPS @@ -978,11 +983,9 @@ bool wxListBox::IsOwnGtkWindow( GdkWindow *window ) return FALSE; } -void wxListBox::ApplyWidgetStyle() +void wxListBox::DoApplyWidgetStyle(GtkRcStyle *style) { - SetWidgetStyle(); - - if (m_backgroundColour.Ok()) + if (m_hasBgCol && m_backgroundColour.Ok()) { GdkWindow *window = GTK_WIDGET(m_list)->window; if ( window ) @@ -996,11 +999,11 @@ void wxListBox::ApplyWidgetStyle() GList *child = m_list->children; while (child) { - gtk_widget_set_style( GTK_WIDGET(child->data), m_widgetStyle ); + gtk_widget_modify_style( GTK_WIDGET(child->data), style ); GtkBin *bin = GTK_BIN( child->data ); GtkWidget *label = GTK_WIDGET( bin->child ); - gtk_widget_set_style( label, m_widgetStyle ); + gtk_widget_modify_style( label, style ); child = child->next; } @@ -1084,5 +1087,13 @@ void wxListBox::FixUpMouseEvent(GtkWidget *widget, wxCoord& x, wxCoord& y) y += widget->allocation.y; } + +// static +wxVisualAttributes +wxListBox::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant)) +{ + return GetDefaultAttributesFromGTKWidget(gtk_list_new, true); +} + #endif // wxUSE_LISTBOX