Chromium Code Reviews| 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); |