deselect all items when SetSelection(-1) is called (patch 1506943)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39836 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2006-06-26 00:46:32 +00:00
parent be0ac1819a
commit ef33382e43
2 changed files with 25 additions and 1 deletions

View File

@ -100,6 +100,7 @@ public:
struct _GtkTreeEntry* GtkGetEntry(int pos) const;
void GtkInsertItems(const wxArrayString& items,
void** clientData, unsigned int pos);
void GtkDeselectAll();
void GtkSetSelection(int n, const bool select, const bool blockEvent);
protected:

View File

@ -944,7 +944,30 @@ bool wxListBox::IsSelected( int n ) const
void wxListBox::DoSetSelection( int n, bool select )
{
return GtkSetSelection(n, select, true); //docs say no events here
// passing -1 to SetSelection() is documented to deselect all items
if ( n == wxNOT_FOUND )
{
// ... and not generate any events in the process
GtkDeselectAll();
}
wxCHECK_RET( IsValid(n), wxT("invalid index in wxListBox::SetSelection") );
// don't generate the selection event
GtkSetSelection(n, select, true);
}
void wxListBox::GtkDeselectAll()
{
wxCHECK_RET( m_treeview != NULL, wxT("invalid listbox") );
GtkTreeSelection* selection = gtk_tree_view_get_selection(m_treeview);
m_blockEvent = true;
gtk_tree_selection_unselect_all(selection);
m_blockEvent = false;
}
void wxListBox::GtkSetSelection(int n, const bool select, const bool blockEvent)