]> git.saurik.com Git - wxWidgets.git/commitdiff
reset g_SelectionBeforePopup sooner in gtk_popup_hide_callback() to ensure that GetSe...
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 16 Jan 2006 02:31:40 +0000 (02:31 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 16 Jan 2006 02:31:40 +0000 (02:31 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36890 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/gtk/combobox.cpp
src/gtk1/combobox.cpp

index 6c967b58beb49939b621618ddb10ae51b724bf01..517993327f502e7a4c842a1057dfb43738de4247 100644 (file)
@@ -75,8 +75,16 @@ gtk_popup_hide_callback(GtkCombo *WXUNUSED(gtk_combo), wxComboBox *combo)
 {
     // when the popup is hidden, throw a SELECTED event only if the combobox
     // selection changed.
 {
     // when the popup is hidden, throw a SELECTED event only if the combobox
     // selection changed.
-    int curSelection = combo->GetCurrentSelection();
-    if (g_SelectionBeforePopup != curSelection)
+    const int curSelection = combo->GetCurrentSelection();
+
+    const bool hasChanged = curSelection != g_SelectionBeforePopup;
+
+    // reset the selection flag to value meaning that it is hidden and do it
+    // now, before generating the events, so that GetSelection() returns the
+    // new value from the event handler
+    g_SelectionBeforePopup = wxID_NONE;
+
+    if ( hasChanged )
     {
         wxCommandEvent event( wxEVT_COMMAND_COMBOBOX_SELECTED, combo->GetId() );
         event.SetInt( curSelection );
     {
         wxCommandEvent event( wxEVT_COMMAND_COMBOBOX_SELECTED, combo->GetId() );
         event.SetInt( curSelection );
@@ -90,9 +98,6 @@ gtk_popup_hide_callback(GtkCombo *WXUNUSED(gtk_combo), wxComboBox *combo)
         event2.SetEventObject( combo );
         combo->GetEventHandler()->ProcessEvent( event2 );
     }
         event2.SetEventObject( combo );
         combo->GetEventHandler()->ProcessEvent( event2 );
     }
-
-    // reset the selection flag to value meaning that it is hidden
-    g_SelectionBeforePopup = wxID_NONE;
 }
 }
 
 }
 }
 
index 6c967b58beb49939b621618ddb10ae51b724bf01..517993327f502e7a4c842a1057dfb43738de4247 100644 (file)
@@ -75,8 +75,16 @@ gtk_popup_hide_callback(GtkCombo *WXUNUSED(gtk_combo), wxComboBox *combo)
 {
     // when the popup is hidden, throw a SELECTED event only if the combobox
     // selection changed.
 {
     // when the popup is hidden, throw a SELECTED event only if the combobox
     // selection changed.
-    int curSelection = combo->GetCurrentSelection();
-    if (g_SelectionBeforePopup != curSelection)
+    const int curSelection = combo->GetCurrentSelection();
+
+    const bool hasChanged = curSelection != g_SelectionBeforePopup;
+
+    // reset the selection flag to value meaning that it is hidden and do it
+    // now, before generating the events, so that GetSelection() returns the
+    // new value from the event handler
+    g_SelectionBeforePopup = wxID_NONE;
+
+    if ( hasChanged )
     {
         wxCommandEvent event( wxEVT_COMMAND_COMBOBOX_SELECTED, combo->GetId() );
         event.SetInt( curSelection );
     {
         wxCommandEvent event( wxEVT_COMMAND_COMBOBOX_SELECTED, combo->GetId() );
         event.SetInt( curSelection );
@@ -90,9 +98,6 @@ gtk_popup_hide_callback(GtkCombo *WXUNUSED(gtk_combo), wxComboBox *combo)
         event2.SetEventObject( combo );
         combo->GetEventHandler()->ProcessEvent( event2 );
     }
         event2.SetEventObject( combo );
         combo->GetEventHandler()->ProcessEvent( event2 );
     }
-
-    // reset the selection flag to value meaning that it is hidden
-    g_SelectionBeforePopup = wxID_NONE;
 }
 }
 
 }
 }