| Index: pdf/pdfium/pdfium_engine.cc
|
| diff --git a/pdf/pdfium/pdfium_engine.cc b/pdf/pdfium/pdfium_engine.cc
|
| index 08e869de6e40c95f10dd6b9a4b9d46ea3c83b558..d0796a5e4eca0a9a2515f452110d92f5ecea0aad 100644
|
| --- a/pdf/pdfium/pdfium_engine.cc
|
| +++ b/pdf/pdfium/pdfium_engine.cc
|
| @@ -1527,8 +1527,11 @@ bool PDFiumEngine::OnMouseDown(const pp::MouseInputEvent& event) {
|
| selection_.clear();
|
| return true;
|
| }
|
| - if (event.GetButton() != PP_INPUTEVENT_MOUSEBUTTON_LEFT)
|
| +
|
| + if (event.GetButton() != PP_INPUTEVENT_MOUSEBUTTON_LEFT &&
|
| + event.GetButton() != PP_INPUTEVENT_MOUSEBUTTON_MIDDLE) {
|
| return false;
|
| + }
|
|
|
| SelectionChangeInvalidator selection_invalidator(this);
|
| selection_.clear();
|
| @@ -1546,6 +1549,10 @@ bool PDFiumEngine::OnMouseDown(const pp::MouseInputEvent& event) {
|
| if (area == PDFiumPage::WEBLINK_AREA)
|
| return true;
|
|
|
| + // Prevent middle mouse button from selecting texts.
|
| + if (event.GetButton() == PP_INPUTEVENT_MOUSEBUTTON_MIDDLE)
|
| + return false;
|
| +
|
| if (area == PDFiumPage::DOCLINK_AREA) {
|
| client_->ScrollToPage(target.page);
|
| client_->FormTextFieldFocusChange(false);
|
| @@ -1620,8 +1627,11 @@ void PDFiumEngine::OnMultipleClick(int click_count,
|
| }
|
|
|
| bool PDFiumEngine::OnMouseUp(const pp::MouseInputEvent& event) {
|
| - if (event.GetButton() != PP_INPUTEVENT_MOUSEBUTTON_LEFT)
|
| +
|
| + if (event.GetButton() != PP_INPUTEVENT_MOUSEBUTTON_LEFT &&
|
| + event.GetButton() != PP_INPUTEVENT_MOUSEBUTTON_MIDDLE) {
|
| return false;
|
| + }
|
|
|
| int page_index = -1;
|
| int char_index = -1;
|
| @@ -1633,13 +1643,18 @@ bool PDFiumEngine::OnMouseUp(const pp::MouseInputEvent& event) {
|
| // Open link on mouse up for same link for which mouse down happened earlier.
|
| if (mouse_down_state_.Matches(area, target)) {
|
| if (area == PDFiumPage::WEBLINK_AREA) {
|
| - bool open_in_new_tab = !!(event.GetModifiers() & kDefaultKeyModifier);
|
| + bool open_in_new_tab = !!(event.GetModifiers() & kDefaultKeyModifier) ||
|
| + !!(event.GetModifiers() & PP_INPUTEVENT_MODIFIER_MIDDLEBUTTONDOWN);
|
| client_->NavigateTo(target.url, open_in_new_tab);
|
| client_->FormTextFieldFocusChange(false);
|
| return true;
|
| }
|
| }
|
|
|
| + // Prevent middle mouse button from selecting texts.
|
| + if (event.GetButton() == PP_INPUTEVENT_MOUSEBUTTON_MIDDLE)
|
| + return false;
|
| +
|
| if (page_index != -1) {
|
| double page_x, page_y;
|
| pp::Point point = event.GetPosition();
|
|
|