Index: ui/views/events/event_win.cc |
diff --git a/ui/views/events/event_win.cc b/ui/views/events/event_win.cc |
index b0eb456ee93e7aeb7abe1011483522ea1d3ae9af..9259a54cc22e6b7678ee41be26dd9d92609c9e52 100644 |
--- a/ui/views/events/event_win.cc |
+++ b/ui/views/events/event_win.cc |
@@ -18,12 +18,9 @@ namespace { |
// as with mouse messages, so we need to explicitly ask for these states. |
int GetKeyStateFlags() { |
int flags = 0; |
- if (GetKeyState(VK_MENU) & 0x80) |
- flags |= ui::Event::EF_ALT_DOWN; |
- if (GetKeyState(VK_SHIFT) & 0x80) |
- flags |= ui::Event::EF_SHIFT_DOWN; |
- if (GetKeyState(VK_CONTROL) & 0x80) |
- flags |= ui::Event::EF_CONTROL_DOWN; |
+ flags |= (GetKeyState(VK_MENU) & 0x80)? ui::EF_ALT_DOWN : 0; |
+ flags |= (GetKeyState(VK_SHIFT) & 0x80)? ui::EF_SHIFT_DOWN : 0; |
+ flags |= (GetKeyState(VK_CONTROL) & 0x80)? ui::EF_CONTROL_DOWN : 0; |
return flags; |
} |
@@ -32,6 +29,7 @@ ui::Event::EventType EventTypeFromNative(NativeEvent native_event) { |
switch (native_event.message) { |
case WM_KEYDOWN: |
case WM_SYSKEYDOWN: |
+ case WM_CHAR: |
return ui::Event::ET_KEY_PRESSED; |
case WM_KEYUP: |
case WM_SYSKEYUP: |
@@ -72,22 +70,22 @@ ui::Event::EventType EventTypeFromNative(NativeEvent native_event) { |
bool IsClientMouseEvent(NativeEvent native_event) { |
return native_event.message == WM_MOUSELEAVE || |
+ native_event.message == WM_MOUSEHOVER || |
(native_event.message >= WM_MOUSEFIRST && |
native_event.message <= WM_MOUSELAST); |
} |
bool IsNonClientMouseEvent(NativeEvent native_event) { |
return native_event.message == WM_NCMOUSELEAVE || |
+ native_event.message == WM_NCMOUSEHOVER || |
(native_event.message >= WM_NCMOUSEMOVE && |
- native_event.message <= WM_NCMBUTTONDBLCLK); |
+ native_event.message <= WM_NCXBUTTONDBLCLK); |
} |
gfx::Point MousePositionFromNative(NativeEvent native_event) { |
- if (IsClientMouseEvent(native_event)) { |
- // Client message. The position is contained in the LPARAM. |
- return gfx::Point(GET_X_LPARAM(native_event.lParam), |
- GET_Y_LPARAM(native_event.lParam)); |
- } |
+ // Client message. The position is contained in the LPARAM. |
+ if (IsClientMouseEvent(native_event)) |
+ return gfx::Point(native_event.lParam); |
DCHECK(IsNonClientMouseEvent(native_event)); |
// Non-client message. The position is contained in a POINTS structure in |
// LPARAM, and is in screen coordinates so we have to convert to client. |
@@ -143,20 +141,14 @@ int MouseEventFlagsFromNative(NativeEvent native_event) { |
} |
int MouseWheelEventFlagsFromNative(NativeEvent native_event) { |
- int native_flags = GET_KEYSTATE_WPARAM(native_event.wParam); |
+ int win_flags = GET_KEYSTATE_WPARAM(native_event.wParam); |
int flags = 0; |
- if (native_flags & MK_CONTROL) |
- flags |= ui::Event::EF_CONTROL_DOWN; |
- if (native_flags & MK_SHIFT) |
- flags |= ui::Event::EF_SHIFT_DOWN; |
- if (GetKeyState(VK_MENU) < 0) |
- flags |= ui::Event::EF_ALT_DOWN; |
- if (native_flags & MK_LBUTTON) |
- flags |= ui::Event::EF_LEFT_BUTTON_DOWN; |
- if (native_flags & MK_MBUTTON) |
- flags |= ui::Event::EF_MIDDLE_BUTTON_DOWN; |
- if (native_flags & MK_RBUTTON) |
- flags |= ui::Event::EF_RIGHT_BUTTON_DOWN; |
+ flags |= (win_flags & MK_CONTROL) ? ui::MouseEvent::EF_CONTROL_DOWN : 0; |
+ flags |= (win_flags & MK_SHIFT) ? ui::MouseEvent::EF_SHIFT_DOWN : 0; |
+ flags |= (GetKeyState(VK_MENU) < 0) ? ui::MouseEvent::EF_ALT_DOWN : 0; |
+ flags |= (win_flags & MK_LBUTTON) ? ui::MouseEvent::EF_LEFT_BUTTON_DOWN : 0; |
+ flags |= (win_flags & MK_MBUTTON) ? ui::MouseEvent::EF_MIDDLE_BUTTON_DOWN : 0; |
+ flags |= (win_flags & MK_RBUTTON) ? ui::MouseEvent::EF_RIGHT_BUTTON_DOWN : 0; |
return flags; |
} |