]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/hyperlinkg.cpp
Only use wxFORCE_LINK_MODULE() in mediaplayer sample in static build.
[wxWidgets.git] / src / generic / hyperlinkg.cpp
index 791b15b3576081e94a447308df5c29a86740caa9..fb8bc57ba1638395300d04d8ee076dea633c4832 100644 (file)
@@ -46,8 +46,6 @@
 // implementation
 // ============================================================================
 
-IMPLEMENT_DYNAMIC_CLASS(wxGenericHyperlinkCtrl, wxControl)
-
 // reserved for internal use only
 #define wxHYPERLINK_POPUP_COPY_ID           16384
 
@@ -72,14 +70,7 @@ bool wxGenericHyperlinkCtrl::Create(wxWindow *parent, wxWindowID id,
     SetURL(url.empty() ? label : url);
     SetLabel(label.empty() ? url : label);
 
-    m_rollover = false;
-    m_clicking = false;
-    m_visited = false;
-
-    // colours
-    m_normalColour = *wxBLUE;
-    m_hoverColour = *wxRED;
-    m_visitedColour = wxColour("#551a8b");
+    Init();
     SetForegroundColour(m_normalColour);
 
     // by default the font of an hyperlink control is underlined
@@ -102,26 +93,37 @@ bool wxGenericHyperlinkCtrl::Create(wxWindow *parent, wxWindowID id,
 
     Connect( wxEVT_LEFT_DOWN, wxMouseEventHandler(wxGenericHyperlinkCtrl::OnLeftDown) );
     Connect( wxEVT_LEFT_UP, wxMouseEventHandler(wxGenericHyperlinkCtrl::OnLeftUp) );
-    Connect( wxEVT_RIGHT_UP, wxMouseEventHandler(wxGenericHyperlinkCtrl::OnRightUp) );
     Connect( wxEVT_MOTION, wxMouseEventHandler(wxGenericHyperlinkCtrl::OnMotion) );
 
-    Connect( wxHYPERLINK_POPUP_COPY_ID, wxEVT_COMMAND_MENU_SELECTED,
-             wxCommandEventHandler(wxGenericHyperlinkCtrl::OnPopUpCopy) );
+    ConnectMenuHandlers();
 
     return true;
 }
 
-wxSize wxGenericHyperlinkCtrl::DoGetBestSize() const
+void wxGenericHyperlinkCtrl::Init()
+{
+    m_rollover = false;
+    m_clicking = false;
+    m_visited = false;
+
+    // colours
+    m_normalColour = *wxBLUE;
+    m_hoverColour = *wxRED;
+    m_visitedColour = wxColour("#551a8b");
+}
+
+void wxGenericHyperlinkCtrl::ConnectMenuHandlers()
 {
-    int w, h;
+    // Connect the event handlers for the context menu.
+    Connect( wxEVT_RIGHT_UP, wxMouseEventHandler(wxGenericHyperlinkCtrl::OnRightUp) );
+    Connect( wxHYPERLINK_POPUP_COPY_ID, wxEVT_COMMAND_MENU_SELECTED,
+             wxCommandEventHandler(wxGenericHyperlinkCtrl::OnPopUpCopy) );
+}
 
+wxSize wxGenericHyperlinkCtrl::DoGetBestClientSize() const
+{
     wxClientDC dc((wxWindow *)this);
-    dc.SetFont(GetFont());
-    dc.GetTextExtent(GetLabel(), &w, &h);
-
-    wxSize best(w, h);
-    CacheBestSize(best);
-    return best;
+    return dc.GetTextExtent(GetLabel());
 }