Changeset 17776 in webkit
- Timestamp:
- Nov 14, 2006 9:42:44 PM (17 years ago)
- Location:
- trunk
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r17775 r17776 1 2006-11-14 Timothy Hatcher <timothy@apple.com> 2 3 Reviewed by Harrison. 4 5 <rdar://problem/4766635> Safari should never follow links in editable areas (add a WebKitEditableLinkNeverLive option) 6 7 Adds an EditableLinkNeverLive setting that will make links in editable areas always dead. 8 9 * bridge/mac/WebCoreSettings.mm: 10 (-[WebCoreSettings setEditableLinkBehavior:]): 11 * html/HTMLAnchorElement.cpp: 12 (WebCore::HTMLAnchorElement::defaultEventHandler): 13 (WebCore::HTMLAnchorElement::setActive): 14 (WebCore::HTMLAnchorElement::isLiveLink): 15 * page/FrameView.cpp: 16 (WebCore::selectCursor): 17 * page/Settings.h: 18 (WebCore::Settings::): 19 1 20 2006-11-14 Mark Rowe <bdash@webkit.org> 2 21 -
trunk/WebCore/WebCore.xcodeproj/project.pbxproj
r17774 r17776 10593 10593 isa = PBXProject; 10594 10594 buildConfigurationList = 149C284308902B11008A9EFC /* Build configuration list for PBXProject "WebCore" */; 10595 compatibilityVersion = "Xcode 2.4"; 10595 10596 hasScannedForEncodings = 1; 10596 10597 knownRegions = ( … … 10607 10608 projectDirPath = ""; 10608 10609 projectRoot = ""; 10610 shouldCheckCompatibility = 1; 10609 10611 targets = ( 10610 10612 93F198A508245E59001E9ABC /* WebCore */, -
trunk/WebCore/bridge/mac/WebCoreSettings.mm
r17597 r17776 339 339 if (b != Settings::EditableLinkDefaultBehavior && 340 340 b != Settings::EditableLinkAlwaysLive && 341 b != Settings::EditableLinkNeverLive && 341 342 b != Settings::EditableLinkOnlyLiveWithShiftKey && 342 343 b != Settings::EditableLinkLiveWhenNotFocused) { -
trunk/WebCore/html/HTMLAnchorElement.cpp
r17770 r17776 152 152 case Settings::EditableLinkAlwaysLive: 153 153 break; 154 154 155 case Settings::EditableLinkNeverLive: 156 HTMLElement::defaultEventHandler(evt); 157 return; 158 155 159 // If the selection prior to clicking on this link resided in the same editable block as this link, 156 160 // and the shift key isn't pressed, we don't want to follow the link … … 161 165 } 162 166 break; 163 167 164 168 // Only follow the link if the shift key is down (WinIE/Firefox behavior) 165 169 case Settings::EditableLinkOnlyLiveWithShiftKey: … … 246 250 case Settings::EditableLinkAlwaysLive: 247 251 break; 248 252 253 case Settings::EditableLinkNeverLive: 254 return; 255 249 256 // Don't set the link to be active if the current selection is in the same editable block as 250 257 // this link … … 475 482 case Settings::EditableLinkAlwaysLive: 476 483 return true; 477 484 485 case Settings::EditableLinkNeverLive: 486 return false; 487 478 488 // Don't set the link to be live if the current selection is in the same editable block as 479 489 // this link or if the shift key is down -
trunk/WebCore/page/EventHandler.cpp
r17770 r17776 558 558 editableLinkEnabled = true; 559 559 break; 560 560 561 case Settings::EditableLinkNeverLive: 562 editableLinkEnabled = false; 563 break; 564 561 565 case Settings::EditableLinkLiveWhenNotFocused: 562 566 editableLinkEnabled = nodeIsNotBeingEdited(node, frame) || event.event().shiftKey(); -
trunk/WebCore/page/Settings.h
r16760 r17776 40 40 EditableLinkAlwaysLive, 41 41 EditableLinkOnlyLiveWithShiftKey, 42 EditableLinkLiveWhenNotFocused 42 EditableLinkLiveWhenNotFocused, 43 EditableLinkNeverLive 43 44 }; 44 45 -
trunk/WebKit/ChangeLog
r17774 r17776 1 2006-11-14 Timothy Hatcher <timothy@apple.com> 2 3 Reviewed by Harrison. 4 5 <rdar://problem/4766635> Safari should never follow links in editable areas (add a WebKitEditableLinkNeverLive option) 6 7 Adds an Open Link, Open Link in New Window and Copy Link to the editing context menu. 8 Adds a new WebKitEditableLinkNeverLive preference value that maps to WebCore's EditableLinkNeverLive. 9 10 * DefaultDelegates/WebDefaultContextMenuDelegate.m: 11 (-[WebDefaultUIDelegate menuItemWithTag:target:representedObject:]): 12 (-[WebDefaultUIDelegate contextMenuItemsForElement:defaultMenuItems:]): 13 (-[WebDefaultUIDelegate editingContextMenuItemsForElement:defaultMenuItems:]): 14 (-[WebDefaultUIDelegate requestWithURL:includingReferrerFromFrame:]): 15 (-[WebDefaultUIDelegate openNewWindowWithURL:element:]): 16 (-[WebDefaultUIDelegate openLink:]): 17 * English.lproj/Localizable.strings: 18 * WebKit.exp: 19 * WebView/WebPreferences.m: 20 (-[WebPreferences editableLinkBehavior]): 21 * WebView/WebPreferencesPrivate.h: 22 * WebView/WebUIDelegatePrivate.h: 23 1 24 2006-11-14 Anders Carlsson <acarlsson@apple.com> 2 25 -
trunk/WebKit/DefaultDelegates/WebDefaultContextMenuDelegate.m
r17669 r17776 78 78 79 79 switch(tag) { 80 case WebMenuItemTagOpenLink: 81 title = UI_STRING("Open Link", "Open Link context menu item"); 82 action = @selector(openLink:); 83 break; 80 84 case WebMenuItemTagOpenLinkInNewWindow: 81 85 title = UI_STRING("Open Link in New Window", "Open in New Window context menu item"); … … 207 211 [menuItems addObject:[self menuItemWithTag:WebMenuItemTagCopyLinkToClipboard target:self representedObject:element]]; 208 212 } 209 213 210 214 WebFrame *webFrame = [element objectForKey:WebElementFrameKey]; 211 215 NSURL *imageURL = [element objectForKey:WebElementImageURLKey]; … … 294 298 } 295 299 300 NSURL *linkURL = [element objectForKey:WebElementLinkURLKey]; 301 296 302 if ([[element objectForKey:WebElementIsSelectedKey] boolValue] && !inPasswordField) { 297 303 [menuItems addObject:[self menuItemWithTag:WebMenuItemTagSearchInSpotlight target:nil representedObject:element]]; … … 306 312 [menuItems addObject:[NSMenuItem separatorItem]]; 307 313 } 308 314 315 if (linkURL) { 316 if([WebView _canHandleRequest:[NSURLRequest requestWithURL:linkURL]]) { 317 [menuItems addObject:[self menuItemWithTag:WebMenuItemTagOpenLink target:self representedObject:element]]; 318 [menuItems addObject:[self menuItemWithTag:WebMenuItemTagOpenLinkInNewWindow target:self representedObject:element]]; 319 } 320 [menuItems addObject:[self menuItemWithTag:WebMenuItemTagCopyLinkToClipboard target:self representedObject:element]]; 321 // FIXME: we should add "Edit Link..." here like NSTextView has in it's context menu 322 [menuItems addObject:[NSMenuItem separatorItem]]; 323 } 324 309 325 // Load our NSTextView-like context menu nib. 310 326 if (defaultMenu == nil) { … … 370 386 } 371 387 372 - (void)openNewWindowWithURL:(NSURL *)URL element:(NSDictionary *)element 373 { 374 WebFrame *webFrame = [element objectForKey:WebElementFrameKey]; 375 WebView *webView = [webFrame webView]; 376 388 - (NSURLRequest *)requestWithURL:(NSURL *)URL includingReferrerFromFrame:(WebFrame *)webFrame 389 { 377 390 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL]; 378 391 NSString *referrer = core(webFrame)->loader()->outgoingReferrer(); 379 392 if (referrer) 380 393 [request _web_setHTTPReferrer:referrer]; 381 382 [webView _openNewWindowWithRequest:request]; 394 return request; 395 } 396 397 - (void)openNewWindowWithURL:(NSURL *)URL element:(NSDictionary *)element 398 { 399 WebFrame *webFrame = [element objectForKey:WebElementFrameKey]; 400 WebView *webView = [webFrame webView]; 401 [webView _openNewWindowWithRequest:[self requestWithURL:URL includingReferrerFromFrame:webFrame]]; 383 402 } 384 403 … … 388 407 WebView *webView = [webFrame webView]; 389 408 [webView _downloadURL:URL]; 409 } 410 411 - (void)openLink:(id)sender 412 { 413 NSDictionary *element = [sender representedObject]; 414 WebFrame *webFrame = [element objectForKey:WebElementFrameKey]; 415 WebFrame *targetFrame = [element objectForKey:WebElementLinkTargetFrameKey]; 416 NSURL *url = [element objectForKey:WebElementLinkURLKey]; 417 if (targetFrame) 418 [targetFrame loadRequest:[self requestWithURL:url includingReferrerFromFrame:webFrame]]; 419 else 420 [self openNewWindowWithURL:url element:element]; 390 421 } 391 422 -
trunk/WebKit/English.lproj/Localizable.strings
r17305 r17776 131 131 "Open Image in New Window" = "Open Image in New Window"; 132 132 133 /* Open Link context menu item */ 134 "Open Link" = "Open Link"; 135 133 136 /* Open in New Window context menu item */ 134 137 "Open Link in New Window" = "Open Link in New Window"; -
trunk/WebKit/WebKit.exp
r16395 r17776 42 42 _WebElementImageURLKey 43 43 _WebElementIsSelectedKey 44 _WebElementLinkIsLiveKey 44 45 _WebElementLinkLabelKey 45 46 _WebElementLinkTargetFrameKey -
trunk/WebKit/WebView/WebPreferences.m
r17145 r17776 677 677 if (value != WebKitEditableLinkDefaultBehavior && 678 678 value != WebKitEditableLinkAlwaysLive && 679 value != WebKitEditableLinkNeverLive && 679 680 value != WebKitEditableLinkOnlyLiveWithShiftKey && 680 681 value != WebKitEditableLinkLiveWhenNotFocused) { -
trunk/WebKit/WebView/WebPreferencesPrivate.h
r17139 r17776 43 43 #endif 44 44 45 45 // WebKitEditableLinkBehavior needs to match the Settings::EditableLinkBehavior enum in WebCore 46 46 typedef enum { 47 47 WebKitEditableLinkDefaultBehavior = 0, 48 48 WebKitEditableLinkAlwaysLive, 49 49 WebKitEditableLinkOnlyLiveWithShiftKey, 50 WebKitEditableLinkLiveWhenNotFocused 50 WebKitEditableLinkLiveWhenNotFocused, 51 WebKitEditableLinkNeverLive 51 52 } WebKitEditableLinkBehavior; 52 53 -
trunk/WebKit/WebView/WebUIDelegatePrivate.h
r17023 r17776 29 29 #import <WebKit/WebUIDelegate.h> 30 30 31 // FIXME: This should move to WebUIDelegate.h as part of the WebMenuItemTag enum there, when we're not in API freeze 32 enum { 33 WebMenuItemTagOpenLink = 1000 34 }; 35 31 36 @interface NSObject (WebUIDelegatePrivate) 32 37
Note: See TracChangeset
for help on using the changeset viewer.