void OnNew( wxCommandEvent &event );
void OnChoiceFilter( wxCommandEvent &event );
void OnTextEnter( wxCommandEvent &event );
+ void OnTextChange( wxCommandEvent &event );
void OnCheck( wxCommandEvent &event );
void HandleAction( const wxString &fn );
EVT_LIST_ITEM_ACTIVATED(ID_LIST_CTRL, wxFileDialog::OnActivated)
EVT_CHOICE(ID_CHOICE,wxFileDialog::OnChoiceFilter)
EVT_TEXT_ENTER(ID_TEXT,wxFileDialog::OnTextEnter)
+ EVT_TEXT(ID_TEXT,wxFileDialog::OnTextChange)
EVT_CHECKBOX(ID_CHECK,wxFileDialog::OnCheck)
END_EVENT_TABLE()
GetEventHandler()->ProcessEvent( cevent );
}
+static bool ignoreChanges = FALSE;
+
+void wxFileDialog::OnTextChange( wxCommandEvent &WXUNUSED(event) )
+{
+ if (!ignoreChanges)
+ {
+ // Clear selections. Otherwise when the user types in a value they may
+ // not get the file whose name they typed.
+ if (m_list->GetSelectedItemCount() > 0)
+ {
+ long item = m_list->GetNextItem(-1, wxLIST_NEXT_ALL,
+ wxLIST_STATE_SELECTED);
+ while ( item != -1 )
+ {
+ m_list->SetItemState(item,0, wxLIST_STATE_SELECTED);
+ item = m_list->GetNextItem(item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
+ }
+ }
+ }
+}
+
void wxFileDialog::OnSelected( wxListEvent &event )
{
wxString filename( event.m_item.m_text );
dir += filename;
if (wxDirExists(dir)) return;
+ ignoreChanges = TRUE;
m_text->SetValue( filename );
+ ignoreChanges = FALSE;
}
void wxFileDialog::HandleAction( const wxString &fn )