Changeset 13070 in webkit
- Timestamp:
- Mar 1, 2006 9:49:47 AM (18 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r13069 r13070 1 2006-03-01 Timothy Hatcher <timothy@apple.com> 2 3 Reviewed by Darin. 4 5 http://bugzilla.opendarwin.org/show_bug.cgi?id=7450 6 elementAtPoint is expensive and should return a smart dictionary 7 8 Support for WebKit. This removes the old elementAtPoint: on the bridge. 9 WebKit now uses the bridge method getInnerNonSharedNode:innerNode:URLElement:atPoint: 10 11 * WebCore.exp: removes the WebCore* dictionary keys 12 * bindings/objc/DOM.mm: 13 (-[DOMElement image]): new method to get an NSImage if the element has an image renderer 14 * bindings/objc/DOMHTML.mm: 15 (-[DOMHTMLElement titleDisplayString]): new method that returns the title after doing the backslash as currency symbol conversion 16 (-[DOMHTMLInputElement altDisplayString]): ditto for alt 17 (-[DOMHTMLImageElement altDisplayString]): ditto 18 (-[DOMHTMLAppletElement altDisplayString]): ditto 19 (-[DOMHTMLAreaElement altDisplayString]): ditto 20 (-[DOMHTMLAnchorElement absoluteLinkURL]): new method to get the absolute NSURL 21 (-[DOMHTMLAreaElement absoluteLinkURL]): ditto 22 (-[DOMHTMLLinkElement absoluteLinkURL]): ditto 23 (-[DOMHTMLInputElement absoluteImageURL]): new method to get the absolute image location as an NSURL 24 (-[DOMHTMLImageElement absoluteImageURL]): ditto 25 (-[DOMHTMLObjectElement absoluteImageURL]): ditto 26 * bindings/objc/DOMPrivate.h: 27 * bridge/mac/WebCoreFrameBridge.h: 28 * bridge/mac/WebCoreFrameBridge.mm: 29 (-[WebCoreFrameBridge getInnerNonSharedNode:innerNode:URLElement:atPoint:]): 30 (-[WebCoreFrameBridge isPointInsideSelection:]): 31 * dom/DocumentImpl.cpp: 32 (WebCore::DocumentImpl::prepareMouseEvent): 33 (WebCore::DocumentImpl::backslashAsCurrencySymbol): 34 * dom/DocumentImpl.h: 35 * rendering/render_layer.cpp: 36 (WebCore::RenderLayer::hitTest): 37 * rendering/render_object.h: 38 (WebCore::RenderObject::NodeInfo::URLElement): 39 (WebCore::RenderObject::NodeInfo::setURLElement): 40 1 41 2006-03-01 Mitz Pettel <opendarwin.org@mitzpettel.com> 2 42 -
trunk/WebCore/WebCore.exp
r13062 r13070 120 120 .objc_class_name_WebCoreViewFactory 121 121 .objc_class_name_WebDashboardRegion 122 _WebCoreElementDOMNodeKey123 _WebCoreElementFrameKey124 _WebCoreElementImageAltStringKey125 _WebCoreElementImageRectKey126 _WebCoreElementImageURLKey127 _WebCoreElementIsSelectedKey128 _WebCoreElementLinkLabelKey129 _WebCoreElementLinkTargetFrameKey130 _WebCoreElementLinkTitleKey131 _WebCoreElementLinkURLKey132 _WebCoreElementTitleKey133 122 _WebCoreInitializeEmptyTextGeometry 134 123 _WebCoreInitializeEmptyTextStyle -
trunk/WebCore/bindings/objc/DOM.mm
r13063 r13070 1452 1452 @implementation DOMElement (DOMElementExtensions) 1453 1453 1454 - (void)focus 1455 { 1456 [self _elementImpl]->focus(); 1457 } 1458 1459 - (void)blur 1460 { 1461 [self _elementImpl]->blur(); 1462 } 1463 1464 - (void)scrollIntoView:(BOOL)alignTop 1465 { 1466 [self _elementImpl]->scrollIntoView(alignTop); 1467 } 1468 1469 - (void)scrollIntoViewIfNeeded:(BOOL)centerIfNeeded 1470 { 1471 [self _elementImpl]->scrollIntoViewIfNeeded(centerIfNeeded); 1472 } 1473 1474 @end 1475 1476 @implementation DOMElement (WebCoreInternal) 1477 1478 + (DOMElement *)_elementWithImpl:(ElementImpl *)impl 1479 { 1480 return static_cast<DOMElement *>([DOMNode _nodeWithImpl:impl]); 1481 } 1482 1483 - (ElementImpl *)_elementImpl 1484 { 1485 return static_cast<ElementImpl *>(DOM_cast<NodeImpl *>(_internal)); 1486 } 1487 1488 @end 1489 1490 @implementation DOMElement (WebPrivate) 1491 1492 - (NSFont *)_font 1493 { 1494 RenderObject *renderer = [self _elementImpl]->renderer(); 1495 if (renderer) { 1496 return renderer->style()->font().getNSFont(); 1497 } 1498 return nil; 1499 } 1500 1501 - (NSImage*)_image 1502 { 1503 RenderObject *renderer = [self _elementImpl]->renderer(); 1454 - (NSImage*)image 1455 { 1456 RenderObject* renderer = [self _elementImpl]->renderer(); 1504 1457 if (renderer && renderer->isImage()) { 1505 1458 RenderImage* img = static_cast<RenderImage*>(renderer); 1506 1459 if (img->cachedImage() && !img->cachedImage()->isErrorImage()) 1507 1460 return img->cachedImage()->image()->getNSImage(); 1461 } 1462 return nil; 1463 } 1464 1465 - (void)focus 1466 { 1467 [self _elementImpl]->focus(); 1468 } 1469 1470 - (void)blur 1471 { 1472 [self _elementImpl]->blur(); 1473 } 1474 1475 - (void)scrollIntoView:(BOOL)alignTop 1476 { 1477 [self _elementImpl]->scrollIntoView(alignTop); 1478 } 1479 1480 - (void)scrollIntoViewIfNeeded:(BOOL)centerIfNeeded 1481 { 1482 [self _elementImpl]->scrollIntoViewIfNeeded(centerIfNeeded); 1483 } 1484 1485 @end 1486 1487 @implementation DOMElement (WebCoreInternal) 1488 1489 + (DOMElement *)_elementWithImpl:(ElementImpl *)impl 1490 { 1491 return static_cast<DOMElement *>([DOMNode _nodeWithImpl:impl]); 1492 } 1493 1494 - (ElementImpl *)_elementImpl 1495 { 1496 return static_cast<ElementImpl *>(DOM_cast<NodeImpl *>(_internal)); 1497 } 1498 1499 @end 1500 1501 @implementation DOMElement (WebPrivate) 1502 1503 - (NSFont *)_font 1504 { 1505 RenderObject *renderer = [self _elementImpl]->renderer(); 1506 if (renderer) { 1507 return renderer->style()->font().getNSFont(); 1508 1508 } 1509 1509 return nil; -
trunk/WebCore/bindings/objc/DOMHTML.mm
r12953 r13070 59 59 #import "DOMExtensions.h" 60 60 #import "DOMInternal.h" 61 #import "DOMPrivate.h" 61 62 #import "DOMHTMLInternal.h" 62 63 #import <kxmlcore/Assertions.h> … … 260 261 } 261 262 263 - (NSString *)titleDisplayString 264 { 265 return [self _HTMLElementImpl]->title().replace('\\', [self _elementImpl]->getDocument()->backslashAsCurrencySymbol()); 266 } 267 262 268 - (void)setTitle:(NSString *)title 263 269 { … … 581 587 } 582 588 589 - (NSURL *)absoluteLinkURL 590 { 591 return [self _getURLAttribute:@"href"]; 592 } 593 583 594 - (NSString *)href 584 595 { … … 1281 1292 } 1282 1293 1294 - (NSString *)altDisplayString 1295 { 1296 return [self _inputElementImpl]->alt().replace('\\', [self _elementImpl]->getDocument()->backslashAsCurrencySymbol()); 1297 } 1298 1283 1299 - (void)setAlt:(NSString *)alt 1284 1300 { … … 1344 1360 { 1345 1361 [self _inputElementImpl]->setSize(size); 1362 } 1363 1364 - (NSURL *)absoluteImageURL 1365 { 1366 if (![self _inputElementImpl]->renderer() || ![self _inputElementImpl]->renderer()->isImage()) 1367 return nil; 1368 return [self _getURLAttribute:@"src"]; 1346 1369 } 1347 1370 … … 2166 2189 } 2167 2190 2191 - (NSURL *)absoluteLinkURL 2192 { 2193 return [self _getURLAttribute:@"href"]; 2194 } 2195 2168 2196 - (NSString *)href 2169 2197 { … … 2303 2331 } 2304 2332 2333 - (NSString *)altDisplayString 2334 { 2335 String alt = [self _imageElementImpl]->getAttribute(altAttr); 2336 return alt.replace('\\', [self _elementImpl]->getDocument()->backslashAsCurrencySymbol()); 2337 } 2338 2305 2339 - (void)setAlt:(NSString *)alt 2306 2340 { … … 2360 2394 } 2361 2395 2396 - (NSURL *)absoluteImageURL 2397 { 2398 return [self _getURLAttribute:@"src"]; 2399 } 2400 2362 2401 - (NSString *)src 2363 2402 { … … 2476 2515 } 2477 2516 2517 - (NSURL *)absoluteImageURL 2518 { 2519 if (![self _objectElementImpl]->renderer() || ![self _objectElementImpl]->renderer()->isImage()) 2520 return nil; 2521 return [self _getURLAttribute:@"data"]; 2522 } 2523 2478 2524 - (NSString *)data 2479 2525 { … … 2667 2713 } 2668 2714 2715 - (NSString *)altDisplayString 2716 { 2717 String alt = [self _appletElementImpl]->getAttribute(altAttr); 2718 return alt.replace('\\', [self _elementImpl]->getDocument()->backslashAsCurrencySymbol()); 2719 } 2720 2669 2721 - (void)setAlt:(NSString *)alt 2670 2722 { … … 2813 2865 } 2814 2866 2867 - (NSString *)altDisplayString 2868 { 2869 String alt = [self _areaElementImpl]->getAttribute(altAttr); 2870 return alt.replace('\\', [self _elementImpl]->getDocument()->backslashAsCurrencySymbol()); 2871 } 2872 2815 2873 - (void)setAlt:(NSString *)alt 2816 2874 { … … 2826 2884 { 2827 2885 [self _areaElementImpl]->setAttribute(coordsAttr, coords); 2886 } 2887 2888 - (NSURL *)absoluteLinkURL 2889 { 2890 return [self _getURLAttribute:@"href"]; 2828 2891 } 2829 2892 -
trunk/WebCore/bindings/objc/DOMPrivate.h
r12808 r13070 40 40 @interface DOMElement (WebPrivate) 41 41 - (NSFont *)_font; 42 - (NSImage *)_image;43 42 - (NSData *)_imageTIFFRepresentation; 44 43 - (NSURL *)_getURLAttribute:(NSString *)name; … … 77 76 @end 78 77 79 // BEGIN PENDING PUBLIC WEB INSPECTORAPIS80 // These APIs are for the Web Inspector, and theywill be made public eventually.78 // BEGIN PENDING PUBLIC APIS 79 // These APIs will be made public eventually. 81 80 @interface DOMAttr (DOMAttrExtensions) 82 81 - (DOMCSSStyleDeclaration *)style; … … 108 107 109 108 @interface DOMElement (DOMElementExtensions) 109 - (NSImage *)image; 110 110 - (void)focus; 111 111 - (void)blur; … … 113 113 - (void)scrollIntoViewIfNeeded:(BOOL)centerIfNeeded; 114 114 @end 115 116 @interface DOMHTMLElement (DOMHTMLElementPendingPublic) 117 - (NSString *)titleDisplayString; 118 @end 119 120 @interface DOMHTMLInputElement (DOMHTMLInputElementPendingPublic) 121 - (NSString *)altDisplayString; 122 - (NSURL *)absoluteImageURL; 123 @end 124 125 @interface DOMHTMLImageElement (DOMHTMLImageElementPendingPublic) 126 - (NSString *)altDisplayString; 127 - (NSURL *)absoluteImageURL; 128 @end 129 130 @interface DOMHTMLObjectElement (DOMHTMLObjectElementPendingPublic) 131 - (NSURL *)absoluteImageURL; 132 @end 133 134 @interface DOMHTMLAnchorElement (DOMHTMLAnchorElementPendingPublic) 135 - (NSURL *)absoluteLinkURL; 136 @end 137 138 @interface DOMHTMLAreaElement (DOMHTMLAreaElementPendingPublic) 139 - (NSURL *)absoluteLinkURL; 140 @end 141 142 @interface DOMHTMLLinkElement (DOMHTMLLinkElementPendingPublic) 143 - (NSURL *)absoluteLinkURL; 144 @end 145 115 146 // END 116 147 -
trunk/WebCore/bridge/mac/WebCoreFrameBridge.h
r12898 r13070 69 69 @protocol WebCoreFileButton; 70 70 @protocol WebCoreFileButtonDelegate; 71 72 extern NSString *WebCoreElementDOMNodeKey;73 extern NSString *WebCoreElementFrameKey;74 extern NSString *WebCoreElementImageAltStringKey;75 extern NSString *WebCoreElementImageRectKey;76 extern NSString *WebCoreElementImageURLKey;77 extern NSString *WebCoreElementIsSelectedKey;78 extern NSString *WebCoreElementLinkURLKey;79 extern NSString *WebCoreElementLinkTargetFrameKey;80 extern NSString *WebCoreElementLinkLabelKey;81 extern NSString *WebCoreElementLinkTitleKey;82 extern NSString *WebCoreElementTitleKey;83 71 84 72 extern NSString *WebCorePageCacheStateKey; … … 303 291 - (NSString *)renderTreeAsExternalRepresentation; 304 292 305 - (NSDictionary *)elementAtPoint:(NSPoint)point; 293 - (void)getInnerNonSharedNode:(DOMNode **)innerNonSharedNode innerNode:(DOMNode **)innerNode URLElement:(DOMElement **)URLElement atPoint:(NSPoint)point; 294 - (BOOL)isPointInsideSelection:(NSPoint)point; 295 306 296 - (NSURL *)URLWithAttributeString:(NSString *)string; 307 297 -
trunk/WebCore/bridge/mac/WebCoreFrameBridge.mm
r13067 r13070 124 124 using WebCore::RenderObject; 125 125 126 NSString *WebCoreElementDOMNodeKey = @"WebElementDOMNode";127 NSString *WebCoreElementFrameKey = @"WebElementFrame";128 NSString *WebCoreElementImageAltStringKey = @"WebElementImageAltString";129 NSString *WebCoreElementImageRectKey = @"WebElementImageRect";130 NSString *WebCoreElementImageURLKey = @"WebElementImageURL";131 NSString *WebCoreElementIsSelectedKey = @"WebElementIsSelected";132 NSString *WebCoreElementLinkURLKey = @"WebElementLinkURL";133 NSString *WebCoreElementLinkTargetFrameKey = @"WebElementTargetFrame";134 NSString *WebCoreElementLinkLabelKey = @"WebElementLinkLabel";135 NSString *WebCoreElementLinkTitleKey = @"WebElementLinkTitle";136 NSString *WebCoreElementNameKey = @"WebElementName";137 NSString *WebCoreElementTitleKey = @"WebCoreElementTitle"; // not in WebKit API for now, could be in API some day138 139 126 NSString *WebCorePageCacheStateKey = @"WebCorePageCacheState"; 140 127 … … 1277 1264 } 1278 1265 1279 - ( NSDictionary *)elementAtPoint:(NSPoint)point1266 - (void)getInnerNonSharedNode:(DOMNode **)innerNonSharedNode innerNode:(DOMNode **)innerNode URLElement:(DOMElement **)URLElement atPoint:(NSPoint)point 1280 1267 { 1281 1268 RenderObject *renderer = m_frame->renderer(); 1282 if (!renderer) 1283 return nil; 1284 1269 if (!renderer) { 1270 *innerNonSharedNode = nil; 1271 *innerNode = nil; 1272 *URLElement = nil; 1273 return; 1274 } 1275 1285 1276 RenderObject::NodeInfo nodeInfo = [self nodeInfoAtPoint:point]; 1286 1287 NSMutableDictionary *element = [NSMutableDictionary dictionary]; 1288 [element setObject:[NSNumber numberWithBool:m_frame->isPointInsideSelection((int)point.x, (int)point.y)] 1289 forKey:WebCoreElementIsSelectedKey]; 1290 1291 // Find the title in the nearest enclosing DOM node. 1292 // For <area> tags in image maps, walk the tree for the <area>, not the <img> using it. 1293 for (NodeImpl *titleNode = nodeInfo.innerNode(); titleNode; titleNode = titleNode->parentNode()) { 1294 if (titleNode->isElementNode()) { 1295 const AtomicString& title = static_cast<ElementImpl *>(titleNode)->getAttribute(titleAttr); 1296 if (!title.isNull()) { 1297 // We found a node with a title. 1298 QString titleText = title.qstring(); 1299 titleText.replace(QChar('\\'), m_frame->backslashAsCurrencySymbol()); 1300 [element setObject:titleText.getNSString() forKey:WebCoreElementTitleKey]; 1301 break; 1302 } 1303 } 1304 } 1305 1306 NodeImpl *URLNode = nodeInfo.URLElement(); 1307 if (URLNode) { 1308 ElementImpl *e = static_cast<ElementImpl *>(URLNode); 1309 DocumentImpl *doc = e->getDocument(); 1310 ASSERT(doc); 1311 1312 const AtomicString& title = e->getAttribute(titleAttr); 1313 if (!title.isEmpty()) { 1314 QString titleText = title.qstring(); 1315 titleText.replace(QChar('\\'), m_frame->backslashAsCurrencySymbol()); 1316 [element setObject:titleText.getNSString() forKey:WebCoreElementLinkTitleKey]; 1317 } 1318 1319 const AtomicString& link = e->getAttribute(hrefAttr); 1320 if (!link.isNull()) { 1321 QString t = plainText(rangeOfContents(e).get()); 1322 if (!t.isEmpty()) { 1323 [element setObject:t.getNSString() forKey:WebCoreElementLinkLabelKey]; 1324 } 1325 QString URLString = parseURL(link).qstring(); 1326 [element setObject:doc->completeURL(URLString).getNSString() forKey:WebCoreElementLinkURLKey]; 1327 } 1328 1329 DOMString target = e->getAttribute(targetAttr); 1330 if (target.isEmpty() && doc) { // FIXME: Take out this doc check when we're not just before a release. 1331 target = doc->baseTarget(); 1332 } 1333 if (!target.isEmpty()) { 1334 [element setObject:target.qstring().getNSString() forKey:WebCoreElementLinkTargetFrameKey]; 1335 } 1336 } 1337 1338 NodeImpl *node = nodeInfo.innerNonSharedNode(); 1339 if (node) { 1340 [element setObject:[DOMNode _nodeWithImpl:node] forKey:WebCoreElementDOMNodeKey]; 1341 1342 // Only return image information if there is an image. 1343 if (node->renderer() && node->renderer()->isImage()) { 1344 RenderImage *r = static_cast<RenderImage *>(node->renderer()); 1345 int x, y; 1346 if (r->absolutePosition(x, y)) { 1347 NSValue *rect = [NSValue valueWithRect:NSMakeRect(x, y, r->contentWidth(), r->contentHeight())]; 1348 [element setObject:rect forKey:WebCoreElementImageRectKey]; 1349 } 1350 1351 ElementImpl *i = static_cast<ElementImpl*>(node); 1352 1353 // FIXME: Code copied from RenderImage::updateFromElement; should share. 1354 DOMString attr; 1355 if (i->hasTagName(objectTag)) { 1356 attr = i->getAttribute(dataAttr); 1357 } else { 1358 attr = i->getAttribute(srcAttr); 1359 } 1360 if (!attr.isEmpty()) { 1361 QString URLString = parseURL(attr).qstring(); 1362 [element setObject:i->getDocument()->completeURL(URLString).getNSString() forKey:WebCoreElementImageURLKey]; 1363 } 1364 1365 // FIXME: Code copied from RenderImage::updateFromElement; should share. 1366 DOMString alt; 1367 if (i->hasTagName(inputTag)) 1368 alt = static_cast<HTMLInputElementImpl *>(i)->altText(); 1369 else if (i->hasTagName(imgTag)) 1370 alt = static_cast<HTMLImageElementImpl *>(i)->altText(); 1371 if (!alt.isNull()) { 1372 QString altText = alt.qstring(); 1373 altText.replace(QChar('\\'), m_frame->backslashAsCurrencySymbol()); 1374 [element setObject:altText.getNSString() forKey:WebCoreElementImageAltStringKey]; 1375 } 1376 } 1377 } 1378 1379 return element; 1277 *innerNonSharedNode = [DOMNode _nodeWithImpl:nodeInfo.innerNonSharedNode()]; 1278 *innerNode = [DOMNode _nodeWithImpl:nodeInfo.innerNode()]; 1279 *URLElement = [DOMElement _elementWithImpl:nodeInfo.URLElement()]; 1280 } 1281 1282 - (BOOL)isPointInsideSelection:(NSPoint)point 1283 { 1284 return m_frame->isPointInsideSelection((int)point.x, (int)point.y); 1380 1285 } 1381 1286 -
trunk/WebCore/dom/DocumentImpl.cpp
r13063 r13070 28 28 #include "CDATASectionImpl.h" 29 29 #include "CommentImpl.h" 30 #include "decoder.h" 30 31 #include "DOMImplementationImpl.h" 31 32 #include "DocLoader.h" … … 1645 1646 String target; 1646 1647 if (renderInfo.URLElement()) { 1647 assert(renderInfo.URLElement()->isElementNode()); 1648 ElementImpl* e = static_cast<ElementImpl*>(renderInfo.URLElement()); 1648 ElementImpl* e = renderInfo.URLElement(); 1649 1649 href = parseURL(e->getAttribute(hrefAttr)); 1650 1650 if (!href.isNull()) … … 2493 2493 } 2494 2494 2495 QChar DocumentImpl::backslashAsCurrencySymbol() const 2496 { 2497 if (!m_decoder) 2498 return '\\'; 2499 return m_decoder->encoding().backslashAsCurrencySymbol(); 2500 } 2501 2495 2502 QString DocumentImpl::completeURL(const QString &URL) 2496 2503 { -
trunk/WebCore/dom/DocumentImpl.h
r12954 r13070 677 677 Decoder* decoder() const { return m_decoder.get(); } 678 678 679 QChar backslashAsCurrencySymbol() const; 680 679 681 #if __APPLE__ 680 682 void setDashboardRegionsDirty(bool f) { m_dashboardRegionsDirty = f; } -
trunk/WebCore/rendering/render_layer.cpp
r13067 r13070 1121 1121 while (node) { 1122 1122 if (node->isLink() && !info.URLElement()) 1123 info.setURLElement( node);1123 info.setURLElement(static_cast<ElementImpl*>(node)); 1124 1124 node = node->parentNode(); 1125 1125 } -
trunk/WebCore/rendering/render_object.h
r13067 r13070 489 489 NodeImpl* innerNode() const { return m_innerNode; } 490 490 NodeImpl* innerNonSharedNode() const { return m_innerNonSharedNode; } 491 NodeImpl* URLElement() const { return m_innerURLElement; }491 ElementImpl* URLElement() const { return m_innerURLElement; } 492 492 bool readonly() const { return m_readonly; } 493 493 bool active() const { return m_active; } … … 496 496 void setInnerNode(NodeImpl* n) { m_innerNode = n; } 497 497 void setInnerNonSharedNode(NodeImpl* n) { m_innerNonSharedNode = n; } 498 void setURLElement( NodeImpl* n) { m_innerURLElement = n; }498 void setURLElement(ElementImpl* n) { m_innerURLElement = n; } 499 499 500 500 private: 501 501 NodeImpl* m_innerNode; 502 502 NodeImpl* m_innerNonSharedNode; 503 NodeImpl* m_innerURLElement;503 ElementImpl* m_innerURLElement; 504 504 bool m_readonly; 505 505 bool m_active; -
trunk/WebKit/ChangeLog
r13062 r13070 1 2006-03-01 Timothy Hatcher <timothy@apple.com> 2 3 Reviewed by Darin. 4 5 http://bugzilla.opendarwin.org/show_bug.cgi?id=7450 6 elementAtPoint is expensive and should return a smart dictionary 7 8 elementAtPoint for WebHTMLView now returns a WebElementDictionary, 9 when objectForKey is called it will lookup in the DOM, cache and return the value 10 11 * Misc/WebElementDictionary.h: Added. 12 * Misc/WebElementDictionary.m: Added. 13 (addLookupKey): 14 (cacheValueForKey): 15 (+[WebElementDictionary initializeLookupTable]): 16 (-[WebElementDictionary initWithInnerNonSharedNode:innerNode:URLElement:andPoint:]): 17 (-[WebElementDictionary dealloc]): 18 (-[WebElementDictionary _fillCache]): 19 (-[WebElementDictionary count]): 20 (-[WebElementDictionary keyEnumerator]): 21 (-[WebElementDictionary objectForKey:]): 22 (-[WebElementDictionary _domNode]): 23 (-[WebElementDictionary _webFrame]): 24 (-[WebElementDictionary _targetWebFrame]): 25 (-[WebElementDictionary _title]): 26 (-[WebElementDictionary _imageRect]): 27 (-[WebElementDictionary _isSelected]): 28 * Misc/WebNSViewExtras.m: 29 (-[NSView _web_dragImage:element:rect:event:pasteboard:source:offset:]): 30 * WebKit.xcodeproj/project.pbxproj: 31 * WebView/WebHTMLView.m: 32 (-[WebHTMLView _updateMouseoverWithEvent:]): 33 (-[WebHTMLView _startDraggingImage:at:operation:event:sourceIsDHTML:DHTMLWroteData:]): 34 (-[NSArray elementAtPoint:]): 35 * WebView/WebView.m: 36 * WebView/WebViewPrivate.h: 37 1 38 2006-02-28 Darin Adler <darin@apple.com> 2 39 -
trunk/WebKit/Misc/WebNSViewExtras.m
r12526 r13070 178 178 NSPoint origin; 179 179 180 NSImage *image = (wir != nil) ? [wir image] : [element _image];180 NSImage *image = (wir != nil) ? [wir image] : [element image]; 181 181 if (image != nil && [image size].height * [image size].width <= WebMaxOriginalImageArea) { 182 182 NSSize originalSize = rect.size; -
trunk/WebKit/WebKit.xcodeproj/project.pbxproj
r12770 r13070 296 296 9398112F0824BF01008DF038 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 830E81E005853AC000AD0891 /* Security.framework */; }; 297 297 ABDDF20D08EB0DDC001E1241 /* WebDownloadInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = ABDDF20C08EB0DDC001E1241 /* WebDownloadInternal.h */; }; 298 DD89682009AA87240097E7F0 /* WebElementDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = DD89681E09AA87240097E7F0 /* WebElementDictionary.h */; }; 299 DD89682109AA87240097E7F0 /* WebElementDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = DD89681F09AA87240097E7F0 /* WebElementDictionary.m */; }; 298 300 ED6BE2E7088C32B50044DEDC /* WebNSAttributedStringExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = ED6BE2E5088C32B50044DEDC /* WebNSAttributedStringExtras.h */; }; 299 301 ED6BE2E8088C32B50044DEDC /* WebNSAttributedStringExtras.m in Sources */ = {isa = PBXBuildFile; fileRef = ED6BE2E6088C32B50044DEDC /* WebNSAttributedStringExtras.m */; }; … … 554 556 BEE52D4A0473032500CA289C /* WebKitSystemBits.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebKitSystemBits.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; }; 555 557 BEE52D4B0473032500CA289C /* WebKitSystemBits.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebKitSystemBits.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; }; 558 DD89681E09AA87240097E7F0 /* WebElementDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebElementDictionary.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; }; 559 DD89681F09AA87240097E7F0 /* WebElementDictionary.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebElementDictionary.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; }; 556 560 ED21B9810528F7AA003299AC /* WebDocumentInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebDocumentInternal.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; }; 557 561 ED2B2474033A2DA800C1A526 /* WebNSPasteboardExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebNSPasteboardExtras.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; }; … … 802 806 6578F5DE045F817400000128 /* WebDownload.h */, 803 807 6578F5DF045F817400000128 /* WebDownload.m */, 808 DD89681E09AA87240097E7F0 /* WebElementDictionary.h */, 809 DD89681F09AA87240097E7F0 /* WebElementDictionary.m */, 804 810 ); 805 811 path = Misc; … … 1313 1319 651951E209974178003DFC65 /* WebLoader.h in Headers */, 1314 1320 6550B7C7099EFAE90090D781 /* WebArchiver.h in Headers */, 1321 DD89682009AA87240097E7F0 /* WebElementDictionary.h in Headers */, 1315 1322 ); 1316 1323 runOnlyForDeploymentPostprocessing = 0; … … 1843 1850 65C7F42D0979DE640022E453 /* WebPageBridge.m in Sources */, 1844 1851 6550B7C8099EFAE90090D781 /* WebArchiver.m in Sources */, 1852 DD89682109AA87240097E7F0 /* WebElementDictionary.m in Sources */, 1845 1853 ); 1846 1854 runOnlyForDeploymentPostprocessing = 0; -
trunk/WebKit/WebView/WebHTMLView.m
r13055 r13070 44 44 #import <WebKit/WebDOMOperationsPrivate.h> 45 45 #import <WebKit/WebEditingDelegate.h> 46 #import <WebKit/WebElementDictionary.h> 46 47 #import <WebKit/WebFramePrivate.h> 47 48 #import <WebKit/WebFrameInternal.h> … … 1052 1053 } 1053 1054 if (newToolTip == nil) 1054 newToolTip = [[element objectForKey:Web CoreElementLinkURLKey] _web_userVisibleString];1055 newToolTip = [[element objectForKey:WebElementLinkURLKey] _web_userVisibleString]; 1055 1056 } 1056 1057 if (newToolTip == nil) 1057 newToolTip = [element objectForKey:Web CoreElementTitleKey];1058 newToolTip = [element objectForKey:WebElementTitleKey]; 1058 1059 [view _setToolTip:newToolTip]; 1059 1060 … … 1195 1196 // note per kwebster, the offset arg below is always ignored in positioning the image 1196 1197 DOMHTMLElement *imageElement = [element objectForKey:WebElementDOMNodeKey]; 1197 if (imageURL != nil && [imageElement _image] != nil && (_private->dragSourceActionMask & WebDragSourceActionImage)) {1198 if (imageURL != nil && [imageElement image] != nil && (_private->dragSourceActionMask & WebDragSourceActionImage)) { 1198 1199 id source = self; 1199 1200 if (!dhtmlWroteData) { … … 2866 2867 - (NSDictionary *)elementAtPoint:(NSPoint)point 2867 2868 { 2868 NSDictionary *elementInfoWC = [[self _bridge] elementAtPoint:point]; 2869 NSMutableDictionary *elementInfo = [elementInfoWC mutableCopy]; 2870 2871 // Convert URL strings to NSURLs. 2872 [elementInfo _web_setObjectIfNotNil:[NSURL _web_URLWithDataAsString:[elementInfoWC objectForKey:WebElementLinkURLKey]] forKey:WebElementLinkURLKey]; 2873 [elementInfo _web_setObjectIfNotNil:[NSURL _web_URLWithDataAsString:[elementInfoWC objectForKey:WebElementImageURLKey]] forKey:WebElementImageURLKey]; 2874 if ([elementInfoWC objectForKey:WebElementImageURLKey]) 2875 [elementInfo _web_setObjectIfNotNil:[[elementInfoWC objectForKey:WebElementDOMNodeKey] _image] forKey:WebElementImageKey]; 2876 2877 WebFrameView *webFrameView = [self _web_parentWebFrameView]; 2878 ASSERT(webFrameView); 2879 WebFrame *webFrame = [webFrameView webFrame]; 2880 2881 if (webFrame) { 2882 NSString *frameName = [elementInfoWC objectForKey:WebElementLinkTargetFrameKey]; 2883 if ([frameName length] == 0) { 2884 [elementInfo setObject:webFrame forKey:WebElementLinkTargetFrameKey]; 2885 } else { 2886 WebFrame *wf = [webFrame findFrameNamed:frameName]; 2887 if (wf != nil) 2888 [elementInfo setObject:wf forKey:WebElementLinkTargetFrameKey]; 2889 else 2890 [elementInfo removeObjectForKey:WebElementLinkTargetFrameKey]; 2891 } 2892 2893 [elementInfo setObject:webFrame forKey:WebElementFrameKey]; 2894 } 2895 2896 return [elementInfo autorelease]; 2869 DOMNode *innerNode = nil; 2870 DOMNode *innerNonSharedNode = nil; 2871 DOMElement *URLElement = nil; 2872 [[self _bridge] getInnerNonSharedNode:&innerNonSharedNode innerNode:&innerNode URLElement:&URLElement atPoint:point]; 2873 return [[[WebElementDictionary alloc] initWithInnerNonSharedNode:innerNonSharedNode innerNode:innerNode URLElement:URLElement andPoint:point] autorelease]; 2897 2874 } 2898 2875 -
trunk/WebKit/WebView/WebView.m
r12898 r13070 310 310 NSString *WebElementImageURLKey = @"WebElementImageURL"; 311 311 NSString *WebElementIsSelectedKey = @"WebElementIsSelected"; 312 NSString *WebElementTitleKey = @"WebElementTitle"; 312 313 NSString *WebElementLinkURLKey = @"WebElementLinkURL"; 313 314 NSString *WebElementLinkTargetFrameKey = @"WebElementTargetFrame"; -
trunk/WebKit/WebView/WebViewPrivate.h
r12793 r13070 66 66 extern NSString *_WebMainFrameURLKey; 67 67 68 extern NSString *WebElementTitleKey; // NSString of the title of the element (pending public, used by Safari) 69 68 70 typedef enum { 69 71 WebDashboardBehaviorAlwaysSendMouseEventsToAllWindows,
Note: See TracChangeset
for help on using the changeset viewer.