Add support for draggable regions (issue #1645).

Regions are defined using the '-webkit-app-region: drag/no-drag'
CSS property and passed to the CefDragHandler::
OnDraggableRegionsChanged callback.
This commit is contained in:
Felix Bruns
2015-04-24 15:48:32 +02:00
committed by Marshall Greenblatt
parent ead921a3f6
commit c5b8b8b9c8
27 changed files with 581 additions and 3 deletions

View File

@ -46,6 +46,37 @@ int CEF_CALLBACK drag_handler_on_drag_enter(struct _cef_drag_handler_t* self,
return _retval;
}
void CEF_CALLBACK drag_handler_on_draggable_regions_changed(
struct _cef_drag_handler_t* self, cef_browser_t* browser,
size_t regionsCount, cef_draggable_region_t const* regions) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
DCHECK(self);
if (!self)
return;
// Verify param: browser; type: refptr_diff
DCHECK(browser);
if (!browser)
return;
// Verify param: regions; type: simple_vec_byref_const
DCHECK(regionsCount == 0 || regions);
if (regionsCount > 0 && !regions)
return;
// Translate param: regions; type: simple_vec_byref_const
std::vector<CefDraggableRegion > regionsList;
if (regionsCount > 0) {
for (size_t i = 0; i < regionsCount; ++i) {
regionsList.push_back(regions[i]);
}
}
// Execute
CefDragHandlerCppToC::Get(self)->OnDraggableRegionsChanged(
CefBrowserCToCpp::Wrap(browser),
regionsList);
}
} // namespace
@ -53,6 +84,8 @@ int CEF_CALLBACK drag_handler_on_drag_enter(struct _cef_drag_handler_t* self,
CefDragHandlerCppToC::CefDragHandlerCppToC() {
GetStruct()->on_drag_enter = drag_handler_on_drag_enter;
GetStruct()->on_draggable_regions_changed =
drag_handler_on_draggable_regions_changed;
}
template<> CefRefPtr<CefDragHandler> CefCppToC<CefDragHandlerCppToC,