reset g_SelectionBeforePopup sooner in gtk_popup_hide_callback() to ensure that GetSelection() returns the new selection when called from wxEVT_COMMAND_COMBOBOX_SELECTED handler
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36890 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -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
|
// when the popup is hidden, throw a SELECTED event only if the combobox
|
||||||
// selection changed.
|
// selection changed.
|
||||||
int curSelection = combo->GetCurrentSelection();
|
const int curSelection = combo->GetCurrentSelection();
|
||||||
if (g_SelectionBeforePopup != curSelection)
|
|
||||||
|
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() );
|
wxCommandEvent event( wxEVT_COMMAND_COMBOBOX_SELECTED, combo->GetId() );
|
||||||
event.SetInt( curSelection );
|
event.SetInt( curSelection );
|
||||||
@@ -90,9 +98,6 @@ gtk_popup_hide_callback(GtkCombo *WXUNUSED(gtk_combo), wxComboBox *combo)
|
|||||||
event2.SetEventObject( combo );
|
event2.SetEventObject( combo );
|
||||||
combo->GetEventHandler()->ProcessEvent( event2 );
|
combo->GetEventHandler()->ProcessEvent( event2 );
|
||||||
}
|
}
|
||||||
|
|
||||||
// reset the selection flag to value meaning that it is hidden
|
|
||||||
g_SelectionBeforePopup = wxID_NONE;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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
|
// when the popup is hidden, throw a SELECTED event only if the combobox
|
||||||
// selection changed.
|
// selection changed.
|
||||||
int curSelection = combo->GetCurrentSelection();
|
const int curSelection = combo->GetCurrentSelection();
|
||||||
if (g_SelectionBeforePopup != curSelection)
|
|
||||||
|
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() );
|
wxCommandEvent event( wxEVT_COMMAND_COMBOBOX_SELECTED, combo->GetId() );
|
||||||
event.SetInt( curSelection );
|
event.SetInt( curSelection );
|
||||||
@@ -90,9 +98,6 @@ gtk_popup_hide_callback(GtkCombo *WXUNUSED(gtk_combo), wxComboBox *combo)
|
|||||||
event2.SetEventObject( combo );
|
event2.SetEventObject( combo );
|
||||||
combo->GetEventHandler()->ProcessEvent( event2 );
|
combo->GetEventHandler()->ProcessEvent( event2 );
|
||||||
}
|
}
|
||||||
|
|
||||||
// reset the selection flag to value meaning that it is hidden
|
|
||||||
g_SelectionBeforePopup = wxID_NONE;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user