use update UI handler for the up and new directory buttons instead of manually updating the controls, this fixes a bug where up button wasn't enabled back after selecting a child of top level directory
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@48794 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		@@ -83,13 +83,14 @@ public:
 | 
				
			|||||||
    void OnNew( wxCommandEvent &event );
 | 
					    void OnNew( wxCommandEvent &event );
 | 
				
			||||||
    void OnFileActivated( wxFileCtrlEvent &event);
 | 
					    void OnFileActivated( wxFileCtrlEvent &event);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    virtual void UpdateControls();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
    // Don't use this implementation at all :-)
 | 
					    // if true, don't use this implementation at all
 | 
				
			||||||
    bool m_bypassGenericImpl;
 | 
					    bool m_bypassGenericImpl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
protected:
 | 
					protected:
 | 
				
			||||||
 | 
					    // update the state of m_upDirButton and m_newDirButton depending on the
 | 
				
			||||||
 | 
					    // currently selected directory
 | 
				
			||||||
 | 
					    void OnUpdateButtonsUI(wxUpdateUIEvent& event);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    wxString               m_filterExtension;
 | 
					    wxString               m_filterExtension;
 | 
				
			||||||
    wxGenericFileCtrl     *m_filectrl;
 | 
					    wxGenericFileCtrl     *m_filectrl;
 | 
				
			||||||
@@ -98,6 +99,7 @@ protected:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
    void Init();
 | 
					    void Init();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    DECLARE_DYNAMIC_CLASS(wxGenericFileDialog)
 | 
					    DECLARE_DYNAMIC_CLASS(wxGenericFileDialog)
 | 
				
			||||||
    DECLARE_EVENT_TABLE()
 | 
					    DECLARE_EVENT_TABLE()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -112,6 +112,11 @@ BEGIN_EVENT_TABLE(wxGenericFileDialog,wxDialog)
 | 
				
			|||||||
    EVT_BUTTON(ID_NEW_DIR, wxGenericFileDialog::OnNew)
 | 
					    EVT_BUTTON(ID_NEW_DIR, wxGenericFileDialog::OnNew)
 | 
				
			||||||
    EVT_BUTTON(wxID_OK, wxGenericFileDialog::OnOk)
 | 
					    EVT_BUTTON(wxID_OK, wxGenericFileDialog::OnOk)
 | 
				
			||||||
    EVT_FILECTRL_FILEACTIVATED(ID_FILE_CTRL, wxGenericFileDialog::OnFileActivated)
 | 
					    EVT_FILECTRL_FILEACTIVATED(ID_FILE_CTRL, wxGenericFileDialog::OnFileActivated)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    EVT_UPDATE_UI(ID_UP_DIR, wxGenericFileDialog::OnUpdateButtonsUI)
 | 
				
			||||||
 | 
					#if defined(__DOS__) || defined(__WINDOWS__) || defined(__OS2__)
 | 
				
			||||||
 | 
					    EVT_UPDATE_UI(ID_NEW_DIR, wxGenericFileDialog::OnUpdateButtonsUI)
 | 
				
			||||||
 | 
					#endif // defined(__DOS__) || defined(__WINDOWS__) || defined(__OS2__)
 | 
				
			||||||
END_EVENT_TABLE()
 | 
					END_EVENT_TABLE()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
long wxGenericFileDialog::ms_lastViewStyle = wxLC_LIST;
 | 
					long wxGenericFileDialog::ms_lastViewStyle = wxLC_LIST;
 | 
				
			||||||
@@ -328,7 +333,6 @@ wxGenericFileDialog::~wxGenericFileDialog()
 | 
				
			|||||||
int wxGenericFileDialog::ShowModal()
 | 
					int wxGenericFileDialog::ShowModal()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    m_filectrl->SetDirectory(m_dir);
 | 
					    m_filectrl->SetDirectory(m_dir);
 | 
				
			||||||
    UpdateControls();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return wxDialog::ShowModal();
 | 
					    return wxDialog::ShowModal();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -340,7 +344,6 @@ bool wxGenericFileDialog::Show( bool show )
 | 
				
			|||||||
    if (show)
 | 
					    if (show)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        m_filectrl->SetDirectory(m_dir);
 | 
					        m_filectrl->SetDirectory(m_dir);
 | 
				
			||||||
        UpdateControls();
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -391,14 +394,12 @@ void wxGenericFileDialog::OnUp( wxCommandEvent &WXUNUSED(event) )
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    m_filectrl->GoToParentDir();
 | 
					    m_filectrl->GoToParentDir();
 | 
				
			||||||
    m_filectrl->GetFileList()->SetFocus();
 | 
					    m_filectrl->GetFileList()->SetFocus();
 | 
				
			||||||
    UpdateControls();
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxGenericFileDialog::OnHome( wxCommandEvent &WXUNUSED(event) )
 | 
					void wxGenericFileDialog::OnHome( wxCommandEvent &WXUNUSED(event) )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    m_filectrl->GoToHomeDir();
 | 
					    m_filectrl->GoToHomeDir();
 | 
				
			||||||
    m_filectrl->SetFocus();
 | 
					    m_filectrl->SetFocus();
 | 
				
			||||||
    UpdateControls();
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxGenericFileDialog::OnNew( wxCommandEvent &WXUNUSED(event) )
 | 
					void wxGenericFileDialog::OnNew( wxCommandEvent &WXUNUSED(event) )
 | 
				
			||||||
@@ -430,14 +431,9 @@ void wxGenericFileDialog::GetFilenames(wxArrayString& files) const
 | 
				
			|||||||
    m_filectrl->GetFilenames(files);
 | 
					    m_filectrl->GetFilenames(files);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxGenericFileDialog::UpdateControls()
 | 
					void wxGenericFileDialog::OnUpdateButtonsUI(wxUpdateUIEvent& event)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    const bool enable = !IsTopMostDir(m_filectrl->GetDirectory());
 | 
					    event.Enable( !IsTopMostDir(m_filectrl->GetDirectory()) );
 | 
				
			||||||
    m_upDirButton->Enable(enable);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if defined(__DOS__) || defined(__WINDOWS__) || defined(__OS2__)
 | 
					 | 
				
			||||||
    m_newDirButton->Enable(enable);
 | 
					 | 
				
			||||||
#endif // defined(__DOS__) || defined(__WINDOWS__) || defined(__OS2__)
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef wxHAS_GENERIC_FILEDIALOG
 | 
					#ifdef wxHAS_GENERIC_FILEDIALOG
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user