diff options
author | davemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-29 21:41:27 +0000 |
---|---|---|
committer | davemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-29 21:41:27 +0000 |
commit | ed1a5949ce4c9bc81c56f525be9a522903660eb7 (patch) | |
tree | ce8abcfae2a36567b23d71eba3effd17a2dbf80a /ui | |
parent | 87468954a430956b79da73f6975f2a94ca0681bc (diff) | |
download | chromium_src-ed1a5949ce4c9bc81c56f525be9a522903660eb7.zip chromium_src-ed1a5949ce4c9bc81c56f525be9a522903660eb7.tar.gz chromium_src-ed1a5949ce4c9bc81c56f525be9a522903660eb7.tar.bz2 |
Enable Alt-Click -> Right-Click
BUG=115244
TEST=None
Review URL: https://chromiumcodereview.appspot.com/9515008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@124257 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui')
-rw-r--r-- | ui/base/x/events_x.cc | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/ui/base/x/events_x.cc b/ui/base/x/events_x.cc index 23ebd51..572c8d3 100644 --- a/ui/base/x/events_x.cc +++ b/ui/base/x/events_x.cc @@ -303,6 +303,23 @@ int GetEventFlagsForButton(int button) { } } +void DetectAltClick(XIDeviceEvent* xievent) { + if ((xievent->evtype == XI_ButtonPress || + xievent->evtype == XI_ButtonRelease) && + (xievent->mods.effective & Mod1Mask) && + xievent->detail == 1) { + xievent->mods.effective &= ~Mod1Mask; + xievent->detail = 3; + if (xievent->evtype == XI_ButtonRelease) { + // On the release clear the left button from the existing state and the + // mods, and set the right button. + XISetMask(xievent->buttons.mask, 3); + XIClearMask(xievent->buttons.mask, 1); + xievent->mods.effective &= ~Button1Mask; + } + } +} + int GetButtonMaskForX2Event(XIDeviceEvent* xievent) { int buttonflags = 0; for (int i = 0; i < 8 * xievent->buttons.mask_len; i++) { @@ -428,6 +445,10 @@ EventType EventTypeFromNative(const base::NativeEvent& native_event) { case GenericEvent: { XIDeviceEvent* xievent = static_cast<XIDeviceEvent*>(native_event->xcookie.data); + + // Map Alt+Button1 to Button3 + DetectAltClick(xievent); + if (TouchFactory::GetInstance()->IsTouchDevice(xievent->sourceid)) return GetTouchEventType(native_event); switch (xievent->evtype) { @@ -474,6 +495,10 @@ int EventFlagsFromNative(const base::NativeEvent& native_event) { case GenericEvent: { XIDeviceEvent* xievent = static_cast<XIDeviceEvent*>(native_event->xcookie.data); + + // Map Alt+Button1 to Button3. + DetectAltClick(xievent); + const bool touch = TouchFactory::GetInstance()->IsTouchDevice(xievent->sourceid); switch (xievent->evtype) { |