Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 "stdafx.h" | 5 #include "stdafx.h" |
| 6 #include <corewindow.h> | 6 #include <corewindow.h> |
| 7 #include <shobjidl.h> | 7 #include <shobjidl.h> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/profiler/scoped_tracker.h" | 10 #include "base/profiler/scoped_tracker.h" |
| (...skipping 445 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 456 HRESULT STDMETHODCALLTYPE | 456 HRESULT STDMETHODCALLTYPE |
| 457 ProcessEvents(winui::Core::CoreProcessEventsOption options) override { | 457 ProcessEvents(winui::Core::CoreProcessEventsOption options) override { |
| 458 // We don't support the other message pump modes. So we basically enter a | 458 // We don't support the other message pump modes. So we basically enter a |
| 459 // traditional message loop that we only exit a teardown. | 459 // traditional message loop that we only exit a teardown. |
| 460 if (options != winui::Core::CoreProcessEventsOption_ProcessUntilQuit) | 460 if (options != winui::Core::CoreProcessEventsOption_ProcessUntilQuit) |
| 461 return E_FAIL; | 461 return E_FAIL; |
| 462 | 462 |
| 463 MSG msg = {0}; | 463 MSG msg = {0}; |
| 464 while((::GetMessage(&msg, NULL, 0, 0) != 0) && g_window_count > 0) { | 464 while((::GetMessage(&msg, NULL, 0, 0) != 0) && g_window_count > 0) { |
| 465 ProcessInputMessage(msg); | 465 ProcessInputMessage(msg); |
| 466 ::TranslateMessage(&msg); | |
| 467 ::DispatchMessage(&msg); | 466 ::DispatchMessage(&msg); |
| 468 } | 467 } |
| 469 // TODO(cpu): figure what to do with msg.WParam which we would normally | 468 // TODO(cpu): figure what to do with msg.WParam which we would normally |
| 470 // return here. | 469 // return here. |
| 471 return S_OK; | 470 return S_OK; |
| 472 } | 471 } |
| 473 | 472 |
| 474 HRESULT STDMETHODCALLTYPE | 473 HRESULT STDMETHODCALLTYPE |
| 475 RunAsync(winui::Core::CoreDispatcherPriority priority, | 474 RunAsync(winui::Core::CoreDispatcherPriority priority, |
| 476 winui::Core::IDispatchedHandler* agileCallback, | 475 winui::Core::IDispatchedHandler* agileCallback, |
| (...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 906 | 905 |
| 907 HRESULT STDMETHODCALLTYPE put_MessageHandled(boolean value) override { | 906 HRESULT STDMETHODCALLTYPE put_MessageHandled(boolean value) override { |
| 908 return S_OK; | 907 return S_OK; |
| 909 } | 908 } |
| 910 | 909 |
| 911 // InputHandler | 910 // InputHandler |
| 912 bool HandleKeyboardMessage(const MSG& msg) override { | 911 bool HandleKeyboardMessage(const MSG& msg) override { |
| 913 switch (msg.message) { | 912 switch (msg.message) { |
| 914 case WM_KEYDOWN: | 913 case WM_KEYDOWN: |
| 915 case WM_KEYUP: { | 914 case WM_KEYUP: { |
| 915 ::TranslateMessage(&msg); | |
| 916 MSG char_msg; | |
| 917 while (::PeekMessage(&char_msg, msg.hwnd, WM_CHAR, WM_SYSCHAR, | |
|
James Su
2015/08/04 17:06:44
ditto
And WM_KEYDOWN/WM_KEYUP won't generate WM_S
Shu Chen
2015/08/05 01:36:45
Done.
| |
| 918 PM_REMOVE)) { | |
| 919 mswr::ComPtr<winui::Core::ICharacterReceivedEventArgs> char_args; | |
| 920 char_args = mswr::Make<KeyEvent>(char_msg); | |
| 921 character_received_handler_->Invoke(this, char_args.Get()); | |
| 922 } | |
| 916 mswr::ComPtr<winui::Core::IKeyEventArgs> event_args; | 923 mswr::ComPtr<winui::Core::IKeyEventArgs> event_args; |
| 917 event_args = mswr::Make<KeyEvent>(msg); | 924 event_args = mswr::Make<KeyEvent>(msg); |
| 918 KeyEventHandler* handler = NULL; | 925 KeyEventHandler* handler = NULL; |
| 919 if (msg.message == WM_KEYDOWN) { | 926 if (msg.message == WM_KEYDOWN) { |
| 920 handler = key_down_handler_; | 927 handler = key_down_handler_; |
| 921 } else { | 928 } else { |
| 922 handler = key_up_handler_; | 929 handler = key_up_handler_; |
| 923 } | 930 } |
| 924 handler->Invoke(this, event_args.Get()); | 931 handler->Invoke(this, event_args.Get()); |
| 925 break; | 932 break; |
| 926 } | 933 } |
| 927 | 934 |
| 928 case WM_CHAR: | |
| 929 case WM_DEADCHAR: | |
| 930 case WM_UNICHAR: { | |
| 931 mswr::ComPtr<winui::Core::ICharacterReceivedEventArgs> event_args; | |
| 932 event_args = mswr::Make<KeyEvent>(msg); | |
| 933 character_received_handler_->Invoke(this, event_args.Get()); | |
| 934 break; | |
| 935 } | |
| 936 | |
| 937 default: | 935 default: |
| 938 return false; | 936 return false; |
| 939 } | 937 } |
| 940 return true; | 938 return true; |
| 941 } | 939 } |
| 942 | 940 |
| 943 bool HandleMouseMessage(const MSG& msg) override { | 941 bool HandleMouseMessage(const MSG& msg) override { |
| 944 PointerEventHandler* handler = NULL; | 942 PointerEventHandler* handler = NULL; |
| 945 mswr::ComPtr<winui::Core::IPointerEventArgs> event_args; | 943 mswr::ComPtr<winui::Core::IPointerEventArgs> event_args; |
| 946 event_args = mswr::Make<MouseEvent>(msg); | 944 event_args = mswr::Make<MouseEvent>(msg); |
| (...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1218 }; | 1216 }; |
| 1219 | 1217 |
| 1220 | 1218 |
| 1221 mswr::ComPtr<winapp::Core::ICoreApplication> InitWindows7() { | 1219 mswr::ComPtr<winapp::Core::ICoreApplication> InitWindows7() { |
| 1222 HRESULT hr = ::CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); | 1220 HRESULT hr = ::CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); |
| 1223 if (FAILED(hr)) | 1221 if (FAILED(hr)) |
| 1224 CHECK(false); | 1222 CHECK(false); |
| 1225 return mswr::Make<CoreApplicationWin7Emulation>(); | 1223 return mswr::Make<CoreApplicationWin7Emulation>(); |
| 1226 } | 1224 } |
| 1227 | 1225 |
| OLD | NEW |