void wxFileDirPickerCtrlBase::UpdatePickerFromTextCtrl() { wxASSERT(m_text); // remove the eventually present path-separator from the end of the textctrl // string otherwise we would generate a wxFileDirPickerEvent when changing // from e.g. /home/user to /home/user/ and we want to avoid it ! wxString newpath(GetTextCtrlValue()); // Notice that we use to check here whether the current path is valid, i.e. // if the corresponding file or directory exists for the controls with // wxFLP_FILE_MUST_EXIST or wxDIRP_DIR_MUST_EXIST flag, however we don't do // this any more as we still must notify the program about any changes in // the control, otherwise its view of it would be different from what is // actually shown on the screen, resulting in very confusing UI. if (m_pickerIface->GetPath() != newpath) { m_pickerIface->SetPath(newpath); // update current working directory, if necessary // NOTE: the path separator is required because if newpath is "C:" // then no change would happen if (IsCwdToUpdate()) wxSetWorkingDirectory(newpath); // fire an event wxFileDirPickerEvent event(GetEventType(), this, GetId(), newpath); GetEventHandler()->ProcessEvent(event); } }
void wxFileDirPickerCtrlBase::UpdatePickerFromTextCtrl() { wxASSERT(m_text); if (m_bIgnoreNextTextCtrlUpdate) { // ignore this update m_bIgnoreNextTextCtrlUpdate = false; return; } // remove the eventually present path-separator from the end of the textctrl // string otherwise we would generate a wxFileDirPickerEvent when changing // from e.g. /home/user to /home/user/ and we want to avoid it ! wxString newpath(GetTextCtrlValue()); if (!CheckPath(newpath)) return; // invalid user input if (m_pickerIface->GetPath() != newpath) { m_pickerIface->SetPath(newpath); // update current working directory, if necessary // NOTE: the path separator is required because if newpath is "C:" // then no change would happen if (IsCwdToUpdate()) wxSetWorkingDirectory(newpath); // fire an event wxFileDirPickerEvent event(GetEventType(), this, GetId(), newpath); GetEventHandler()->ProcessEvent(event); } }