bool wxGenericHyperlinkCtrl::Create(wxWindow *parent, wxWindowID id, const wxString& label, const wxString& url, const wxPoint& pos, const wxSize& size, long style, const wxString& name) { // do validation checks: CheckParams(label, url, style); if ((style & wxHL_ALIGN_LEFT) == 0) style |= wxFULL_REPAINT_ON_RESIZE; if (!wxControl::Create(parent, id, pos, size, style, wxDefaultValidator, name)) return false; // set to non empty strings both the url and the label SetURL(url.empty() ? label : url); SetLabel(label.empty() ? url : label); Init(); SetForegroundColour(m_normalColour); // by default the font of an hyperlink control is underlined wxFont f = GetFont(); f.SetUnderlined(true); SetFont(f); SetInitialSize(size); // connect our event handlers: // NOTE: since this class is the base class of the GTK+'s native implementation // of wxHyperlinkCtrl, we cannot use the static macros in BEGIN/END_EVENT_TABLE // blocks, otherwise the GTK+'s native impl of wxHyperlinkCtrl would not // behave correctly (as we intercept events doing things which interfere // with GTK+'s native handling): Connect( wxEVT_PAINT, wxPaintEventHandler(wxGenericHyperlinkCtrl::OnPaint) ); Connect( wxEVT_SET_FOCUS, wxFocusEventHandler(wxGenericHyperlinkCtrl::OnFocus) ); Connect( wxEVT_KILL_FOCUS, wxFocusEventHandler(wxGenericHyperlinkCtrl::OnFocus) ); Connect( wxEVT_CHAR, wxKeyEventHandler(wxGenericHyperlinkCtrl::OnChar) ); Connect( wxEVT_LEAVE_WINDOW, wxMouseEventHandler(wxGenericHyperlinkCtrl::OnLeaveWindow) ); Connect( wxEVT_LEFT_DOWN, wxMouseEventHandler(wxGenericHyperlinkCtrl::OnLeftDown) ); Connect( wxEVT_LEFT_UP, wxMouseEventHandler(wxGenericHyperlinkCtrl::OnLeftUp) ); Connect( wxEVT_MOTION, wxMouseEventHandler(wxGenericHyperlinkCtrl::OnMotion) ); ConnectMenuHandlers(); return true; }
bool wxHyperlinkCtrl::Create(wxWindow *parent, wxWindowID id, const wxString& label, const wxString& url, const wxPoint& pos, const wxSize& size, long style, const wxString& name) { if ( !HasNativeHyperlinkCtrl() ) { return wxGenericHyperlinkCtrl::Create( parent, id, label, url, pos, size, style, name ); } if ( !CreateControl(parent, id, pos, size, style, wxDefaultValidator, name) ) { return false; } SetURL( url ); SetVisited( false ); WXDWORD exstyle; WXDWORD msStyle = MSWGetStyle(style, &exstyle); if ( !MSWCreateControl(WC_LINK, msStyle, pos, size, GetLabelForSysLink( label, url ), exstyle) ) { return false; } // Make sure both the label and URL are non-empty strings. SetURL(url.empty() ? label : url); SetLabel(label.empty() ? url : label); ConnectMenuHandlers(); return true; }