CefDragHandler
Header: cef_drag_handler.h
Category: Browser Handlers
Overview
User-implemented handler interfaces returned from CefClient and registered with CefBrowserHost.
CefDragHandler
Source File: include/cef_drag_handler.h
Process / Thread Context: Browser process / UI thread. USER-IMPLEMENTED (source=client); returned from CefClient::GetDragHandler().
Purpose: Handle drag events entering the browser window and changes to draggable regions defined by -webkit-app-region: drag/no-drag.
Methods
bool OnDragEnter(CefRefPtr<CefBrowser> browser, CefRefPtr<CefDragData> dragData, DragOperationsMask mask)
Parameters:
browser: The browser.dragData: Drag event data (files, text, HTML, etc.).mask:cef_drag_operations_mask_tindicating the type of drag.
Return Value: false = default drag handling; true = cancel the drag event.
Usage Instruction: Gate which drags the browser should accept.
Threading Constraint: UI thread per class comment ("methods of this class will be called on the UI thread").
void OnDraggableRegionsChanged(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, const std::vector<CefDraggableRegion>& regions)
Parameters:
regions: New draggable regions. Empty vector means the last region was removed.
Return Value: None.
Usage Instruction: Called whenever draggable regions change. Not called if no regions are ever defined.
Threading Constraint: UI thread per class comment.
Usage Example
class MyDragHandler : public CefDragHandler {
public:
bool OnDragEnter(CefRefPtr<CefBrowser>, CefRefPtr<CefDragData> data,
DragOperationsMask) override {
// Reject file drags
return data->HasFiles();
}
void OnDraggableRegionsChanged(CefRefPtr<CefBrowser>, CefRefPtr<CefFrame>,
const std::vector<CefDraggableRegion>& r) override {
// Update frameless-window hit-test region
}
IMPLEMENT_REFCOUNTING(MyDragHandler);
};
// MyClient::GetDragHandler() returns this.