@@ -2723,8 +2723,9 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
2723
2723
return true ;
2724
2724
}
2725
2725
}
2726
- if ((event.GUIEvent .EventType ==gui::EGET_BUTTON_CLICKED) ||
2727
- (event.GUIEvent .EventType ==gui::EGET_CHECKBOX_CHANGED)) {
2726
+ if ((event.GUIEvent .EventType == gui::EGET_BUTTON_CLICKED) ||
2727
+ (event.GUIEvent .EventType == gui::EGET_CHECKBOX_CHANGED) ||
2728
+ (event.GUIEvent .EventType == gui::EGET_COMBO_BOX_CHANGED)) {
2728
2729
unsigned int btn_id = event.GUIEvent .Caller ->getID ();
2729
2730
2730
2731
if (btn_id == 257 ) {
@@ -2756,14 +2757,36 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
2756
2757
}
2757
2758
return true ;
2758
2759
} else {
2759
- acceptInput ();
2760
+ acceptInput (quit_mode_no );
2760
2761
s.send = false ;
2761
2762
return true ;
2762
2763
}
2763
2764
}
2765
+ if ((s.ftype == f_DropDown) &&
2766
+ (s.fid == event.GUIEvent .Caller ->getID ())) {
2767
+ // only send the changed dropdown
2768
+ for (u32 i=0 ; i<m_fields.size (); i++) {
2769
+ FieldSpec &s2 = m_fields[i];
2770
+ if (s2.ftype == f_DropDown) {
2771
+ s2.send = false ;
2772
+ }
2773
+ }
2774
+ s.send = true ;
2775
+ acceptInput (quit_mode_no);
2776
+
2777
+ // revert configuration to make sure dropdowns are sent on
2778
+ // regular button click
2779
+ for (u32 i=0 ; i<m_fields.size (); i++) {
2780
+ FieldSpec &s2 = m_fields[i];
2781
+ if (s2.ftype == f_DropDown) {
2782
+ s2.send = true ;
2783
+ }
2784
+ }
2785
+ return true ;
2786
+ }
2764
2787
}
2765
2788
}
2766
- if (event.GUIEvent .EventType == gui::EGET_EDITBOX_ENTER) {
2789
+ if (event.GUIEvent .EventType == gui::EGET_EDITBOX_ENTER) {
2767
2790
if (event.GUIEvent .Caller ->getID () > 257 ) {
2768
2791
2769
2792
if (m_allowclose) {
@@ -2778,7 +2801,7 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
2778
2801
}
2779
2802
}
2780
2803
2781
- if (event.GUIEvent .EventType == gui::EGET_TABLE_CHANGED) {
2804
+ if (event.GUIEvent .EventType == gui::EGET_TABLE_CHANGED) {
2782
2805
int current_id = event.GUIEvent .Caller ->getID ();
2783
2806
if (current_id > 257 ) {
2784
2807
// find the element that was clicked
0 commit comments