| // Copyright 2020 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef ASH_DRAG_DROP_TOPLEVEL_WINDOW_DRAG_DELEGATE_H_ |
| #define ASH_DRAG_DROP_TOPLEVEL_WINDOW_DRAG_DELEGATE_H_ |
| |
| #include "ash/drag_drop/drag_drop_capture_delegate.h" |
| #include "base/functional/bind.h" |
| #include "ui/base/dragdrop/mojom/drag_drop_types.mojom-forward.h" |
| |
| namespace aura { |
| class Window; |
| } |
| |
| namespace gfx { |
| class PointF; |
| } |
| |
| namespace ui { |
| class LocatedEvent; |
| } |
| |
| namespace ash { |
| |
| // Interface that makes it possible to implement toplevel window drag handling |
| // during Drag & Drop sessions. |
| class ToplevelWindowDragDelegate : public DragDropCaptureDelegate { |
| public: |
| virtual void OnToplevelWindowDragStarted(const gfx::PointF& start_location, |
| ui::mojom::DragEventSource source, |
| aura::Window* source_window) = 0; |
| |
| virtual ui::mojom::DragOperation OnToplevelWindowDragDropped() = 0; |
| |
| virtual void OnToplevelWindowDragCancelled() = 0; |
| |
| virtual void OnToplevelWindowDragEvent(ui::LocatedEvent* event) = 0; |
| |
| protected: |
| ~ToplevelWindowDragDelegate() override = default; |
| }; |
| |
| } // namespace ash |
| |
| #endif // ASH_DRAG_DROP_TOPLEVEL_WINDOW_DRAG_DELEGATE_H_ |