1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- // Copyright (c) 2021 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.
- #ifndef ASH_DRAG_DROP_DRAG_DROP_CAPTURE_DELEGATE_H_
- #define ASH_DRAG_DROP_DRAG_DROP_CAPTURE_DELEGATE_H_
- #include "ash/ash_export.h"
- #include "base/bind.h"
- #include "ui/events/gestures/gesture_types.h"
- namespace aura {
- class Window;
- }
- namespace ui {
- class LocatedEvent;
- }
- namespace ash {
- class DragDropTracker;
- class ASH_EXPORT DragDropCaptureDelegate {
- public:
- using CancelDragDropCallback = base::RepeatingCallback<void(void)>;
- DragDropCaptureDelegate();
- DragDropCaptureDelegate(const DragDropCaptureDelegate&) = delete;
- DragDropCaptureDelegate& operator=(const DragDropCaptureDelegate&) = delete;
- virtual ~DragDropCaptureDelegate();
- // Conditionally takes capture of top level touch events, returning whether
- // this was successful.
- bool TakeCapture(aura::Window* root_window,
- aura::Window* source_window,
- CancelDragDropCallback callback,
- ui::TransferTouchesBehavior behavior);
- // Converts an event target that was dispatched against a capture window to
- // once that can be processed by the drag and drop controller.
- //
- // This should only be called on events if TakeCapture returned true at the
- // start of a drag and drop session.
- aura::Window* GetTarget(const ui::LocatedEvent& event);
- // Converts an event that was dispatched against a capture window to once
- // that can be processed by the drag and drop controller, using the target
- // returned via GetTarget.
- //
- // This should only be called on events if TakeCapture returned true at the
- // start of a drag and drop session.
- std::unique_ptr<ui::LocatedEvent> ConvertEvent(aura::Window* target,
- const ui::LocatedEvent& event);
- // Return the capture window used if TakeCapture returns true.
- aura::Window* capture_window();
- private:
- std::unique_ptr<DragDropTracker> drag_drop_tracker_;
- };
- void DispatchGestureEndToWindow(aura::Window* window);
- } // namespace ash
- #endif // ASH_DRAG_DROP_DRAG_DROP_CAPTURE_DELEGATE_H_
|