[webkit-changes] cvs commit: WebKit/WebView.subproj WebHTMLView.m
Vicki
vicki at opensource.apple.com
Thu Oct 13 12:37:32 PDT 2005
vicki 05/10/13 12:37:32
Modified: . ChangeLog
WebView.subproj WebHTMLView.m
Log:
Reviewed by Darin.
- fix <rdar://problem/4043643> iframe swallows events for overlapping elements (3449)
* WebView.subproj/WebHTMLView.m:
(-[WebHTMLView hitTest:]):
(-[WebHTMLView _updateMouseoverWithEvent:]): eliminate _hitViewForEvent hackery and self
dependency from this function
Revision Changes Path
1.3351 +11 -0 WebKit/ChangeLog
Index: ChangeLog
===================================================================
RCS file: /cvs/root/WebKit/ChangeLog,v
retrieving revision 1.3350
retrieving revision 1.3351
diff -u -r1.3350 -r1.3351
--- ChangeLog 13 Oct 2005 01:08:12 -0000 1.3350
+++ ChangeLog 13 Oct 2005 19:37:24 -0000 1.3351
@@ -1,3 +1,14 @@
+2005-10-12 Vicki Murley <vicki at apple.com>
+
+ Reviewed by Darin.
+
+ - fix <rdar://problem/4043643> iframe swallows events for overlapping elements (3449)
+
+ * WebView.subproj/WebHTMLView.m:
+ (-[WebHTMLView hitTest:]):
+ (-[WebHTMLView _updateMouseoverWithEvent:]): eliminate _hitViewForEvent hackery and self
+ dependency from this function
+
2005-10-12 Timothy Hatcher <timothy at apple.com>
Reviewed by Darin.
1.476 +29 -44 WebKit/WebView.subproj/WebHTMLView.m
Index: WebHTMLView.m
===================================================================
RCS file: /cvs/root/WebKit/WebView.subproj/WebHTMLView.m,v
retrieving revision 1.475
retrieving revision 1.476
diff -u -r1.475 -r1.476
--- WebHTMLView.m 12 Oct 2005 01:00:28 -0000 1.475
+++ WebHTMLView.m 13 Oct 2005 19:37:31 -0000 1.476
@@ -852,14 +852,12 @@
captureHitsOnSubviews = NO;
} else {
NSEvent *event = [[self window] currentEvent];
- captureHitsOnSubviews = [event type] == NSLeftMouseDown && ([event modifierFlags] & NSControlKeyMask) == 0;
+ captureHitsOnSubviews = !([event type] == NSRightMouseDown || ([event type] == NSLeftMouseDown && ([event modifierFlags] & NSControlKeyMask) != 0));
}
- if (!captureHitsOnSubviews) {
+ if (!captureHitsOnSubviews)
return [super hitTest:point];
- }
- if ([[self superview] mouse:point inRect:[self frame]]) {
+ if ([[self superview] mouse:point inRect:[self frame]])
return self;
- }
return nil;
}
@@ -980,19 +978,13 @@
- (void)_updateMouseoverWithEvent:(NSEvent *)event
{
- [self retain];
-
WebHTMLView *view = nil;
- if ([event window] == [self window]) {
- NSView *hitView = [self _hitViewForEvent:event];
- while (hitView) {
- if ([hitView isKindOfClass:[WebHTMLView class]]) {
- view = (WebHTMLView *)hitView;
- break;
- }
- hitView = [hitView superview];
- }
- }
+ NSView *hitView = [[[event window] contentView] hitTest:[event locationInWindow]];
+ if ([hitView isKindOfClass:[WebHTMLView class]])
+ view = (WebHTMLView *)hitView;
+
+ if (view)
+ [view retain];
if (lastHitView != view && lastHitView != nil) {
// If we are moving out of a view (or frame), let's pretend the mouse moved
@@ -1006,47 +998,40 @@
location:NSMakePoint(-1 - xScroll, -1 - yScroll )
modifierFlags:[[NSApp currentEvent] modifierFlags]
timestamp:[NSDate timeIntervalSinceReferenceDate]
- windowNumber:[[self window] windowNumber]
+ windowNumber:[[view window] windowNumber]
context:[[NSApp currentEvent] context]
eventNumber:0 clickCount:0 pressure:0];
[[lastHitView _bridge] mouseMoved:event];
}
lastHitView = view;
-
- NSDictionary *element;
- if (view == nil) {
- element = nil;
- } else {
+
+ if (view) {
[[view _bridge] mouseMoved:event];
NSPoint point = [view convertPoint:[event locationInWindow] fromView:nil];
- element = [view elementAtPoint:point];
- }
-
- // Have the web view send a message to the delegate so it can do status bar display.
- [[self _webView] _mouseDidMoveOverElement:element modifierFlags:[event modifierFlags]];
+ NSDictionary *element = [view elementAtPoint:point];
- // Set a tool tip; it won't show up right away but will if the user pauses.
- NSString *newToolTip = nil;
- if (_private->showsURLsInToolTips) {
- DOMHTMLElement *domElement = [element objectForKey:WebElementDOMNodeKey];
- if ([domElement isKindOfClass:[DOMHTMLInputElement class]]) {
+ // Have the web view send a message to the delegate so it can do status bar display.
+ [[view _webView] _mouseDidMoveOverElement:element modifierFlags:[event modifierFlags]];
- if ([[(DOMHTMLInputElement *) domElement type] isEqualToString:@"submit"]) {
- newToolTip = [[(DOMHTMLInputElement *) domElement form] action];
+ // Set a tool tip; it won't show up right away but will if the user pauses.
+ NSString *newToolTip = nil;
+ if (_private->showsURLsInToolTips) {
+ DOMHTMLElement *domElement = [element objectForKey:WebElementDOMNodeKey];
+ if ([domElement isKindOfClass:[DOMHTMLInputElement class]]) {
+ if ([[(DOMHTMLInputElement *)domElement type] isEqualToString:@"submit"])
+ newToolTip = [[(DOMHTMLInputElement *) domElement form] action];
}
+ if (newToolTip == nil)
+ newToolTip = [[element objectForKey:WebCoreElementLinkURLKey] _web_userVisibleString];
}
- if (newToolTip == nil) {
- newToolTip = [[element objectForKey:WebCoreElementLinkURLKey] _web_userVisibleString];
- }
- }
- if (newToolTip == nil) {
- newToolTip = [element objectForKey:WebCoreElementTitleKey];
+ if (newToolTip == nil)
+ newToolTip = [element objectForKey:WebCoreElementTitleKey];
+ [view _setToolTip:newToolTip];
+
+ [view release];
}
- [self _setToolTip:newToolTip];
-
- [self release];
}
+ (NSArray *)_insertablePasteboardTypes
More information about the webkit-changes
mailing list