1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef UI_PLATFORM_WINDOW_WM_WM_DROP_HANDLER_H_
#define UI_PLATFORM_WINDOW_WM_WM_DROP_HANDLER_H_
#include <memory>
#include "base/component_export.h"
namespace gfx {
class PointF;
}
namespace ui {
class PlatformWindow;
class OSExchangeData;
class COMPONENT_EXPORT(WM) WmDropHandler {
public:
// Notifies that drag has entered the window.
// |point| is in the coordinate space of the PlatformWindow in DIP.
// |operations| contains bitmask of ui::DragDropTypes suggested by the source.
// |modifiers| contains bitmask of ui::EventFlags that accompany the event.
virtual void OnDragEnter(const gfx::PointF& point,
int operations,
int modifiers) = 0;
// Notifies that the data advertised by the drag source was fully fetched,
// which is delivered through |data| parameter. It must be called after
// OnDragEnter and before OnDragLeave/OnDragDrop. Callers must also ensure
// that this function is called every time the cursor re-enters a given
// window, even in a single drag session.
virtual void OnDragDataAvailable(std::unique_ptr<OSExchangeData> data) = 0;
// Notifies that drag location has changed.
// |point| is in the coordinate space of the PlatformWindow in DIP.
// |operations| contains bitmask of ui::DragDropTypes suggested by the source.
// |modifiers| contains bitmask of ui::EventFlags that accompany the event.
// Returns one of ui::DragDropTypes values selected by the client.
virtual int OnDragMotion(const gfx::PointF& point,
int operations,
int modifiers) = 0;
// Notifies that the dragged data has been dropped. The location of the drop
// is the location of the latest DragEnter/DragMotion. |modifiers| contains a
// bitmask of ui::EventFlags that accompany the event.
virtual void OnDragDrop(int modifiers) = 0;
// Notifies that dragging is left. Must be called before
// WmDragHandler::OnDragFinished when the drag session gets cancelled.
virtual void OnDragLeave() = 0;
protected:
virtual ~WmDropHandler() = default;
};
COMPONENT_EXPORT(WM)
void SetWmDropHandler(PlatformWindow* platform_window,
WmDropHandler* drop_handler);
COMPONENT_EXPORT(WM)
WmDropHandler* GetWmDropHandler(const PlatformWindow& platform_window);
} // namespace ui
#endif // UI_PLATFORM_WINDOW_WM_WM_DROP_HANDLER_H_
|