Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4171)

Unified Diff: chrome/browser/ui/views/tabs/tab_strip.cc

Issue 74133003: linux-aura: Restore middle-click on new-tab button behaviour. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/views/tabs/tab_strip.cc
diff --git a/chrome/browser/ui/views/tabs/tab_strip.cc b/chrome/browser/ui/views/tabs/tab_strip.cc
index 8a63d2bf7cb711bac84d85a4fb450ba93f695c90..17dd8b61d275a752c58d9688b55da8a4c722ebc4 100644
--- a/chrome/browser/ui/views/tabs/tab_strip.cc
+++ b/chrome/browser/ui/views/tabs/tab_strip.cc
@@ -239,6 +239,16 @@ int stacked_tab_right_clip() {
return value;
}
+base::string16 GetClipboardText() {
+ if (!ui::Clipboard::IsSupportedClipboardType(ui::CLIPBOARD_TYPE_SELECTION))
+ return base::string16();
+ ui::Clipboard* clipboard = ui::Clipboard::GetForCurrentThread();
+ CHECK(clipboard);
+ base::string16 clipboard_text;
+ clipboard->ReadText(ui::CLIPBOARD_TYPE_SELECTION, &clipboard_text);
+ return clipboard_text;
+}
+
// Animation delegate used when a dragged tab is released. When done sets the
// dragging state to false.
class ResetDraggingStateDelegate
@@ -346,6 +356,10 @@ NewTabButton::NewTabButton(TabStrip* tab_strip, views::ButtonListener* listener)
: views::ImageButton(listener),
tab_strip_(tab_strip),
destroyed_(NULL) {
+#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
+ set_triggerable_event_flags(triggerable_event_flags() |
+ ui::EF_MIDDLE_MOUSE_BUTTON);
+#endif
}
NewTabButton::~NewTabButton() {
@@ -1511,6 +1525,15 @@ void TabStrip::ButtonPressed(views::Button* sender, const ui::Event& event) {
content::RecordAction(UserMetricsAction("NewTab_Button"));
UMA_HISTOGRAM_ENUMERATION("Tab.NewTab", TabStripModel::NEW_TAB_BUTTON,
TabStripModel::NEW_TAB_ENUM_COUNT);
+ if (event.IsMouseEvent()) {
+ const ui::MouseEvent& mouse = static_cast<const ui::MouseEvent&>(event);
+ if (mouse.IsOnlyMiddleMouseButton()) {
+ base::string16 clipboard_text = GetClipboardText();
+ controller()->CreateNewTabWithLocation(clipboard_text);
Markus (顧孟勤) 2013/11/15 19:11:53 Should we check whether clipboard_text is empty?
sadrul 2013/11/15 19:57:21 Done.
+ return;
+ }
+ }
+
controller()->CreateNewTab();
if (event.type() == ui::ET_GESTURE_TAP)
TouchUMA::RecordGestureAction(TouchUMA::GESTURE_NEWTAB_TAP);
« no previous file with comments | « chrome/browser/ui/views/tabs/fake_base_tab_strip_controller.cc ('k') | chrome/browser/ui/views/tabs/tab_strip_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698