Index: ui/views/widget/desktop_aura/x11_desktop_window_move_client_managed.cc |
diff --git a/ui/views/widget/desktop_aura/x11_desktop_window_move_client_managed.cc b/ui/views/widget/desktop_aura/x11_desktop_window_move_client_managed.cc |
deleted file mode 100644 |
index 19ebb04a830e35465ffbba1fd21100b4905c9a0a..0000000000000000000000000000000000000000 |
--- a/ui/views/widget/desktop_aura/x11_desktop_window_move_client_managed.cc |
+++ /dev/null |
@@ -1,120 +0,0 @@ |
-// Copyright 2016 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "ui/views/widget/desktop_aura/x11_desktop_window_move_client_managed.h" |
- |
-#include <X11/extensions/XInput2.h> |
-#include <X11/Xlib.h> |
- |
-#include "base/run_loop.h" |
-#include "ui/aura/window.h" |
-#include "ui/aura/window_tree_host.h" |
-#include "ui/base/x/x11_util.h" |
-#include "ui/events/event_utils.h" |
-#include "ui/events/platform/platform_event_source.h" |
-#include "ui/events/platform/scoped_event_dispatcher.h" |
-#include "ui/views/widget/desktop_aura/x11_pointer_grab.h" |
- |
-namespace views { |
- |
-namespace { |
- |
-bool IsButtonReleaseEvent(XEvent* xev) { |
- if (xev->type == ButtonRelease) |
- return xev->xbutton.button == Button1; |
- if (xev->type == GenericEvent) { |
- XIDeviceEvent* xievent = static_cast<XIDeviceEvent*>(xev->xcookie.data); |
- if (xievent->evtype == XI_RawButtonRelease) |
- return ui::EventButtonFromNative(xev) == Button1; |
- } |
- return false; |
-} |
- |
-void SelectButtonReleaseEvents(bool select) { |
- unsigned char mask[XIMaskLen(XI_LASTEVENT)]; |
- memset(mask, 0, sizeof(mask)); |
- if (select) |
- XISetMask(mask, XI_RawButtonRelease); |
- XIEventMask evmask; |
- evmask.deviceid = XIAllMasterDevices; |
- evmask.mask_len = sizeof(mask); |
- evmask.mask = mask; |
- XDisplay* display = gfx::GetXDisplay(); |
- XISelectEvents(display, DefaultRootWindow(display), &evmask, 1); |
-} |
- |
-} // anonymous namespace |
- |
-X11DesktopWindowMoveClientManaged::X11DesktopWindowMoveClientManaged() |
- : weak_factory_(this) {} |
-X11DesktopWindowMoveClientManaged::~X11DesktopWindowMoveClientManaged() {} |
- |
-bool X11DesktopWindowMoveClientManaged::CanDispatchEvent( |
- const ui::PlatformEvent& event) { |
- return in_move_loop_; |
-} |
- |
-uint32_t X11DesktopWindowMoveClientManaged::DispatchEvent( |
- const ui::PlatformEvent& event) { |
- DCHECK(base::MessageLoopForUI::IsCurrent()); |
- |
- XEvent* xev = event; |
- |
- // This method processes all events while the move loop is active. |
- if (!in_move_loop_) |
- return ui::POST_DISPATCH_PERFORM_DEFAULT; |
- |
- if (IsButtonReleaseEvent(xev)) { |
- EndMoveLoop(); |
- return ui::POST_DISPATCH_NONE; |
- } |
- return ui::POST_DISPATCH_PERFORM_DEFAULT; |
-} |
- |
-aura::client::WindowMoveResult X11DesktopWindowMoveClientManaged::RunMoveLoop( |
- aura::Window* window, |
- const gfx::Vector2d& drag_offset, |
- aura::client::WindowMoveSource move_source) { |
- auto screen_location = window->GetBoundsInScreen().origin() + drag_offset; |
- window_ = window->GetHost()->GetAcceleratedWidget(); |
- |
- SelectButtonReleaseEvents(true); |
- |
- window->ReleaseCapture(); |
- UngrabPointer(); |
- MoveResizeManagedWindow(window_, screen_location, ui::NetWmMoveResize::MOVE); |
- |
- std::unique_ptr<ui::ScopedEventDispatcher> old_dispatcher = |
- std::move(nested_dispatcher_); |
- nested_dispatcher_ = |
- ui::PlatformEventSource::GetInstance()->OverrideDispatcher(this); |
- |
- base::WeakPtr<X11DesktopWindowMoveClientManaged> alive( |
- weak_factory_.GetWeakPtr()); |
- |
- in_move_loop_ = true; |
- base::MessageLoopForUI* loop = base::MessageLoopForUI::current(); |
- base::MessageLoop::ScopedNestableTaskAllower allow_nested(loop); |
- base::RunLoop run_loop; |
- quit_closure_ = run_loop.QuitClosure(); |
- run_loop.Run(); |
- |
- if (!alive) |
- return aura::client::MOVE_CANCELED; |
- |
- nested_dispatcher_ = std::move(old_dispatcher); |
- return aura::client::MOVE_SUCCESSFUL; |
-} |
- |
-void X11DesktopWindowMoveClientManaged::EndMoveLoop() { |
- if (!in_move_loop_) |
- return; |
- |
- MoveResizeManagedWindow(window_, gfx::Point(), ui::NetWmMoveResize::CANCEL); |
- SelectButtonReleaseEvents(false); |
- |
- quit_closure_.Run(); |
-} |
- |
-} // namespace views |