summaryrefslogtreecommitdiff
path: root/shared/custom_combo_box.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'shared/custom_combo_box.cpp')
-rw-r--r--shared/custom_combo_box.cpp39
1 files changed, 34 insertions, 5 deletions
diff --git a/shared/custom_combo_box.cpp b/shared/custom_combo_box.cpp
index 3c2a118c..18adb38a 100644
--- a/shared/custom_combo_box.cpp
+++ b/shared/custom_combo_box.cpp
@@ -18,12 +18,36 @@ CustomComboBox::CustomComboBox(wxWindow* parent,
const wxValidator& validator,
const wxString& name) :
wxComboBox(parent, id, value, pos, size, n, choices, style, validator, name)
+#if wxCHECK_VERSION(2, 9, 1)
+ , dropDownShown(false)
+#endif
{
//register key event to enable item deletion
this->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CustomComboBox::OnKeyEvent), NULL, this );
+
+#if wxCHECK_VERSION(2, 9, 1)
+ this->Connect(wxEVT_COMMAND_COMBOBOX_DROPDOWN, wxCommandEventHandler(CustomComboBox::OnShowDropDown), NULL, this );
+ this->Connect(wxEVT_COMMAND_COMBOBOX_CLOSEUP, wxCommandEventHandler(CustomComboBox::OnHideDropDown), NULL, this );
+#endif
+}
+
+
+#if wxCHECK_VERSION(2, 9, 1)
+void CustomComboBox::OnShowDropDown(wxCommandEvent& event)
+{
+ dropDownShown = true;
+ event.Skip();
}
+void CustomComboBox::OnHideDropDown(wxCommandEvent& event)
+{
+ dropDownShown = false;
+ event.Skip();
+}
+#endif
+
+
void CustomComboBox::OnKeyEvent(wxKeyEvent& event)
{
const int keyCode = event.GetKeyCode();
@@ -32,11 +56,16 @@ void CustomComboBox::OnKeyEvent(wxKeyEvent& event)
//try to delete the currently selected config history item
const int selectedItem = this->GetCurrentSelection();
if (0 <= selectedItem && selectedItem < static_cast<int>(this->GetCount()) &&
- (GetValue() != GetString(selectedItem) || //avoid problems when a character shall be deleted instead of list item
- GetValue() == wxEmptyString)) //exception: always allow removing empty entry
- {
- //save old (selected) value: deletion seems to have influence on this
- const wxString currentVal = this->GetValue();
+#if wxCHECK_VERSION(2, 9, 1)
+ dropDownShown)
+#else
+ //what a mess...:
+ (GetValue() != GetString(selectedItem) || //avoid problems when a character shall be deleted instead of list item
+ GetValue() == wxEmptyString)) //exception: always allow removing empty entry
+#endif
+ {
+ //save old (selected) value: deletion seems to have influence on this
+ const wxString currentVal = this->GetValue();
this->SetSelection(wxNOT_FOUND);
//delete selected row
bgstack15