X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b815cf68d24508ab76ace1ef439a6d4feffbd487..789ab84044b35b6162c7110adfa54c91e182e909:/src/generic/hyperlinkg.cpp diff --git a/src/generic/hyperlinkg.cpp b/src/generic/hyperlinkg.cpp index fb8bc57ba1..e64480d762 100644 --- a/src/generic/hyperlinkg.cpp +++ b/src/generic/hyperlinkg.cpp @@ -41,6 +41,7 @@ #endif #include "wx/clipbrd.h" +#include "wx/renderer.h" // ============================================================================ // implementation @@ -89,6 +90,9 @@ bool wxGenericHyperlinkCtrl::Create(wxWindow *parent, wxWindowID id, // 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) ); @@ -116,7 +120,7 @@ void wxGenericHyperlinkCtrl::ConnectMenuHandlers() { // Connect the event handlers for the context menu. Connect( wxEVT_RIGHT_UP, wxMouseEventHandler(wxGenericHyperlinkCtrl::OnRightUp) ); - Connect( wxHYPERLINK_POPUP_COPY_ID, wxEVT_COMMAND_MENU_SELECTED, + Connect( wxHYPERLINK_POPUP_COPY_ID, wxEVT_MENU, wxCommandEventHandler(wxGenericHyperlinkCtrl::OnPopUpCopy) ); } @@ -187,6 +191,32 @@ void wxGenericHyperlinkCtrl::OnPaint(wxPaintEvent& WXUNUSED(event)) dc.SetTextBackground(GetBackgroundColour()); dc.DrawText(GetLabel(), GetLabelRect().GetTopLeft()); + if (HasFocus()) + { + wxRendererNative::Get().DrawFocusRect(this, dc, GetClientRect(), wxCONTROL_SELECTED); + } +} + +void wxGenericHyperlinkCtrl::OnFocus(wxFocusEvent& event) +{ + Refresh(); + event.Skip(); +} + +void wxGenericHyperlinkCtrl::OnChar(wxKeyEvent& event) +{ + switch (event.m_keyCode) + { + default: + event.Skip(); + break; + case WXK_SPACE: + case WXK_NUMPAD_SPACE: + SetForegroundColour(m_visitedColour); + m_visited = true; + SendEvent(); + break; + } } void wxGenericHyperlinkCtrl::OnLeftDown(wxMouseEvent& event)