[webkit-changes] cvs commit: WebKit/WebView.subproj WebHTMLView.m
Timothy
thatcher at opensource.apple.com
Thu Nov 10 21:12:50 PST 2005
thatcher 05/11/10 21:12:50
Modified: . Tag: Safari-1-3-branch ChangeLog
WebView.subproj Tag: Safari-1-3-branch WebHTMLView.m
Log:
Merged fix from TOT to Safari-1-3-branch
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
Revision Changes Path
No revision
No revision
1.3120.2.18 +16 -0 WebKit/ChangeLog
Index: ChangeLog
===================================================================
RCS file: /cvs/root/WebKit/ChangeLog,v
retrieving revision 1.3120.2.17
retrieving revision 1.3120.2.18
diff -u -r1.3120.2.17 -r1.3120.2.18
--- ChangeLog 4 Nov 2005 20:12:08 -0000 1.3120.2.17
+++ ChangeLog 11 Nov 2005 05:12:35 -0000 1.3120.2.18
@@ -1,3 +1,19 @@
+2005-11-10 Timothy Hatcher <timothy at apple.com>
+
+ Merged fix from TOT to Safari-1-3-branch
+
+ 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
+
=== WebKit-312.5.2 ===
2005-11-03 Timothy Hatcher <timothy at apple.com>
No revision
No revision
1.437.6.1 +31 -37 WebKit/WebView.subproj/WebHTMLView.m
Index: WebHTMLView.m
===================================================================
RCS file: /cvs/root/WebKit/WebView.subproj/WebHTMLView.m,v
retrieving revision 1.437
retrieving revision 1.437.6.1
diff -u -r1.437 -r1.437.6.1
--- WebHTMLView.m 24 Mar 2005 03:03:02 -0000 1.437
+++ WebHTMLView.m 11 Nov 2005 05:12:48 -0000 1.437.6.1
@@ -848,14 +848,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;
}
@@ -976,19 +974,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
@@ -1002,38 +994,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];
- }
+ NSDictionary *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]];
+ // Have the web view send a message to the delegate so it can do status bar display.
+ [[view _webView] _mouseDidMoveOverElement:element modifierFlags:[event modifierFlags]];
- // Set a tool tip; it won't show up right away but will if the user pauses.
- NSString *newToolTip = nil;
- if (_private->showsURLsInToolTips) {
- newToolTip = [[element objectForKey:WebCoreElementLinkURLKey] _web_userVisibleString];
- }
- if (newToolTip == nil) {
- newToolTip = [element objectForKey:WebCoreElementTitleKey];
+ // 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:WebCoreElementTitleKey];
+ [view _setToolTip:newToolTip];
+
+ [view release];
}
- [self _setToolTip:newToolTip];
-
- [self release];
}
+ (NSArray *)_insertablePasteboardTypes
More information about the webkit-changes
mailing list