From 5713e56f49c7897050ae60affa5701c11b23aeab Mon Sep 17 00:00:00 2001 From: "stevenjb@google.com" Date: Mon, 14 Feb 2011 23:52:47 +0000 Subject: Control-click on an app opens it in a new tab, like clicking a link. Middle-click does the same. Note that some apps default to opening in a new tab. Also consolidated code to compute window disposition from a click for GTK, Views and DOM UI. BUG=chromium-os:7555 TEST=Install an app that normally loads in the same tab as the new tab page, like Notepad: https://chrome.google.com/webstore/detail/imflbkfmiojnkhopijhajoodloaklbln?hl=en-US# * Click on Notepad. Verify it launches in same tab * Control-click on it. Verify opens in new tab * Middle-click on it. Verify opens in new tab * Right-click, select "Notepad" from menu. Verify launches in same tab * Right-click, set Notepad to launch in new window. Control-click on Notepad. Verify it launches in a new window, and the new tab page is still open. * Also try loading a normal web page, then control-clicking on links, control-shift-clicking on links, and shift-clicking on links. Verify behavior matches last release. Review URL: http://codereview.chromium.org/6293024 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@74877 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/browser/ui/views/event_utils.cc | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) (limited to 'chrome/browser/ui/views/event_utils.cc') diff --git a/chrome/browser/ui/views/event_utils.cc b/chrome/browser/ui/views/event_utils.cc index 8c59c51..6e13947 100644 --- a/chrome/browser/ui/views/event_utils.cc +++ b/chrome/browser/ui/views/event_utils.cc @@ -4,6 +4,7 @@ #include "chrome/browser/ui/views/event_utils.h" +#include "chrome/browser/disposition_utils.h" #include "views/events/event.h" using views::Event; @@ -11,17 +12,12 @@ using views::Event; namespace event_utils { WindowOpenDisposition DispositionFromEventFlags(int event_flags) { - if (((event_flags & ui::EF_MIDDLE_BUTTON_DOWN) == - ui::EF_MIDDLE_BUTTON_DOWN) || - ((event_flags & ui::EF_CONTROL_DOWN) == - ui::EF_CONTROL_DOWN)) { - return ((event_flags & ui::EF_SHIFT_DOWN) == ui::EF_SHIFT_DOWN) ? - NEW_FOREGROUND_TAB : NEW_BACKGROUND_TAB; - } - - if ((event_flags & ui::EF_SHIFT_DOWN) == ui::EF_SHIFT_DOWN) - return NEW_WINDOW; - return false /*event.IsAltDown()*/ ? SAVE_TO_DISK : CURRENT_TAB; + return disposition_utils::DispositionFromClick( + (event_flags & ui::EF_MIDDLE_BUTTON_DOWN) != 0, + (event_flags & ui::EF_ALT_DOWN) != 0, + (event_flags & ui::EF_CONTROL_DOWN) != 0, + false /* meta_key */, + (event_flags & ui::EF_SHIFT_DOWN) != 0); } bool IsPossibleDispositionEvent(const views::MouseEvent& event) { -- cgit v1.1