X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a1c3cdc4a2c4cc2b15d7fdf60c1be228f9fbc520..9d5507f7a2701395e1d5c121bd877bb9066ee6ea:/src/html/htmlwin.cpp diff --git a/src/html/htmlwin.cpp b/src/html/htmlwin.cpp index 3311725dfc..c437f70709 100644 --- a/src/html/htmlwin.cpp +++ b/src/html/htmlwin.cpp @@ -15,7 +15,7 @@ #if wxUSE_HTML && wxUSE_STREAMS -#ifndef WXPRECOMP +#ifndef WX_PRECOMP #include "wx/list.h" #include "wx/log.h" #include "wx/intl.h" @@ -953,6 +953,7 @@ bool wxHtmlWindow::CopySelection(ClipboardType t) void wxHtmlWindow::OnLinkClicked(const wxHtmlLinkInfo& link) { wxHtmlLinkEvent event(GetId(), link); + event.SetEventObject(this); if (!GetEventHandler()->ProcessEvent(event)) { // the default behaviour is to load the URL in this window @@ -1135,9 +1136,10 @@ void wxHtmlWindow::OnMouseDown(wxMouseEvent& event) CaptureMouse(); } } -#else - wxUnusedVar(event); #endif // wxUSE_CLIPBOARD + + // in any case, let the default handler set focus to this window + event.Skip(); } void wxHtmlWindow::OnMouseUp(wxMouseEvent& event) @@ -1148,9 +1150,13 @@ void wxHtmlWindow::OnMouseUp(wxMouseEvent& event) ReleaseMouse(); m_makingSelection = false; - // did the user move the mouse far enough from starting point? - if ( CopySelection(Primary) ) + // if m_selection=NULL, the user didn't move the mouse far enough from + // starting point and the mouse up event is part of a click, the user + // is not selecting text: + if ( m_selection ) { + CopySelection(Primary); + // we don't want mouse up event that ended selecting to be // handled as mouse click and e.g. follow hyperlink: return; @@ -1158,8 +1164,6 @@ void wxHtmlWindow::OnMouseUp(wxMouseEvent& event) } #endif // wxUSE_CLIPBOARD - SetFocus(); - wxPoint pos = CalcUnscrolledPosition(event.GetPosition()); wxHtmlWindowMouseHelper::HandleMouseClick(m_Cell, pos, event); } @@ -1394,9 +1398,14 @@ void wxHtmlWindow::OnMouseLeave(wxMouseEvent& event) void wxHtmlWindow::OnKeyUp(wxKeyEvent& event) { - if ( IsSelectionEnabled() && event.GetKeyCode() == 'C' && event.CmdDown() ) + if ( IsSelectionEnabled() && + (event.GetKeyCode() == 'C' && event.CmdDown()) ) { - (void) CopySelection(); + wxClipboardTextEvent evt(wxEVT_COMMAND_TEXT_COPY, GetId()); + + evt.SetEventObject(this); + + GetEventHandler()->ProcessEvent(evt); } } @@ -1405,6 +1414,11 @@ void wxHtmlWindow::OnCopy(wxCommandEvent& WXUNUSED(event)) (void) CopySelection(); } +void wxHtmlWindow::OnClipboardEvent(wxClipboardTextEvent& WXUNUSED(event)) +{ + (void) CopySelection(); +} + void wxHtmlWindow::OnDoubleClick(wxMouseEvent& event) { // select word under cursor: @@ -1545,6 +1559,7 @@ BEGIN_EVENT_TABLE(wxHtmlWindow, wxScrolledWindow) EVT_MOUSE_CAPTURE_LOST(wxHtmlWindow::OnMouseCaptureLost) EVT_KEY_UP(wxHtmlWindow::OnKeyUp) EVT_MENU(wxID_COPY, wxHtmlWindow::OnCopy) + EVT_TEXT_COPY(wxID_ANY, wxHtmlWindow::OnClipboardEvent) #endif // wxUSE_CLIPBOARD END_EVENT_TABLE()