Files
helium/patches/contrib/ungoogled-chromium/enable-paste-and-go-new-tab-button.patch

45 lines
1.9 KiB
C++

--- a/chrome/browser/ui/views/frame/tab_strip_region_view.cc
+++ b/chrome/browser/ui/views/frame/tab_strip_region_view.cc
@@ -301,6 +301,9 @@ TabStripRegionView::TabStripRegionView(s
l10n_util::GetStringUTF16(IDS_TOOLTIP_NEW_TAB));
new_tab_button_->GetViewAccessibility().SetName(
l10n_util::GetStringUTF16(IDS_ACCNAME_NEWTAB));
+ new_tab_button_->SetTriggerableEventFlags(
+ new_tab_button_->GetTriggerableEventFlags() |
+ ui::EF_MIDDLE_MOUSE_BUTTON);
}
reserved_grab_handle_space_ =
--- a/chrome/browser/ui/views/tabs/tab_strip.cc
+++ b/chrome/browser/ui/views/tabs/tab_strip.cc
@@ -83,6 +83,8 @@
#include "components/tab_groups/tab_group_id.h"
#include "components/tab_groups/tab_group_visual_data.h"
#include "components/tabs/public/split_tab_id.h"
+#include "ui/base/clipboard/clipboard.h"
+#include "ui/base/clipboard/clipboard_constants.h"
#include "ui/base/dragdrop/drag_drop_types.h"
#include "ui/base/dragdrop/mojom/drag_drop_types.mojom.h"
#include "ui/base/interaction/element_identifier.h"
@@ -2255,6 +2257,20 @@ void TabStrip::NewTabButtonPressed(const
if (hover_card_controller_) {
hover_card_controller_->PreventImmediateReshow();
}
+ const ui::MouseEvent& mouse = static_cast<const ui::MouseEvent&>(event);
+ if (mouse.IsOnlyMiddleMouseButton()) {
+ ui::Clipboard* clipboard = ui::Clipboard::GetForCurrentThread();
+ CHECK(clipboard)
+ << "Clipboard instance is not available, cannot proceed with "
+ "middle mouse button action.";
+ std::u16string clipboard_text;
+ clipboard->ReadText(ui::ClipboardBuffer::kSelection,
+ /* data_dst = */ nullptr, &clipboard_text);
+ if (!clipboard_text.empty()) {
+ controller_->CreateNewTabWithLocation(clipboard_text);
+ }
+ return;
+ }
}
controller_->CreateNewTab(NewTabTypes::NEW_TAB_BUTTON);
}