Add wxComboBox::Popup() and Dismiss() to manually show or hide its popup.
Add implementations for wxMSW and wxGTK. Closes #11506. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63242 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		@@ -53,6 +53,8 @@
 | 
			
		||||
enum
 | 
			
		||||
{
 | 
			
		||||
    ComboPage_Reset = wxID_HIGHEST,
 | 
			
		||||
    ComboPage_Popup,
 | 
			
		||||
    ComboPage_Dismiss,
 | 
			
		||||
    ComboPage_SetCurrent,
 | 
			
		||||
    ComboPage_CurText,
 | 
			
		||||
    ComboPage_InsertionPointText,
 | 
			
		||||
@@ -102,6 +104,8 @@ public:
 | 
			
		||||
protected:
 | 
			
		||||
    // event handlers
 | 
			
		||||
    void OnButtonReset(wxCommandEvent& event);
 | 
			
		||||
    void OnButtonPopup(wxCommandEvent&) { m_combobox->Popup(); }
 | 
			
		||||
    void OnButtonDismiss(wxCommandEvent&) { m_combobox->Dismiss(); }
 | 
			
		||||
    void OnButtonChange(wxCommandEvent& event);
 | 
			
		||||
    void OnButtonDelete(wxCommandEvent& event);
 | 
			
		||||
    void OnButtonDeleteSel(wxCommandEvent& event);
 | 
			
		||||
@@ -170,6 +174,8 @@ private:
 | 
			
		||||
 | 
			
		||||
BEGIN_EVENT_TABLE(ComboboxWidgetsPage, WidgetsPage)
 | 
			
		||||
    EVT_BUTTON(ComboPage_Reset, ComboboxWidgetsPage::OnButtonReset)
 | 
			
		||||
    EVT_BUTTON(ComboPage_Popup, ComboboxWidgetsPage::OnButtonPopup)
 | 
			
		||||
    EVT_BUTTON(ComboPage_Dismiss, ComboboxWidgetsPage::OnButtonDismiss)
 | 
			
		||||
    EVT_BUTTON(ComboPage_Change, ComboboxWidgetsPage::OnButtonChange)
 | 
			
		||||
    EVT_BUTTON(ComboPage_Delete, ComboboxWidgetsPage::OnButtonDelete)
 | 
			
		||||
    EVT_BUTTON(ComboPage_DeleteSel, ComboboxWidgetsPage::OnButtonDeleteSel)
 | 
			
		||||
@@ -246,8 +252,7 @@ void ComboboxWidgetsPage::CreateContent()
 | 
			
		||||
    */
 | 
			
		||||
    wxSizer *sizerTop = new wxBoxSizer(wxHORIZONTAL);
 | 
			
		||||
 | 
			
		||||
    // left pane
 | 
			
		||||
    wxStaticBox *box = new wxStaticBox(this, wxID_ANY, wxT("&Set style"));
 | 
			
		||||
    // upper left pane
 | 
			
		||||
 | 
			
		||||
    // should be in sync with ComboKind_XXX values
 | 
			
		||||
    static const wxString kinds[] =
 | 
			
		||||
@@ -262,18 +267,31 @@ void ComboboxWidgetsPage::CreateContent()
 | 
			
		||||
                                 WXSIZEOF(kinds), kinds,
 | 
			
		||||
                                 1, wxRA_SPECIFY_COLS);
 | 
			
		||||
 | 
			
		||||
    wxSizer *sizerLeft = new wxStaticBoxSizer(box, wxVERTICAL);
 | 
			
		||||
    wxSizer *sizerLeftTop = new wxStaticBoxSizer(wxVERTICAL, this, "&Set style");
 | 
			
		||||
 | 
			
		||||
    m_chkSort = CreateCheckBoxAndAddToSizer(sizerLeft, wxT("&Sort items"));
 | 
			
		||||
    m_chkReadonly = CreateCheckBoxAndAddToSizer(sizerLeft, wxT("&Read only"));
 | 
			
		||||
    m_chkFilename = CreateCheckBoxAndAddToSizer(sizerLeft, wxT("&File name"));
 | 
			
		||||
    m_chkSort = CreateCheckBoxAndAddToSizer(sizerLeftTop, wxT("&Sort items"));
 | 
			
		||||
    m_chkReadonly = CreateCheckBoxAndAddToSizer(sizerLeftTop, wxT("&Read only"));
 | 
			
		||||
    m_chkFilename = CreateCheckBoxAndAddToSizer(sizerLeftTop, wxT("&File name"));
 | 
			
		||||
    m_chkFilename->Disable(); // not implemented yet
 | 
			
		||||
 | 
			
		||||
    sizerLeft->Add(5, 5, 0, wxGROW | wxALL, 5); // spacer
 | 
			
		||||
    sizerLeft->Add(m_radioKind, 0, wxGROW | wxALL, 5);
 | 
			
		||||
    sizerLeftTop->Add(5, 5, 0, wxGROW | wxALL, 5); // spacer
 | 
			
		||||
    sizerLeftTop->Add(m_radioKind, 0, wxGROW | wxALL, 5);
 | 
			
		||||
 | 
			
		||||
    wxButton *btn = new wxButton(this, ComboPage_Reset, wxT("&Reset"));
 | 
			
		||||
    sizerLeft->Add(btn, 0, wxALIGN_CENTRE_HORIZONTAL | wxALL, 15);
 | 
			
		||||
    sizerLeftTop->Add(btn, 0, wxALIGN_CENTRE_HORIZONTAL | wxALL, 15);
 | 
			
		||||
 | 
			
		||||
    // lower left pane
 | 
			
		||||
    wxSizer *sizerLeftBottom = new wxStaticBoxSizer(wxVERTICAL, this, "&Popup");
 | 
			
		||||
    sizerLeftBottom->Add(new wxButton(this, ComboPage_Popup, "&Show"),
 | 
			
		||||
                         wxSizerFlags().Border().Centre());
 | 
			
		||||
    sizerLeftBottom->Add(new wxButton(this, ComboPage_Dismiss, "&Hide"),
 | 
			
		||||
                         wxSizerFlags().Border().Centre());
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    wxSizer *sizerLeft = new wxBoxSizer(wxVERTICAL);
 | 
			
		||||
    sizerLeft->Add(sizerLeftTop);
 | 
			
		||||
    sizerLeft->AddSpacer(10);
 | 
			
		||||
    sizerLeft->Add(sizerLeftBottom);
 | 
			
		||||
 | 
			
		||||
    // middle pane
 | 
			
		||||
    wxStaticBox *box2 = new wxStaticBox(this, wxID_ANY,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user