diff options
author | msw@chromium.org <msw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-31 20:38:03 +0000 |
---|---|---|
committer | msw@chromium.org <msw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-31 20:38:03 +0000 |
commit | 66e5af67ff42c6db608aad2bc87393c468c8a642 (patch) | |
tree | 7ba907d99e1c86e0680ef8e4282cc9973a2d36bd /views/events | |
parent | 5332b834259dbab2ebbefba1944824df469139d4 (diff) | |
download | chromium_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.h | 4 | ||||
-rw-r--r-- | views/events/event_gtk.cc | 49 |
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))) { } |