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
wxPanel *panel = new wxPanel(m_book);
m_listbox = new wxListBox( panel, ID_LISTBOX,
wxPoint(10,10), wxSize(120,70),
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 );
m_listboxSorted = new wxListBox( panel, ID_LISTBOX_SORTED,
wxPoint(10,90), wxSize(120,70),
5, choices, wxLB_SORT );
}
#endif // wxUSE_CHECKLISTBOX
}
#endif // wxUSE_CHECKLISTBOX
if ((gdk_event->state == 0) &&
(((listbox->GetWindowStyleFlag() & wxLB_MULTIPLE) != 0) ||
((listbox->GetWindowStyleFlag() & wxLB_EXTENDED) != 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;
/* emit wxEVT_COMMAND_LISTBOX_DOUBLECLICKED later */
g_hasDoubleClicked = (gdk_event->type == GDK_2BUTTON_PRESS);
/* emit wxEVT_COMMAND_LISTBOX_DOUBLECLICKED later */
g_hasDoubleClicked = (gdk_event->type == GDK_2BUTTON_PRESS);
}
#endif // wxUSE_CHECKLISTBOX
}
#endif // wxUSE_CHECKLISTBOX
if ((gdk_event->state == 0) &&
(((listbox->GetWindowStyleFlag() & wxLB_MULTIPLE) != 0) ||
((listbox->GetWindowStyleFlag() & wxLB_EXTENDED) != 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;
/* emit wxEVT_COMMAND_LISTBOX_DOUBLECLICKED later */
g_hasDoubleClicked = (gdk_event->type == GDK_2BUTTON_PRESS);
/* emit wxEVT_COMMAND_LISTBOX_DOUBLECLICKED later */
g_hasDoubleClicked = (gdk_event->type == GDK_2BUTTON_PRESS);