diff options
author | cpu@chromium.org <cpu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-05 21:47:33 +0000 |
---|---|---|
committer | cpu@chromium.org <cpu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-05 21:47:33 +0000 |
commit | 8f05ceaab534c9e0fd354e34b61e70ac48888e2c (patch) | |
tree | d8430a5bf076b96b6bc087a3d7f457bdef251a76 /win8 | |
parent | db84517c5e965d72adb9ce8edaf89a229f3f59fa (diff) | |
download | chromium_src-8f05ceaab534c9e0fd354e34b61e70ac48888e2c.zip chromium_src-8f05ceaab534c9e0fd354e34b61e70ac48888e2c.tar.gz chromium_src-8f05ceaab534c9e0fd354e34b61e70ac48888e2c.tar.bz2 |
In-chorme viewer for metro (part 2)
- Wires metro mouse move, mouse click to aura viewer
- Introduces a new RootWindowHost, one that is remote
BUG=151718
TEST=see bug
Review URL: https://codereview.chromium.org/11047012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@160489 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'win8')
-rw-r--r-- | win8/metro_driver/chrome_app_view.h | 20 | ||||
-rw-r--r-- | win8/metro_driver/devices_handler.cc | 33 | ||||
-rw-r--r-- | win8/metro_driver/devices_handler.h | 18 | ||||
-rw-r--r-- | win8/metro_driver/stdafx.h | 1 |
4 files changed, 72 insertions, 0 deletions
diff --git a/win8/metro_driver/chrome_app_view.h b/win8/metro_driver/chrome_app_view.h index cca7864..f9d8f90 100644 --- a/win8/metro_driver/chrome_app_view.h +++ b/win8/metro_driver/chrome_app_view.h @@ -25,6 +25,11 @@ #include "win8/metro_driver/settings_handler.h" #include "win8/metro_driver/toast_notification_handler.h" +namespace IPC { + class Listener; + class ChannelProxy; +} + class ChromeAppView : public mswr::RuntimeClass<winapp::Core::IFrameworkView> { public: @@ -77,6 +82,15 @@ class ChromeAppView HRESULT OnSizeChanged(winui::Core::ICoreWindow* sender, winui::Core::IWindowSizeChangedEventArgs* args); + HRESULT OnPointerMoved(winui::Core::ICoreWindow* sender, + winui::Core::IPointerEventArgs* args); + + HRESULT OnPointerPressed(winui::Core::ICoreWindow* sender, + winui::Core::IPointerEventArgs* args); + + HRESULT OnPointerReleased(winui::Core::ICoreWindow* sender, + winui::Core::IPointerEventArgs* args); + HRESULT OnEdgeGestureCompleted(winui::Input::IEdgeGesture* gesture, winui::Input::IEdgeGestureEventArgs* args); @@ -110,6 +124,9 @@ class ChromeAppView EventRegistrationToken input_pane_visible_token_; EventRegistrationToken input_pane_hiding_token_; EventRegistrationToken app_exit_token_; + EventRegistrationToken pointermoved_token_; + EventRegistrationToken pointerpressed_token_; + EventRegistrationToken pointerreleased_token_; ChromeUrlLaunchHandler url_launch_handler_; metro_driver::DevicesHandler devices_handler_; @@ -135,6 +152,9 @@ class ChromeAppView MetroDialogBox dialog_box_; metro_driver::Direct3DHelper direct3d_helper_; + + IPC::Listener* ui_channel_listener_; + IPC::ChannelProxy* ui_channel_; }; class ChromeAppViewFactory diff --git a/win8/metro_driver/devices_handler.cc b/win8/metro_driver/devices_handler.cc index 20fd413..9175885 100644 --- a/win8/metro_driver/devices_handler.cc +++ b/win8/metro_driver/devices_handler.cc @@ -20,4 +20,37 @@ HRESULT DevicesHandler::Initialize(winui::Core::ICoreWindow* window) { return hr; } +PointerEventHandler::PointerEventHandler() { +} + +PointerEventHandler::~PointerEventHandler() { +} + +HRESULT PointerEventHandler::Init(winui::Core::IPointerEventArgs* args) { + mswr::ComPtr<winui::Input::IPointerPoint> pointer_point; + HRESULT hr = args->get_CurrentPoint(&pointer_point); + if (FAILED(hr)) + return hr; + + mswr::ComPtr<windevs::Input::IPointerDevice> pointer_device; + hr = pointer_point->get_PointerDevice(&pointer_device); + if (FAILED(hr)) + return hr; + + windevs::Input::PointerDeviceType device_type; + hr = pointer_device->get_PointerDeviceType(&device_type); + if (FAILED(hr)) + return hr; + + is_mouse_ = (device_type == windevs::Input::PointerDeviceType_Mouse); + winfoundtn::Point point; + hr = pointer_point->get_Position(&point); + if (FAILED(hr)) + return hr; + + x_ = point.X; + y_ = point.Y; + return S_OK; +} + } // namespace metro_driver diff --git a/win8/metro_driver/devices_handler.h b/win8/metro_driver/devices_handler.h index fdb2226..c3623b0 100644 --- a/win8/metro_driver/devices_handler.h +++ b/win8/metro_driver/devices_handler.h @@ -26,6 +26,24 @@ class DevicesHandler { DISALLOW_COPY_AND_ASSIGN(DevicesHandler); }; +// This class helps decoding the pointer properties of an event. +class PointerEventHandler { + public: + PointerEventHandler(); + ~PointerEventHandler(); + + HRESULT Init(winui::Core::IPointerEventArgs* args); + + bool is_mouse() const { return is_mouse_; } + int x() const { return x_; } + int y() const { return y_; } + + private: + int x_; + int y_; + bool is_mouse_; +}; + } // namespace metro_driver #endif // CHROME_BROWSER_UI_METRO_DRIVER_DEVICES_HANDLER_H_ diff --git a/win8/metro_driver/stdafx.h b/win8/metro_driver/stdafx.h index d8c1a01..8373c3c 100644 --- a/win8/metro_driver/stdafx.h +++ b/win8/metro_driver/stdafx.h @@ -27,6 +27,7 @@ namespace mswr = Microsoft::WRL; namespace mswrw = Microsoft::WRL::Wrappers; namespace winapp = ABI::Windows::ApplicationModel; namespace windata = ABI::Windows::Data; +namespace windevs = ABI::Windows::Devices; namespace winfoundtn = ABI::Windows::Foundation; namespace wingfx = ABI::Windows::Graphics; namespace winui = ABI::Windows::UI; |