X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bc60925fb3dbcd8011b82f019d71106b2f8dd64f..944975221d770af8efe0e03ab4e339b5432e3dd9:/src/gtk/listbox.cpp diff --git a/src/gtk/listbox.cpp b/src/gtk/listbox.cpp index 634f2fd26e..79f85977bb 100644 --- a/src/gtk/listbox.cpp +++ b/src/gtk/listbox.cpp @@ -119,11 +119,11 @@ gtk_listitem_changed_callback(GtkTreeSelection * WXUNUSED(selection), { if (g_blockEventsOnDrag) return; - if (listbox->HasFlag(wxLB_MULTIPLE) || listbox->HasFlag(wxLB_EXTENDED)) + if (listbox->HasFlag(wxLB_MULTIPLE | wxLB_EXTENDED)) { listbox->CalcAndSendEvent(); } - else + else // single selection { wxCommandEvent event(wxEVT_COMMAND_LISTBOX_SELECTED, listbox->GetId() ); event.SetEventObject( listbox ); @@ -178,10 +178,19 @@ gtk_listbox_key_press_callback( GtkWidget *WXUNUSED(widget), (gdk_event->keyval == GDK_ISO_Enter) || (gdk_event->keyval == GDK_KP_Enter)) { - int index = listbox->GetSelection(); - if (index != wxNOT_FOUND) + int index = -1; + if (!listbox->HasMultipleSelection()) + index = listbox->GetSelection(); + else { + wxArrayInt sels; + if (listbox->GetSelections( sels ) < 1) + return FALSE; + index = sels[0]; + } + if (index != wxNOT_FOUND) + { wxCommandEvent event(wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, listbox->GetId() ); event.SetEventObject( listbox ); @@ -412,17 +421,13 @@ bool wxListBox::Create( wxWindow *parent, wxWindowID id, gtk_tree_view_set_enable_search(m_treeview, FALSE); GtkSelectionMode mode; - if (style & wxLB_MULTIPLE) + // GTK_SELECTION_EXTENDED is a deprecated synonym for GTK_SELECTION_MULTIPLE + if ( style & (wxLB_MULTIPLE | wxLB_EXTENDED) ) { mode = GTK_SELECTION_MULTIPLE; } - else if (style & wxLB_EXTENDED) + else // no multi-selection flags specified { - mode = GTK_SELECTION_EXTENDED; - } - else - { - // if style was 0 set single mode m_windowStyle |= wxLB_SINGLE; mode = GTK_SELECTION_SINGLE; } @@ -499,6 +504,15 @@ void wxListBox::GtkEnableEvents() UpdateOldSelections(); } + +void wxListBox::Update() +{ + wxWindow::Update(); + + if (m_treeview) + gdk_window_process_updates(GTK_WIDGET(m_treeview)->window, TRUE); +} + // ---------------------------------------------------------------------------- // adding items // ----------------------------------------------------------------------------