Index: ui/ozone/platform/cast/platform_window_cast.cc |
diff --git a/ui/ozone/platform/cast/platform_window_cast.cc b/ui/ozone/platform/cast/platform_window_cast.cc |
index 6a09ace58f36ed83142c0cd2f912644f7fc14d15..330868ea6eb80e9f0f48a1eff88d7b0e255255e2 100644 |
--- a/ui/ozone/platform/cast/platform_window_cast.cc |
+++ b/ui/ozone/platform/cast/platform_window_cast.cc |
@@ -4,6 +4,10 @@ |
#include "ui/ozone/platform/cast/platform_window_cast.h" |
+#include "base/bind.h" |
+#include "ui/events/event.h" |
+#include "ui/events/ozone/events_ozone.h" |
+#include "ui/events/platform/platform_event_source.h" |
#include "ui/platform_window/platform_window_delegate.h" |
namespace ui { |
@@ -13,6 +17,16 @@ PlatformWindowCast::PlatformWindowCast(PlatformWindowDelegate* delegate, |
: delegate_(delegate), bounds_(bounds) { |
widget_ = (bounds.width() << 16) + bounds.height(); |
delegate_->OnAcceleratedWidgetAvailable(widget_, 1.f); |
+ |
+ if (ui::PlatformEventSource::GetInstance()) { |
+ ui::PlatformEventSource::GetInstance()->AddPlatformEventDispatcher(this); |
+ } |
+} |
+ |
+PlatformWindowCast::~PlatformWindowCast() { |
+ if (ui::PlatformEventSource::GetInstance()) { |
+ ui::PlatformEventSource::GetInstance()->RemovePlatformEventDispatcher(this); |
+ } |
} |
gfx::Rect PlatformWindowCast::GetBounds() { |
@@ -31,4 +45,17 @@ PlatformImeController* PlatformWindowCast::GetPlatformImeController() { |
return nullptr; |
} |
+bool PlatformWindowCast::CanDispatchEvent(const ui::PlatformEvent& ne) { |
+ return true; |
+} |
+ |
+uint32_t PlatformWindowCast::DispatchEvent( |
+ const ui::PlatformEvent& native_event) { |
+ DispatchEventFromNativeUiEvent( |
+ native_event, base::Bind(&PlatformWindowDelegate::DispatchEvent, |
+ base::Unretained(delegate_))); |
+ |
+ return ui::POST_DISPATCH_STOP_PROPAGATION; |
+} |
+ |
} // namespace ui |