diff --git a/libcef/browser_impl_mac.mm b/libcef/browser_impl_mac.mm index 757bf8091..0b80a8a20 100644 --- a/libcef/browser_impl_mac.mm +++ b/libcef/browser_impl_mac.mm @@ -94,6 +94,9 @@ void CefBrowserImpl::UIT_CreateBrowser(const CefString& url) browserView.browser = this; window_info_.m_View = browserView; + if (!settings_.drag_drop_disabled) + [browserView registerDragDrop]; + Unlock(); if (newWnd != nil && !window_info_.m_bHidden) { diff --git a/libcef/browser_webview_delegate_mac.mm b/libcef/browser_webview_delegate_mac.mm index fcc6fd32c..fee6a238f 100644 --- a/libcef/browser_webview_delegate_mac.mm +++ b/libcef/browser_webview_delegate_mac.mm @@ -125,6 +125,11 @@ void BrowserWebViewDelegate::startDragging(const WebDragData& data, WebDragOperationsMask mask, const WebImage& image, const WebPoint& image_offset) { + if (browser_->settings().drag_drop_disabled) { + browser_->UIT_GetWebView()->dragSourceSystemDragEnded(); + return; + } + WebWidgetHost* host = GetWidgetHost(); if (!host) return; diff --git a/libcef/browser_webview_mac.h b/libcef/browser_webview_mac.h index 3c65df29f..eff4725fc 100644 --- a/libcef/browser_webview_mac.h +++ b/libcef/browser_webview_mac.h @@ -40,6 +40,9 @@ struct WebDropData; - (BOOL)isOpaque; - (void)setFrame:(NSRect)frameRect; +// Register this WebView as a drag/drop target. +- (void)registerDragDrop; + // Called from BrowserWebViewDelegate::startDragging() to initiate dragging. - (void)startDragWithDropData:(const WebDropData&)dropData dragOperationMask:(NSDragOperation)operationMask diff --git a/libcef/browser_webview_mac.mm b/libcef/browser_webview_mac.mm index b480d0b12..fce87db9d 100644 --- a/libcef/browser_webview_mac.mm +++ b/libcef/browser_webview_mac.mm @@ -25,13 +25,6 @@ - (id)initWithFrame:(NSRect)frame { self = [super initWithFrame:frame]; if (self) { - dropTarget_.reset([[WebDropTarget alloc] initWithWebView:self]); - - // Register the view to handle the appropriate drag types. - NSArray* types = [NSArray arrayWithObjects:NSStringPboardType, - NSHTMLPboardType, NSURLPboardType, nil]; - [self registerForDraggedTypes:types]; - trackingArea_ = [[NSTrackingArea alloc] initWithRect:frame options:NSTrackingMouseMoved | @@ -187,6 +180,15 @@ [self setNeedsDisplay:YES]; } +- (void)registerDragDrop { + dropTarget_.reset([[WebDropTarget alloc] initWithWebView:self]); + + // Register the view to handle the appropriate drag types. + NSArray* types = [NSArray arrayWithObjects:NSStringPboardType, + NSHTMLPboardType, NSURLPboardType, nil]; + [self registerForDraggedTypes:types]; +} + - (void)startDragWithDropData:(const WebDropData&)dropData dragOperationMask:(NSDragOperation)operationMask image:(NSImage*)image