- Don't show the "drop" icon outside of valid drop regions.
- Fix a crash if the WebViewHost is destroyed before the BrowserWebView.
- Remove unused/unnecessary code.

git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@276 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
Marshall Greenblatt 2011-08-14 21:54:18 +00:00
parent f25b353b1f
commit 6880d990a8
8 changed files with 23 additions and 80 deletions

View File

@ -38,7 +38,8 @@
}
- (void) dealloc {
browser_->UIT_DestroyBrowser();
if (browser)
browser_->UIT_DestroyBrowser();
[self removeTrackingArea:trackingArea_];
[trackingArea_ release];
@ -156,7 +157,7 @@
- (BOOL)becomeFirstResponder {
if (browser_ && browser_->UIT_GetWebView()) {
browser_->UIT_GetWebViewHost()->SetFocus(YES);
return YES;
return [super becomeFirstResponder];
}
return NO;
@ -165,7 +166,7 @@
- (BOOL)resignFirstResponder {
if (browser_ && browser_->UIT_GetWebView()) {
browser_->UIT_GetWebViewHost()->SetFocus(NO);
return YES;
return [super resignFirstResponder];
}
return NO;

View File

@ -288,10 +288,6 @@ void PromiseWriterTask::Run() {
if (operation == (NSDragOperationMove | NSDragOperationCopy))
operation &= ~NSDragOperationMove;
// TODO: Figure out why |operation| is always NSDragOperationNone.
if (operation == NSDragOperationNone)
operation = NSDragOperationCopy;
WebView* webview = view_.browser->UIT_GetWebView();
gfx::Point client(localPoint.x, localPoint.y);

View File

@ -21,10 +21,6 @@ class WebViewHost;
// Our associated WebView. Weak reference.
BrowserWebView* view_;
// Updated asynchronously during a drag to tell us whether or not we should
// allow the drop.
NSDragOperation current_operation_;
// Keep track of the WebViewHost we're dragging over. If it changes during a
// drag, we need to re-send the DragEnter message.
WebViewHost* current_wvh_;
@ -35,11 +31,6 @@ class WebViewHost;
// (if necessary).
- (id)initWithWebView:(BrowserWebView*)view;
// Sets the current operation negotiated by the source and destination,
// which determines whether or not we should allow the drop. Takes effect the
// next time |-draggingUpdated:| is called.
- (void)setCurrentOperation: (NSDragOperation)operation;
// Messages to send during the tracking of a drag, ususally upon receiving
// calls from the view system. Communicates the drag messages to WebCore.
- (NSDragOperation)draggingEntered:(id<NSDraggingInfo>)info

View File

@ -19,6 +19,7 @@
#include "webkit/glue/webdropdata.h"
#include "webkit/glue/window_open_disposition.h"
using WebKit::WebDragOperation;
using WebKit::WebDragOperationsMask;
using WebKit::WebPoint;
using WebKit::WebView;
@ -34,12 +35,6 @@ using WebKit::WebView;
return self;
}
// Call to set whether or not we should allow the drop. Takes effect the
// next time |-draggingUpdated:| is called.
- (void)setCurrentOperation: (NSDragOperation)operation {
current_operation_ = operation;
}
// Given a point in window coordinates and a view in that window, return a
// flipped point in the coordinate system of |view|.
- (NSPoint)flipWindowPointToView:(const NSPoint&)windowPoint
@ -100,15 +95,12 @@ using WebKit::WebView;
NSPoint viewPoint = [self flipWindowPointToView:windowPoint view:view];
NSPoint screenPoint = [self flipWindowPointToScreen:windowPoint view:view];
NSDragOperation mask = [info draggingSourceOperationMask];
webview->dragTargetDragEnter(data.ToDragData(),
WebPoint(viewPoint.x, viewPoint.y),
WebPoint(screenPoint.x, screenPoint.y),
static_cast<WebDragOperationsMask>(mask));
// We won't know the true operation (whether the drag is allowed) until we
// hear back from the renderer. For now, be optimistic:
current_operation_ = NSDragOperationCopy;
return current_operation_;
WebDragOperation op =
webview->dragTargetDragEnter(data.ToDragData(),
WebPoint(viewPoint.x, viewPoint.y),
WebPoint(screenPoint.x, screenPoint.y),
static_cast<WebDragOperationsMask>(mask));
return static_cast<NSDragOperation>(op);
}
- (void)draggingExited:(id<NSDraggingInfo>)info {
@ -143,11 +135,11 @@ using WebKit::WebView;
NSPoint viewPoint = [self flipWindowPointToView:windowPoint view:view];
NSPoint screenPoint = [self flipWindowPointToScreen:windowPoint view:view];
NSDragOperation mask = [info draggingSourceOperationMask];
webview->dragTargetDragOver(WebPoint(viewPoint.x, viewPoint.y),
WebPoint(screenPoint.x, screenPoint.y),
static_cast<WebDragOperationsMask>(mask));
return current_operation_;
WebDragOperation op =
webview->dragTargetDragOver(WebPoint(viewPoint.x, viewPoint.y),
WebPoint(screenPoint.x, screenPoint.y),
static_cast<WebDragOperationsMask>(mask));
return static_cast<NSDragOperation>(op);
}
- (BOOL)performDragOperation:(id<NSDraggingInfo>)info

View File

@ -8,6 +8,8 @@ WebViewHost::WebViewHost()
{
}
#if !defined(OS_MACOSX)
WebViewHost::~WebViewHost()
{
}
#endif

View File

@ -50,6 +50,11 @@ WebViewHost* WebViewHost::Create(NSView* parent_view,
return host;
}
WebViewHost::~WebViewHost() {
BrowserWebView* webView = static_cast<BrowserWebView*>(view_);
webView.browser = NULL;
}
WebView* WebViewHost::webview() const {
return static_cast<WebView*>(webwidget_);
}

View File

@ -61,10 +61,6 @@ class WebWidgetHost {
virtual ~WebWidgetHost();
#if defined(OS_MACOSX)
static void HandleEvent(gfx::NativeView view, NSEvent* event);
#endif
gfx::NativeView view_handle() const { return view_; }
WebKit::WebWidget* webwidget() const { return webwidget_; }

View File

@ -45,46 +45,6 @@ WebWidgetHost* WebWidgetHost::Create(NSView* parent_view,
return host;
}
/*static*/
void WebWidgetHost::HandleEvent(NSView* view, NSEvent* event) {
/* TODO(port): rig up a way to get to the host */
WebWidgetHost* host = NULL;
if (host) {
switch ([event type]) {
case NSLeftMouseDown:
case NSLeftMouseUp:
case NSRightMouseDown:
case NSRightMouseUp:
case NSOtherMouseDown:
case NSOtherMouseUp:
case NSMouseEntered:
case NSMouseExited:
host->MouseEvent(event);
break;
case NSScrollWheel:
host->WheelEvent(event);
break;
case NSKeyDown:
case NSKeyUp:
host->KeyEvent(event);
break;
case NSAppKitDefined:
switch ([event subtype]) {
case NSApplicationActivatedEventType:
host->SetFocus(true);
break;
case NSApplicationDeactivatedEventType:
host->SetFocus(false);
break;
}
break;
}
}
}
void WebWidgetHost::DidInvalidateRect(const gfx::Rect& damaged_rect) {
#ifndef NDEBUG
DLOG_IF(WARNING, painting_) << "unexpected invalidation while painting";