Changeset 168378 in webkit
- Timestamp:
- May 6, 2014 2:08:14 PM (10 years ago)
- Location:
- trunk/Source
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r168377 r168378 1 2014-05-06 Brady Eidson <beidson@apple.com> 2 3 Don't select an image that is about to have its menu shown. 4 <rdar://problem/16807845> and https://bugs.webkit.org/show_bug.cgi?id=132579 5 6 Reviewed by Tim Horton. 7 8 * WebCore.exp.in: 9 10 * editing/Editor.h: 11 * editing/mac/EditorMac.mm: 12 (WebCore::Editor::replaceNodeFromPasteboard): New method that first selects 13 the Node and then immediately pastes over it. Since it’s synchronous the 14 selection never has a chance to paint. 15 16 * html/shadow/mac/ImageControlsButtonElementMac.cpp: 17 (WebCore::ImageControlsButtonElementMac::defaultEventHandler): Don’t select the image. 18 1 19 2014-05-06 Eric Carlson <eric.carlson@apple.com> 2 20 -
trunk/Source/WebCore/WebCore.exp.in
r168341 r168378 1161 1161 __ZN7WebCore6Editor24isSelectionUngrammaticalEv 1162 1162 __ZN7WebCore6Editor24replaceSelectionWithTextERKN3WTF6StringEbb 1163 __ZN7WebCore6Editor25replaceNodeFromPasteboardEPNS_4NodeERKN3WTF6StringE 1163 1164 __ZN7WebCore6Editor26decreaseSelectionListLevelEv 1164 1165 __ZN7WebCore6Editor26increaseSelectionListLevelEv -
trunk/Source/WebCore/editing/Editor.h
r167542 r168378 433 433 void takeFindStringFromSelection(); 434 434 void readSelectionFromPasteboard(const String& pasteboardName); 435 void replaceNodeFromPasteboard(Node*, const String& pasteboardName); 435 436 PassRefPtr<SharedBuffer> dataSelectionForPasteboard(const String& pasteboardName); 436 437 #endif // !PLATFORM(IOS) -
trunk/Source/WebCore/editing/mac/EditorMac.mm
r168376 r168378 266 266 } 267 267 268 void Editor::replaceNodeFromPasteboard(Node* node, const String& pasteboardName) 269 { 270 ASSERT(node); 271 272 if (&node->document() != m_frame.document()) 273 return; 274 275 RefPtr<Range> range = Range::create(node->document(), Position(node, Position::PositionIsBeforeAnchor), Position(node, Position::PositionIsAfterAnchor)); 276 m_frame.selection().setSelection(VisibleSelection(range.get()), FrameSelection::DoNotSetFocus); 277 278 readSelectionFromPasteboard(pasteboardName); 279 } 280 268 281 // FIXME: Makes no sense that selectedTextForDataTransfer always includes alt text, but stringSelectionForPasteboard does not. 269 282 // This was left in a bad state when selectedTextForDataTransfer was added. Need to look over clients and fix this. -
trunk/Source/WebCore/html/shadow/mac/ImageControlsButtonElementMac.cpp
r167956 r168378 112 112 return; 113 113 114 ContainerNode* parent = parentNode();115 Element* hostElement = nullptr;116 while (parent) {117 if (parent->isShadowRoot()) {118 hostElement = static_cast<ShadowRoot*>(parent)->hostElement();119 break;120 }121 parent = parent->parentNode();122 }123 124 if (!hostElement)125 return;126 ASSERT(isHTMLImageElement(hostElement));127 128 RefPtr<Range> range = Range::create(document(), Position(hostElement, Position::PositionIsBeforeAnchor), Position(hostElement, Position::PositionIsAfterAnchor));129 frame->selection().setSelection(VisibleSelection(range.get()));130 131 114 page->contextMenuController().showImageControlsMenu(event); 132 115 event->setDefaultHandled(); -
trunk/Source/WebKit/mac/ChangeLog
r168372 r168378 1 2014-05-06 Brady Eidson <beidson@apple.com> 2 3 Don't select an image that is about to have its menu shown. 4 <rdar://problem/16807845> and https://bugs.webkit.org/show_bug.cgi?id=132579 5 6 Reviewed by Tim Horton. 7 8 * Misc/WebSharingServicePickerController.mm: 9 (-[WebSharingServicePickerController didShareImageData:confirmDataIsValidTIFFData:]): 10 Call the new replaceNodeFromPasteboard API instead of readSelectionFromPasteboard. 11 1 12 2014-05-06 Anders Carlsson <andersca@apple.com> 2 13 -
trunk/Source/WebKit/mac/Misc/WebSharingServicePickerController.mm
r168193 r168378 32 32 #import <AppKit/NSSharingService.h> 33 33 #import <WebCore/BitmapImage.h> 34 #import <WebCore/Document.h> 34 35 #import <WebCore/Editor.h> 35 36 #import <WebCore/FocusController.h> … … 121 122 [pasteboard setData:data forType:NSPasteboardTypeTIFF]; 122 123 123 Frame& frame = page->focusController().focusedOrMainFrame(); 124 if (!frame.selection().isNone()) 125 frame.editor().readSelectionFromPasteboard(serviceControlsPasteboardName); 124 if (Node* node = page->contextMenuController().context().hitTestResult().innerNode()) { 125 if (Frame* frame = node->document().frame()) 126 frame->editor().replaceNodeFromPasteboard(node, serviceControlsPasteboardName); 127 } 126 128 127 129 [self clear];
Note: See TracChangeset
for help on using the changeset viewer.