| Index: ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11.cc
|
| diff --git a/ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11.cc b/ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11.cc
|
| index c56a3ce0e0d489825f8afe225d0b50ed9fbd7444..58ffb9c527acaee7be8341b3002e7f2951bff84c 100644
|
| --- a/ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11.cc
|
| +++ b/ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11.cc
|
| @@ -20,6 +20,7 @@
|
| #include "ui/base/x/selection_utils.h"
|
| #include "ui/base/x/x11_util.h"
|
| #include "ui/events/event.h"
|
| +#include "ui/events/platform/platform_event_source.h"
|
| #include "ui/views/widget/desktop_aura/desktop_native_cursor_manager.h"
|
| #include "ui/wm/public/drag_drop_client.h"
|
| #include "ui/wm/public/drag_drop_delegate.h"
|
| @@ -159,8 +160,8 @@ namespace views {
|
| DesktopDragDropClientAuraX11*
|
| DesktopDragDropClientAuraX11::g_current_drag_drop_client = NULL;
|
|
|
| -class DesktopDragDropClientAuraX11::X11DragContext :
|
| - public base::MessagePumpDispatcher {
|
| +class DesktopDragDropClientAuraX11::X11DragContext
|
| + : public ui::PlatformEventDispatcher {
|
| public:
|
| X11DragContext(ui::X11AtomCache* atom_cache,
|
| ::Window local_window,
|
| @@ -200,8 +201,9 @@ class DesktopDragDropClientAuraX11::X11DragContext :
|
| // |drag_operation|.
|
| void MaskOpeartion(::Atom xdnd_operation, int* drag_operation) const;
|
|
|
| - // Overridden from MessagePumpDispatcher:
|
| - virtual uint32_t Dispatch(const base::NativeEvent& event) OVERRIDE;
|
| + // ui::PlatformEventDispatcher:
|
| + virtual bool CanDispatchEvent(const ui::PlatformEvent& event) OVERRIDE;
|
| + virtual uint32_t DispatchEvent(const ui::PlatformEvent& event) OVERRIDE;
|
|
|
| // The atom cache owned by our parent.
|
| ui::X11AtomCache* atom_cache_;
|
| @@ -271,8 +273,7 @@ DesktopDragDropClientAuraX11::X11DragContext::X11DragContext(
|
| if (!client) {
|
| // The window doesn't have a DesktopDragDropClientAuraX11, that means it's
|
| // created by some other process. Listen for messages on it.
|
| - base::MessagePumpX11::Current()->AddDispatcherForWindow(
|
| - this, source_window_);
|
| + ui::PlatformEventSource::GetInstance()->AddPlatformEventDispatcher(this);
|
| XSelectInput(gfx::GetXDisplay(), source_window_, PropertyChangeMask);
|
|
|
| // We must perform a full sync here because we could be racing
|
| @@ -294,8 +295,7 @@ DesktopDragDropClientAuraX11::X11DragContext::~X11DragContext() {
|
| DesktopDragDropClientAuraX11::GetForWindow(source_window_);
|
| if (!client) {
|
| // Unsubscribe from message events.
|
| - base::MessagePumpX11::Current()->RemoveDispatcherForWindow(
|
| - source_window_);
|
| + ui::PlatformEventSource::GetInstance()->RemovePlatformEventDispatcher(this);
|
| }
|
| }
|
|
|
| @@ -398,13 +398,19 @@ void DesktopDragDropClientAuraX11::X11DragContext::MaskOpeartion(
|
| *drag_operation |= ui::DragDropTypes::DRAG_LINK;
|
| }
|
|
|
| -uint32_t DesktopDragDropClientAuraX11::X11DragContext::Dispatch(
|
| - const base::NativeEvent& event) {
|
| +bool DesktopDragDropClientAuraX11::X11DragContext::CanDispatchEvent(
|
| + const ui::PlatformEvent& event) {
|
| + return event->xany.window == source_window_;
|
| +}
|
| +
|
| +uint32_t DesktopDragDropClientAuraX11::X11DragContext::DispatchEvent(
|
| + const ui::PlatformEvent& event) {
|
| if (event->type == PropertyNotify &&
|
| event->xproperty.atom == atom_cache_->GetAtom("XdndActionList")) {
|
| ReadActions();
|
| + return ui::POST_DISPATCH_STOP_PROPAGATION;
|
| }
|
| - return POST_DISPATCH_NONE;
|
| + return ui::POST_DISPATCH_NONE;
|
| }
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
|
|