X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9f8845289521c7f53e95b6dfd8275daab8b05639..7e126a0784c24166888759bbc96d65a59c062fa8:/src/gtk1/listbox.cpp diff --git a/src/gtk1/listbox.cpp b/src/gtk1/listbox.cpp index b2d8307151..37154d6eda 100644 --- a/src/gtk1/listbox.cpp +++ b/src/gtk1/listbox.cpp @@ -223,6 +223,44 @@ gtk_listbox_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_event, wxLis } #endif // wxUSE_CHECKLISTBOX + // Check or uncheck item with SPACE + if ((gdk_event->keyval == ' ') && (!ret) && + (((listbox->GetWindowStyleFlag() & wxLB_MULTIPLE) != 0) || + ((listbox->GetWindowStyleFlag() & wxLB_EXTENDED) != 0)) ) + { + int sel = listbox->GtkGetIndex( widget ); + + if (sel != -1) + { + ret = TRUE; + + if (listbox->IsSelected( sel )) + gtk_list_unselect_item( listbox->m_list, sel ); + else + gtk_list_select_item( listbox->m_list, sel ); + + wxCommandEvent new_event(wxEVT_COMMAND_LISTBOX_SELECTED, listbox->GetId() ); + new_event.SetEventObject( listbox ); + wxArrayInt aSelections; + int n, count = listbox->GetSelections(aSelections); + if ( count > 0 ) + { + n = aSelections[0]; + if ( listbox->HasClientObjectData() ) + new_event.SetClientObject( listbox->GetClientObject(n) ); + else if ( listbox->HasClientUntypedData() ) + new_event.SetClientData( listbox->GetClientData(n) ); + new_event.SetString( listbox->GetString(n) ); + } + else + { + n = -1; + } + new_event.m_commandInt = n; + listbox->GetEventHandler()->ProcessEvent( new_event ); + } + } + if (ret) { gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "key_press_event" ); @@ -578,21 +616,21 @@ void wxListBox::GtkAddItem( const wxString &item, int pos ) gtk_widget_realize( list_item ); gtk_widget_realize( GTK_BIN(list_item)->child ); - // Apply current widget style to the new list_item - GtkRcStyle *style = CreateWidgetStyle(); - if (style) - { - gtk_widget_modify_style( GTK_WIDGET( list_item ), style ); - GtkBin *bin = GTK_BIN( list_item ); - GtkWidget *label = GTK_WIDGET( bin->child ); - gtk_widget_modify_style( label, style ); - gtk_rc_style_unref( style ); - } - #if wxUSE_TOOLTIPS if (m_tooltip) m_tooltip->Apply( this ); #endif } + + // Apply current widget style to the new list_item + GtkRcStyle *style = CreateWidgetStyle(); + if (style) + { + gtk_widget_modify_style( GTK_WIDGET( list_item ), style ); + GtkBin *bin = GTK_BIN( list_item ); + GtkWidget *label = GTK_WIDGET( bin->child ); + gtk_widget_modify_style( label, style ); + gtk_rc_style_unref( style ); + } } void wxListBox::DoSetItems( const wxArrayString& items, @@ -967,11 +1005,15 @@ void wxListBox::ApplyToolTip( GtkTooltips *tips, const wxChar *tip ) GtkWidget *wxListBox::GetConnectWidget() { - return GTK_WIDGET(m_list); + // return GTK_WIDGET(m_list); + return m_widget; } bool wxListBox::IsOwnGtkWindow( GdkWindow *window ) { + return TRUE; + +#if 0 if (m_widget->window == window) return TRUE; if (GTK_WIDGET(m_list)->window == window) return TRUE; @@ -985,6 +1027,7 @@ bool wxListBox::IsOwnGtkWindow( GdkWindow *window ) } return FALSE; +#endif } void wxListBox::DoApplyWidgetStyle(GtkRcStyle *style)