]> git.saurik.com Git - wxWidgets.git/commitdiff
Clear old selection when wxListBox becomes empty.
authorVadim Zeitlin <vadim@wxwidgets.org>
Fri, 1 Jun 2012 22:34:17 +0000 (22:34 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Fri, 1 Jun 2012 22:34:17 +0000 (22:34 +0000)
When UpdateOldSelections() is called from wxListBox::DoClear(), it must clear
the old selections array even for single selection list boxes, but it didn't
do this under non-MSW platforms.

Specifically check for the case of an empty listbox now and just forget the
old selections then. This fixes the problem of keeping stale old selections
and is also more efficient as we avoid the unnecessary GetSelections() call.

Really closes #14359.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71637 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/lboxcmn.cpp

index ce0cbbb16efd4c07a8f61f11b88ae36579af11c2..0e1d05019365d2c6bad19c5782992dc6135085fe 100644 (file)
@@ -167,6 +167,14 @@ void wxListBoxBase::DeselectAll(int itemToLeaveSelected)
 
 void wxListBoxBase::UpdateOldSelections()
 {
+    // When the control becomes empty, any previously remembered selections are
+    // invalid anyhow, so just forget them.
+    if ( IsEmpty() )
+    {
+        m_oldSelections.clear();
+        return;
+    }
+
     // We need to remember the selection even in single-selection case on
     // Windows, so that we don't send an event when the user clicks on an
     // already selected item.