X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/eeb029a9659087cae783a9d8eef2c47a8d54cc2d..939fadc8aab8cc85906685ed6cdcb46d28f27903:/src/html/htmlwin.cpp diff --git a/src/html/htmlwin.cpp b/src/html/htmlwin.cpp index 03890efadb..08e3966044 100644 --- a/src/html/htmlwin.cpp +++ b/src/html/htmlwin.cpp @@ -622,11 +622,21 @@ void wxHtmlWindow::AddFilter(wxHtmlFilter *filter) } +bool wxHtmlWindow::IsSelectionEnabled() const +{ +#if wxUSE_CLIPBOARD + return !(m_Style & wxHW_NO_SELECTION); +#else + return false; +#endif +} void wxHtmlWindow::OnLinkClicked(const wxHtmlLinkInfo& link) { - LoadPage(link.GetHref()); + const wxMouseEvent *e = link.GetEvent(); + if (e == NULL || e->LeftUp()) + LoadPage(link.GetHref()); } void wxHtmlWindow::OnCellClicked(wxHtmlCell *cell, @@ -655,9 +665,11 @@ void wxHtmlWindow::OnDraw(wxDC& dc) dc.SetBackgroundMode(wxTRANSPARENT); GetViewStart(&x, &y); + wxHtmlRenderingState rstate(NULL); m_Cell->Draw(dc, 0, 0, y * wxHTML_SCROLL_STEP + rect.GetTop(), - y * wxHTML_SCROLL_STEP + rect.GetBottom()); + y * wxHTML_SCROLL_STEP + rect.GetBottom(), + rstate); } @@ -671,32 +683,32 @@ void wxHtmlWindow::OnSize(wxSizeEvent& event) } -void wxHtmlWindow::OnMouseEvent(wxMouseEvent& event) +void wxHtmlWindow::OnMouseMove(wxMouseEvent& event) { - m_tmpMouseMoved = TRUE; + m_tmpMouseMoved = true; +} - if (event.ButtonDown()) +void wxHtmlWindow::OnMouseButton(wxMouseEvent& event) +{ + SetFocus(); + if ( m_Cell ) { - SetFocus(); - if ( m_Cell ) - { - int sx, sy; - GetViewStart(&sx, &sy); - sx *= wxHTML_SCROLL_STEP; - sy *= wxHTML_SCROLL_STEP; + int sx, sy; + GetViewStart(&sx, &sy); + sx *= wxHTML_SCROLL_STEP; + sy *= wxHTML_SCROLL_STEP; - wxPoint pos = event.GetPosition(); - pos.x += sx; - pos.y += sy; + wxPoint pos = event.GetPosition(); + pos.x += sx; + pos.y += sy; - wxHtmlCell *cell = m_Cell->FindCellByPos(pos.x, pos.y); + wxHtmlCell *cell = m_Cell->FindCellByPos(pos.x, pos.y); - // VZ: is it possible that we don't find anything at all? - // VS: yes. FindCellByPos returns terminal cell and - // containers may have empty borders - if ( cell ) - OnCellClicked(cell, pos.x, pos.y, event); - } + // VZ: is it possible that we don't find anything at all? + // VS: yes. FindCellByPos returns terminal cell and + // containers may have empty borders + if ( cell ) + OnCellClicked(cell, pos.x, pos.y, event); } } @@ -764,9 +776,9 @@ IMPLEMENT_DYNAMIC_CLASS(wxHtmlWindow,wxScrolledWindow) BEGIN_EVENT_TABLE(wxHtmlWindow, wxScrolledWindow) EVT_SIZE(wxHtmlWindow::OnSize) - EVT_LEFT_DOWN(wxHtmlWindow::OnMouseEvent) - EVT_RIGHT_DOWN(wxHtmlWindow::OnMouseEvent) - EVT_MOTION(wxHtmlWindow::OnMouseEvent) + EVT_LEFT_UP(wxHtmlWindow::OnMouseButton) + EVT_RIGHT_UP(wxHtmlWindow::OnMouseButton) + EVT_MOTION(wxHtmlWindow::OnMouseMove) EVT_IDLE(wxHtmlWindow::OnIdle) END_EVENT_TABLE()