Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(223)

Side by Side Diff: ui/views/win/hwnd_message_handler.cc

Issue 271863006: Fix gesture event handling in MenuButton (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: git cl format Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ui/views/win/hwnd_message_handler.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/views/win/hwnd_message_handler.h" 5 #include "ui/views/win/hwnd_message_handler.h"
6 6
7 #include <dwmapi.h> 7 #include <dwmapi.h>
8 #include <oleacc.h> 8 #include <oleacc.h>
9 #include <shellapi.h> 9 #include <shellapi.h>
10 #include <wtsapi32.h> 10 #include <wtsapi32.h>
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 last_monitor_(NULL), 350 last_monitor_(NULL),
351 use_layered_buffer_(false), 351 use_layered_buffer_(false),
352 layered_alpha_(255), 352 layered_alpha_(255),
353 waiting_for_redraw_layered_window_contents_(false), 353 waiting_for_redraw_layered_window_contents_(false),
354 is_first_nccalc_(true), 354 is_first_nccalc_(true),
355 menu_depth_(0), 355 menu_depth_(0),
356 autohide_factory_(this), 356 autohide_factory_(this),
357 id_generator_(0), 357 id_generator_(0),
358 needs_scroll_styles_(false), 358 needs_scroll_styles_(false),
359 in_size_loop_(false), 359 in_size_loop_(false),
360 touch_down_context_(false), 360 touch_down_contexts_(0),
361 last_mouse_hwheel_time_(0), 361 last_mouse_hwheel_time_(0),
362 msg_handled_(FALSE) { 362 msg_handled_(FALSE) {
363 } 363 }
364 364
365 HWNDMessageHandler::~HWNDMessageHandler() { 365 HWNDMessageHandler::~HWNDMessageHandler() {
366 delegate_ = NULL; 366 delegate_ = NULL;
367 // Prevent calls back into this class via WNDPROC now that we've been 367 // Prevent calls back into this class via WNDPROC now that we've been
368 // destroyed. 368 // destroyed.
369 ClearUserData(); 369 ClearUserData();
370 } 370 }
(...skipping 1099 matching lines...) Expand 10 before | Expand all | Expand 10 after
1470 } 1470 }
1471 1471
1472 void HWNDMessageHandler::OnKillFocus(HWND focused_window) { 1472 void HWNDMessageHandler::OnKillFocus(HWND focused_window) {
1473 delegate_->HandleNativeBlur(focused_window); 1473 delegate_->HandleNativeBlur(focused_window);
1474 SetMsgHandled(FALSE); 1474 SetMsgHandled(FALSE);
1475 } 1475 }
1476 1476
1477 LRESULT HWNDMessageHandler::OnMouseActivate(UINT message, 1477 LRESULT HWNDMessageHandler::OnMouseActivate(UINT message,
1478 WPARAM w_param, 1478 WPARAM w_param,
1479 LPARAM l_param) { 1479 LPARAM l_param) {
1480 // Please refer to the comments in the header for the touch_down_context_ 1480 // Please refer to the comments in the header for the touch_down_contexts_
1481 // member for the if statement below. 1481 // member for the if statement below.
1482 if (touch_down_context_) 1482 if (touch_down_contexts_)
1483 return MA_NOACTIVATE; 1483 return MA_NOACTIVATE;
1484 1484
1485 // On Windows, if we select the menu item by touch and if the window at the 1485 // On Windows, if we select the menu item by touch and if the window at the
1486 // location is another window on the same thread, that window gets a 1486 // location is another window on the same thread, that window gets a
1487 // WM_MOUSEACTIVATE message and ends up activating itself, which is not 1487 // WM_MOUSEACTIVATE message and ends up activating itself, which is not
1488 // correct. We workaround this by setting a property on the window at the 1488 // correct. We workaround this by setting a property on the window at the
1489 // current cursor location. We check for this property in our 1489 // current cursor location. We check for this property in our
1490 // WM_MOUSEACTIVATE handler and don't activate the window if the property is 1490 // WM_MOUSEACTIVATE handler and don't activate the window if the property is
1491 // set. 1491 // set.
1492 if (::GetProp(hwnd(), ui::kIgnoreTouchMouseActivateForWindow)) { 1492 if (::GetProp(hwnd(), ui::kIgnoreTouchMouseActivateForWindow)) {
(...skipping 605 matching lines...) Expand 10 before | Expand all | Expand 10 after
2098 2098
2099 ScreenToClient(hwnd(), &point); 2099 ScreenToClient(hwnd(), &point);
2100 2100
2101 last_touch_message_time_ = ::GetMessageTime(); 2101 last_touch_message_time_ = ::GetMessageTime();
2102 2102
2103 ui::EventType touch_event_type = ui::ET_UNKNOWN; 2103 ui::EventType touch_event_type = ui::ET_UNKNOWN;
2104 2104
2105 if (input[i].dwFlags & TOUCHEVENTF_DOWN) { 2105 if (input[i].dwFlags & TOUCHEVENTF_DOWN) {
2106 touch_ids_.insert(input[i].dwID); 2106 touch_ids_.insert(input[i].dwID);
2107 touch_event_type = ui::ET_TOUCH_PRESSED; 2107 touch_event_type = ui::ET_TOUCH_PRESSED;
2108 touch_down_context_ = true; 2108 touch_down_contexts_++;
2109 base::MessageLoop::current()->PostDelayedTask( 2109 base::MessageLoop::current()->PostDelayedTask(
2110 FROM_HERE, 2110 FROM_HERE,
2111 base::Bind(&HWNDMessageHandler::ResetTouchDownContext, 2111 base::Bind(&HWNDMessageHandler::ResetTouchDownContext,
2112 weak_factory_.GetWeakPtr()), 2112 weak_factory_.GetWeakPtr()),
2113 base::TimeDelta::FromMilliseconds(kTouchDownContextResetTimeout)); 2113 base::TimeDelta::FromMilliseconds(kTouchDownContextResetTimeout));
2114 } else if (input[i].dwFlags & TOUCHEVENTF_UP) { 2114 } else if (input[i].dwFlags & TOUCHEVENTF_UP) {
2115 touch_ids_.erase(input[i].dwID); 2115 touch_ids_.erase(input[i].dwID);
2116 touch_event_type = ui::ET_TOUCH_RELEASED; 2116 touch_event_type = ui::ET_TOUCH_RELEASED;
2117 } else if (input[i].dwFlags & TOUCHEVENTF_MOVE) { 2117 } else if (input[i].dwFlags & TOUCHEVENTF_MOVE) {
2118 touch_event_type = ui::ET_TOUCH_MOVED; 2118 touch_event_type = ui::ET_TOUCH_MOVED;
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
2254 SetMsgHandled(FALSE); 2254 SetMsgHandled(FALSE);
2255 } 2255 }
2256 2256
2257 void HWNDMessageHandler::HandleTouchEvents(const TouchEvents& touch_events) { 2257 void HWNDMessageHandler::HandleTouchEvents(const TouchEvents& touch_events) {
2258 base::WeakPtr<HWNDMessageHandler> ref(weak_factory_.GetWeakPtr()); 2258 base::WeakPtr<HWNDMessageHandler> ref(weak_factory_.GetWeakPtr());
2259 for (size_t i = 0; i < touch_events.size() && ref; ++i) 2259 for (size_t i = 0; i < touch_events.size() && ref; ++i)
2260 delegate_->HandleTouchEvent(touch_events[i]); 2260 delegate_->HandleTouchEvent(touch_events[i]);
2261 } 2261 }
2262 2262
2263 void HWNDMessageHandler::ResetTouchDownContext() { 2263 void HWNDMessageHandler::ResetTouchDownContext() {
2264 touch_down_context_ = false; 2264 touch_down_contexts_--;
2265 } 2265 }
2266 2266
2267 LRESULT HWNDMessageHandler::HandleMouseEventInternal(UINT message, 2267 LRESULT HWNDMessageHandler::HandleMouseEventInternal(UINT message,
2268 WPARAM w_param, 2268 WPARAM w_param,
2269 LPARAM l_param, 2269 LPARAM l_param,
2270 bool track_mouse) { 2270 bool track_mouse) {
2271 if (!touch_ids_.empty()) 2271 if (!touch_ids_.empty())
2272 return 0; 2272 return 0;
2273 // We handle touch events on Windows Aura. Windows generates synthesized 2273 // We handle touch events on Windows Aura. Windows generates synthesized
2274 // mouse messages in response to touch which we should ignore. However touch 2274 // mouse messages in response to touch which we should ignore. However touch
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
2408 POINT cursor_pos = {0}; 2408 POINT cursor_pos = {0};
2409 ::GetCursorPos(&cursor_pos); 2409 ::GetCursorPos(&cursor_pos);
2410 if (memcmp(&cursor_pos, &mouse_location, sizeof(POINT))) 2410 if (memcmp(&cursor_pos, &mouse_location, sizeof(POINT)))
2411 return false; 2411 return false;
2412 return true; 2412 return true;
2413 } 2413 }
2414 return false; 2414 return false;
2415 } 2415 }
2416 2416
2417 } // namespace views 2417 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/win/hwnd_message_handler.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698