Generic wxHyperlinkCtrl appearance and behaviour improvements.
Show focus rectangle around the control when it has focus. Also handle the space key to trigger the link. Also allow using either the native or generic version of the class in the widgets sample. Closes #11285. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67948 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -93,6 +93,7 @@ protected:
|
||||
|
||||
void OnButtonReset(wxCommandEvent& event);
|
||||
void OnAlignment(wxCommandEvent& event);
|
||||
void OnGeneric(wxCommandEvent& event);
|
||||
|
||||
// reset the control parameters
|
||||
void Reset();
|
||||
@@ -105,8 +106,8 @@ protected:
|
||||
// ------------
|
||||
|
||||
// the checkbox itself and the sizer it is in
|
||||
wxHyperlinkCtrl *m_hyperlink;
|
||||
wxHyperlinkCtrl *m_hyperlinkLong;
|
||||
wxGenericHyperlinkCtrl *m_hyperlink;
|
||||
wxGenericHyperlinkCtrl *m_hyperlinkLong;
|
||||
|
||||
wxTextCtrl *m_label;
|
||||
wxTextCtrl *m_url;
|
||||
@@ -118,6 +119,7 @@ protected:
|
||||
wxTextCtrl *m_textLabel;
|
||||
|
||||
wxRadioBox *m_radioAlignMode;
|
||||
wxCheckBox *m_checkGeneric;
|
||||
|
||||
private:
|
||||
DECLARE_EVENT_TABLE()
|
||||
@@ -134,6 +136,7 @@ BEGIN_EVENT_TABLE(HyperlinkWidgetsPage, WidgetsPage)
|
||||
EVT_BUTTON(HyperlinkPage_SetURL, HyperlinkWidgetsPage::OnButtonSetURL)
|
||||
|
||||
EVT_RADIOBOX(wxID_ANY, HyperlinkWidgetsPage::OnAlignment)
|
||||
EVT_CHECKBOX(wxID_ANY, HyperlinkWidgetsPage::OnGeneric)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
// ============================================================================
|
||||
@@ -181,7 +184,9 @@ void HyperlinkWidgetsPage::CreateContent()
|
||||
// wxHL_DEFAULT_STYLE contains wxHL_ALIGN_CENTRE
|
||||
sizerLeft->Add(m_radioAlignMode, 0, wxALL|wxGROW, 5);
|
||||
|
||||
|
||||
m_checkGeneric = new wxCheckBox(this, wxID_ANY, wxT("Use generic version"),
|
||||
wxDefaultPosition, wxDefaultSize);
|
||||
sizerLeft->Add(m_checkGeneric, 0, wxALL|wxGROW, 5);
|
||||
|
||||
// right pane
|
||||
wxSizer *szHyperlinkLong = new wxBoxSizer(wxVERTICAL);
|
||||
@@ -189,10 +194,20 @@ void HyperlinkWidgetsPage::CreateContent()
|
||||
|
||||
m_visit = new wxStaticText(this, wxID_ANY, wxT("Visit "));
|
||||
|
||||
m_hyperlink = new wxHyperlinkCtrl(this,
|
||||
HyperlinkPage_Ctrl,
|
||||
wxT("wxWidgets website"),
|
||||
wxT("www.wxwidgets.org"));
|
||||
if (m_checkGeneric->IsChecked())
|
||||
{
|
||||
m_hyperlink = new wxGenericHyperlinkCtrl(this,
|
||||
HyperlinkPage_Ctrl,
|
||||
wxT("wxWidgets website"),
|
||||
wxT("www.wxwidgets.org"));
|
||||
}
|
||||
else
|
||||
{
|
||||
m_hyperlink = new wxHyperlinkCtrl(this,
|
||||
HyperlinkPage_Ctrl,
|
||||
wxT("wxWidgets website"),
|
||||
wxT("www.wxwidgets.org"));
|
||||
}
|
||||
|
||||
m_fun = new wxStaticText(this, wxID_ANY, wxT(" for fun!"));
|
||||
|
||||
@@ -203,10 +218,20 @@ void HyperlinkWidgetsPage::CreateContent()
|
||||
szHyperlink->Add(0, 0, 1, wxCENTRE);
|
||||
szHyperlink->SetMinSize(150, 0);
|
||||
|
||||
m_hyperlinkLong = new wxHyperlinkCtrl(this,
|
||||
wxID_ANY,
|
||||
wxT("This is a long hyperlink"),
|
||||
wxT("www.wxwidgets.org"));
|
||||
if (m_checkGeneric->IsChecked())
|
||||
{
|
||||
m_hyperlinkLong = new wxGenericHyperlinkCtrl(this,
|
||||
wxID_ANY,
|
||||
wxT("This is a long hyperlink"),
|
||||
wxT("www.wxwidgets.org"));
|
||||
}
|
||||
else
|
||||
{
|
||||
m_hyperlinkLong = new wxHyperlinkCtrl(this,
|
||||
wxID_ANY,
|
||||
wxT("This is a long hyperlink"),
|
||||
wxT("www.wxwidgets.org"));
|
||||
}
|
||||
|
||||
szHyperlinkLong->Add(0, 0, 1, wxCENTRE);
|
||||
szHyperlinkLong->Add(szHyperlink, 0, wxCENTRE|wxGROW);
|
||||
@@ -236,10 +261,21 @@ void HyperlinkWidgetsPage::CreateHyperlink()
|
||||
const wxString label = m_hyperlink->GetLabel();
|
||||
const wxString url = m_hyperlink->GetURL();
|
||||
|
||||
wxHyperlinkCtrl *hyp = new wxHyperlinkCtrl(this,
|
||||
HyperlinkPage_Ctrl,
|
||||
label,
|
||||
url);
|
||||
wxGenericHyperlinkCtrl *hyp;
|
||||
if (m_checkGeneric->IsChecked())
|
||||
{
|
||||
hyp = new wxGenericHyperlinkCtrl(this,
|
||||
HyperlinkPage_Ctrl,
|
||||
label,
|
||||
url);
|
||||
}
|
||||
else
|
||||
{
|
||||
hyp = new wxHyperlinkCtrl(this,
|
||||
HyperlinkPage_Ctrl,
|
||||
label,
|
||||
url);
|
||||
}
|
||||
|
||||
// update sizer's child window
|
||||
GetSizer()->Replace(m_hyperlink, hyp, true);
|
||||
@@ -255,13 +291,28 @@ void HyperlinkWidgetsPage::CreateHyperlink()
|
||||
void HyperlinkWidgetsPage::CreateHyperlinkLong(long style)
|
||||
{
|
||||
style = (wxHL_DEFAULT_STYLE & ~wxHL_ALIGN_CENTRE)|style;
|
||||
wxHyperlinkCtrl *hyp = new wxHyperlinkCtrl(this,
|
||||
wxID_ANY,
|
||||
wxT("This is a long hyperlink"),
|
||||
wxT("www.wxwidgets.org"),
|
||||
wxDefaultPosition,
|
||||
wxDefaultSize,
|
||||
style);
|
||||
|
||||
wxGenericHyperlinkCtrl *hyp;
|
||||
if (m_checkGeneric->IsChecked())
|
||||
{
|
||||
hyp = new wxGenericHyperlinkCtrl(this,
|
||||
wxID_ANY,
|
||||
wxT("This is a long hyperlink"),
|
||||
wxT("www.wxwidgets.org"),
|
||||
wxDefaultPosition,
|
||||
wxDefaultSize,
|
||||
style);
|
||||
}
|
||||
else
|
||||
{
|
||||
hyp = new wxHyperlinkCtrl(this,
|
||||
wxID_ANY,
|
||||
wxT("This is a long hyperlink"),
|
||||
wxT("www.wxwidgets.org"),
|
||||
wxDefaultPosition,
|
||||
wxDefaultSize,
|
||||
style);
|
||||
}
|
||||
|
||||
// update sizer's child window
|
||||
GetSizer()->Replace(m_hyperlinkLong, hyp, true);
|
||||
@@ -323,4 +374,10 @@ void HyperlinkWidgetsPage::OnAlignment(wxCommandEvent& WXUNUSED(event))
|
||||
CreateHyperlinkLong(addstyle);
|
||||
}
|
||||
|
||||
void HyperlinkWidgetsPage::OnGeneric(wxCommandEvent& event)
|
||||
{
|
||||
CreateHyperlink();
|
||||
OnAlignment(event);
|
||||
}
|
||||
|
||||
#endif // wxUSE_HYPERLINKCTRL
|
||||
|
Reference in New Issue
Block a user