]> git.saurik.com Git - wxWidgets.git/commitdiff
indicate whether this is a selection or a deselection in wxCommandEvent generated...
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 2 Feb 2003 03:05:41 +0000 (03:05 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 2 Feb 2003 03:05:41 +0000 (03:05 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19060 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/gtk/listbox.cpp
src/gtk1/listbox.cpp
src/msw/listbox.cpp

index b1ab730b70735f08c2048739e428cab368fd3e0f..e3edea4f3d15345290eec76d349cbc8e80a41d6b 100644 (file)
@@ -243,7 +243,9 @@ static void gtk_listitem_deselect_callback( GtkWidget *widget, wxListBox *listbo
     gtk_listitem_select_cb( widget, listbox, FALSE );
 }
 
-static void gtk_listitem_select_cb( GtkWidget *widget, wxListBox *listbox, bool is_selection )
+static void gtk_listitem_select_cb( GtkWidget *widget,
+                                    wxListBox *listbox,
+                                    bool is_selection )
 {
     if (g_isIdle) wxapp_install_idle_handler();
 
@@ -255,9 +257,8 @@ static void gtk_listitem_select_cb( GtkWidget *widget, wxListBox *listbox, bool
     wxCommandEvent event(wxEVT_COMMAND_LISTBOX_SELECTED, listbox->GetId() );
     event.SetEventObject( listbox );
 
-//    MSW doesn't do that either
-//    event.SetExtraLong( (long) is_selection );
-
+    // indicate whether this is a selection or a deselection
+    event.SetExtraLong( is_selection );
 
     if ((listbox->GetWindowStyleFlag() & wxLB_SINGLE) != 0)
     {
index b1ab730b70735f08c2048739e428cab368fd3e0f..e3edea4f3d15345290eec76d349cbc8e80a41d6b 100644 (file)
@@ -243,7 +243,9 @@ static void gtk_listitem_deselect_callback( GtkWidget *widget, wxListBox *listbo
     gtk_listitem_select_cb( widget, listbox, FALSE );
 }
 
-static void gtk_listitem_select_cb( GtkWidget *widget, wxListBox *listbox, bool is_selection )
+static void gtk_listitem_select_cb( GtkWidget *widget,
+                                    wxListBox *listbox,
+                                    bool is_selection )
 {
     if (g_isIdle) wxapp_install_idle_handler();
 
@@ -255,9 +257,8 @@ static void gtk_listitem_select_cb( GtkWidget *widget, wxListBox *listbox, bool
     wxCommandEvent event(wxEVT_COMMAND_LISTBOX_SELECTED, listbox->GetId() );
     event.SetEventObject( listbox );
 
-//    MSW doesn't do that either
-//    event.SetExtraLong( (long) is_selection );
-
+    // indicate whether this is a selection or a deselection
+    event.SetExtraLong( is_selection );
 
     if ((listbox->GetWindowStyleFlag() & wxLB_SINGLE) != 0)
     {
index 59aeac9eea7556e5f929845278655119dc6449a5..662b86359f84311d0464eab760e2e14e3ba41734 100644 (file)
@@ -49,7 +49,7 @@
     #endif
 #endif
 
-    IMPLEMENT_DYNAMIC_CLASS(wxListBox, wxControl)
+IMPLEMENT_DYNAMIC_CLASS(wxListBox, wxControl)
 
 // ============================================================================
 // list box item declaration and implementation
@@ -675,20 +675,17 @@ bool wxListBox::MSWCommand(WXUINT param, WXWORD WXUNUSED(id))
     wxCommandEvent event(evtType, m_windowId);
     event.SetEventObject( this );
 
-    wxArrayInt aSelections;
-    int n, count = GetSelections(aSelections);
-    if ( count > 0 )
+    // retrieve the affected item
+    int n = SendMessage(GetHwnd(), LB_GETCARETINDEX, 0, 0);
+    if ( n != LB_ERR )
     {
-        n = aSelections[0];
         if ( HasClientObjectData() )
             event.SetClientObject( GetClientObject(n) );
         else if ( HasClientUntypedData() )
             event.SetClientData( GetClientData(n) );
+
         event.SetString( GetString(n) );
-    }
-    else
-    {
-        n = -1;
+        event.SetExtraLong( HasMultipleSelection() ? IsSelected(n) : TRUE );
     }
 
     event.m_commandInt = n;