Skipping hacks.
[dcpomatic.git] / src / wx / wx_util.cc
index 4196dd632e01ef1c4477fc89a31ff1a7994580b6..b9a462801103957b8fbe1cee1e1c4a08ded73377 100644 (file)
@@ -119,6 +119,12 @@ void
 checked_set (wxFilePickerCtrl* widget, string value)
 {
        if (widget->GetPath() != std_to_wx (value)) {
+               if (value.empty()) {
+                       /* Hack to make wxWidgets clear the control when we are passed
+                          an empty value.
+                       */
+                       value = " ";
+               }
                widget->SetPath (std_to_wx (value));
        }
 }
@@ -135,14 +141,24 @@ void
 checked_set (wxComboBox* widget, int value)
 {
        if (widget->GetSelection() != value) {
-               widget->SetSelection (value);
+               if (value == wxNOT_FOUND) {
+                       /* Work around an apparent wxWidgets bug; SetSelection (wxNOT_FOUND)
+                          appears not to work sometimes.
+                       */
+                       widget->SetValue (wxT (""));
+               } else {
+                       widget->SetSelection (value);
+               }
        }
 }
 
 void
 checked_set (wxComboBox* widget, string value)
 {
-       wxClientData* o = widget->GetClientObject (widget->GetSelection ());
+       wxClientData* o = 0;
+       if (widget->GetSelection() != -1) {
+               o = widget->GetClientObject (widget->GetSelection ());
+       }
        
        if (!o || string_client_data(o) != value) {
                for (unsigned int i = 0; i < widget->GetCount(); ++i) {