From 376c0148ef771bf0db1eb6253307f7825c6fb4da Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Tue, 22 Feb 2005 22:45:32 +0000 Subject: [PATCH] Better correction to the wxListBox misbehaviour. Strangely, the listbox sends out 2 events upon the first selection. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32311 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- samples/controls/controls.cpp | 2 +- src/gtk/listbox.cpp | 17 ++++++++++------- src/gtk1/listbox.cpp | 17 ++++++++++------- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/samples/controls/controls.cpp b/samples/controls/controls.cpp index 77fefdba72..aafd3d3b44 100644 --- a/samples/controls/controls.cpp +++ b/samples/controls/controls.cpp @@ -677,7 +677,7 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) wxPanel *panel = new wxPanel(m_book); m_listbox = new wxListBox( panel, ID_LISTBOX, wxPoint(10,10), wxSize(120,70), - 5, choices, wxLB_MULTIPLE /*|wxLB_ALWAYS_SB*/ ); + 5, choices, wxLB_MULTIPLE |wxLB_ALWAYS_SB ); m_listboxSorted = new wxListBox( panel, ID_LISTBOX_SORTED, wxPoint(10,90), wxSize(120,70), 5, choices, wxLB_SORT ); diff --git a/src/gtk/listbox.cpp b/src/gtk/listbox.cpp index b71512c250..b522fd7a88 100644 --- a/src/gtk/listbox.cpp +++ b/src/gtk/listbox.cpp @@ -233,18 +233,21 @@ gtk_listbox_button_press_callback( GtkWidget *widget, } #endif // wxUSE_CHECKLISTBOX -#if 0 if ((gdk_event->state == 0) && (((listbox->GetWindowStyleFlag() & wxLB_MULTIPLE) != 0) || ((listbox->GetWindowStyleFlag() & wxLB_EXTENDED) != 0)) ) { - if (listbox->IsSelected(sel)) - { - gtk_list_unselect_item( GTK_LIST(listbox->m_list), sel ); - return true; - } + listbox->m_blockEvent = TRUE; + + int i; + for (i = 0; i < (int)listbox->GetCount(); i++) + if (i != sel) + gtk_list_unselect_item( GTK_LIST(listbox->m_list), i ); + + listbox->m_blockEvent = FALSE; + + return false; } -#endif /* emit wxEVT_COMMAND_LISTBOX_DOUBLECLICKED later */ g_hasDoubleClicked = (gdk_event->type == GDK_2BUTTON_PRESS); diff --git a/src/gtk1/listbox.cpp b/src/gtk1/listbox.cpp index b71512c250..b522fd7a88 100644 --- a/src/gtk1/listbox.cpp +++ b/src/gtk1/listbox.cpp @@ -233,18 +233,21 @@ gtk_listbox_button_press_callback( GtkWidget *widget, } #endif // wxUSE_CHECKLISTBOX -#if 0 if ((gdk_event->state == 0) && (((listbox->GetWindowStyleFlag() & wxLB_MULTIPLE) != 0) || ((listbox->GetWindowStyleFlag() & wxLB_EXTENDED) != 0)) ) { - if (listbox->IsSelected(sel)) - { - gtk_list_unselect_item( GTK_LIST(listbox->m_list), sel ); - return true; - } + listbox->m_blockEvent = TRUE; + + int i; + for (i = 0; i < (int)listbox->GetCount(); i++) + if (i != sel) + gtk_list_unselect_item( GTK_LIST(listbox->m_list), i ); + + listbox->m_blockEvent = FALSE; + + return false; } -#endif /* emit wxEVT_COMMAND_LISTBOX_DOUBLECLICKED later */ g_hasDoubleClicked = (gdk_event->type == GDK_2BUTTON_PRESS); -- 2.47.2