summaryrefslogtreecommitdiffstats
path: root/views/events
diff options
context:
space:
mode:
authormsw@chromium.org <msw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-31 20:38:03 +0000
committermsw@chromium.org <msw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-31 20:38:03 +0000
commit66e5af67ff42c6db608aad2bc87393c468c8a642 (patch)
tree7ba907d99e1c86e0680ef8e4282cc9973a2d36bd /views/events
parent5332b834259dbab2ebbefba1944824df469139d4 (diff)
downloadchromium_src-66e5af67ff42c6db608aad2bc87393c468c8a642.zip
chromium_src-66e5af67ff42c6db608aad2bc87393c468c8a642.tar.gz
chromium_src-66e5af67ff42c6db608aad2bc87393c468c8a642.tar.bz2
Consolidate Widget Event code, other cleanup.
Rename *NativeCapture to *MouseCapture. Rename and move ShouldReleaseCaptureOnMouseReleased. Move static flag function to Event. BUG=72040 TEST=Mouse interaction on win & linux_views. Review URL: http://codereview.chromium.org/6756043 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@80065 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views/events')
-rw-r--r--views/events/event.h4
-rw-r--r--views/events/event_gtk.cc49
2 files changed, 33 insertions, 20 deletions
diff --git a/views/events/event.h b/views/events/event.h
index 15e320d..ef5f256 100644
--- a/views/events/event.h
+++ b/views/events/event.h
@@ -84,8 +84,8 @@ class Event {
// Returns the EventFlags in terms of windows flags.
int GetWindowsFlags() const;
#elif defined(OS_LINUX)
- // Convert the state member on a GdkEvent to views::Event flags
- static int GetFlagsFromGdkState(unsigned int state);
+ // Get the views::Event flags from a native GdkEvent.
+ static int GetFlagsFromGdkEvent(NativeEvent native_event);
#endif
protected:
diff --git a/views/events/event_gtk.cc b/views/events/event_gtk.cc
index 8c62a76..7e2d1e0 100644
--- a/views/events/event_gtk.cc
+++ b/views/events/event_gtk.cc
@@ -77,6 +77,18 @@ unsigned int GetGdkStateFromNative(NativeEvent native_event) {
return 0;
}
+int GetFlagsFromGdkState(unsigned int state) {
+ int flags = 0;
+ flags |= (state & GDK_LOCK_MASK) ? ui::EF_CAPS_LOCK_DOWN : 0;
+ flags |= (state & GDK_CONTROL_MASK) ? ui::EF_CONTROL_DOWN : 0;
+ flags |= (state & GDK_SHIFT_MASK) ? ui::EF_SHIFT_DOWN : 0;
+ flags |= (state & GDK_MOD1_MASK) ? ui::EF_ALT_DOWN : 0;
+ flags |= (state & GDK_BUTTON1_MASK) ? ui::EF_LEFT_BUTTON_DOWN : 0;
+ flags |= (state & GDK_BUTTON2_MASK) ? ui::EF_MIDDLE_BUTTON_DOWN : 0;
+ flags |= (state & GDK_BUTTON3_MASK) ? ui::EF_RIGHT_BUTTON_DOWN : 0;
+ return flags;
+}
+
#if !defined(TOUCH_UI)
uint16 GetCharacterFromGdkKeyval(guint keyval) {
guint32 ch = gdk_keyval_to_unicode(keyval);
@@ -92,22 +104,23 @@ uint16 GetCharacterFromGdkKeyval(guint keyval) {
// Event, public:
// static
-int Event::GetFlagsFromGdkState(unsigned int state) {
- int flags = 0;
- if (state & GDK_LOCK_MASK)
- flags |= ui::EF_CAPS_LOCK_DOWN;
- if (state & GDK_CONTROL_MASK)
- flags |= ui::EF_CONTROL_DOWN;
- if (state & GDK_SHIFT_MASK)
- flags |= ui::EF_SHIFT_DOWN;
- if (state & GDK_MOD1_MASK)
- flags |= ui::EF_ALT_DOWN;
- if (state & GDK_BUTTON1_MASK)
- flags |= ui::EF_LEFT_BUTTON_DOWN;
- if (state & GDK_BUTTON2_MASK)
- flags |= ui::EF_MIDDLE_BUTTON_DOWN;
- if (state & GDK_BUTTON3_MASK)
- flags |= ui::EF_RIGHT_BUTTON_DOWN;
+int Event::GetFlagsFromGdkEvent(NativeEvent native_event) {
+ int flags = GetFlagsFromGdkState(GetGdkStateFromNative(native_event));
+ if (native_event->type == GDK_2BUTTON_PRESS)
+ flags |= ui::EF_IS_DOUBLE_CLICK;
+ if (native_event->type == GDK_BUTTON_PRESS ||
+ native_event->type == GDK_2BUTTON_PRESS ||
+ native_event->type == GDK_3BUTTON_PRESS ||
+ native_event->type == GDK_BUTTON_RELEASE) {
+ switch (native_event->button.button) {
+ case 1:
+ return flags | ui::EF_LEFT_BUTTON_DOWN;
+ case 2:
+ return flags | ui::EF_MIDDLE_BUTTON_DOWN;
+ case 3:
+ return flags | ui::EF_RIGHT_BUTTON_DOWN;
+ }
+ }
return flags;
}
@@ -140,7 +153,7 @@ void Event::InitWithNativeEvent2(NativeEvent2 native_event_2,
LocatedEvent::LocatedEvent(NativeEvent native_event)
: Event(native_event, EventTypeFromNative(native_event),
- GetFlagsFromGdkState(GetGdkStateFromNative(native_event))),
+ GetFlagsFromGdkEvent(native_event)),
location_(GetMouseEventLocation(native_event)) {
}
@@ -176,7 +189,7 @@ MouseEvent::MouseEvent(NativeEvent2 native_event_2,
KeyEvent::KeyEvent(NativeEvent native_event)
: Event(native_event, EventTypeFromNative(native_event),
- GetFlagsFromGdkState(GetGdkStateFromNative(native_event))),
+ GetFlagsFromGdkEvent(native_event)),
key_code_(ui::KeyboardCodeFromGdkEventKey(
GetGdkEventKeyFromNative(native_event))) {
}