Skip to content

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_t indicating 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

cpp
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.

Derived from the CEF C++ headers — © Marshall A. Greenblatt, Google Inc. & contributors (BSD-style license). Not an official CEF project.