summaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authordavemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-29 21:41:27 +0000
committerdavemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-29 21:41:27 +0000
commited1a5949ce4c9bc81c56f525be9a522903660eb7 (patch)
treece8abcfae2a36567b23d71eba3effd17a2dbf80a /ui
parent87468954a430956b79da73f6975f2a94ca0681bc (diff)
downloadchromium_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.cc25
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) {