From 0a17c0264fb5bec60583d0ca8fa146ada042f8b4 Mon Sep 17 00:00:00 2001 From: bdash Date: Wed, 4 Oct 2006 02:46:19 +0000 Subject: [PATCH] 2006-09-26 David Smith Reviewed by Timothy. http://bugzilla.opendarwin.org/show_bug.cgi?id=3723 Add -scrollDOMRangeToVisible: No automated tests are possible as this code path isn't reachable from JavaScript. * bridge/mac/WebCoreFrameBridge.h: * bridge/mac/WebCoreFrameBridge.mm: (-[WebCoreFrameBridge scrollDOMRangeToVisible:]): 2006-09-26 David Smith Reviewed by Timothy. http://bugzilla.opendarwin.org/show_bug.cgi?id=3723 Add -scrollDOMRangeToVisible: * WebView/WebView.m: (-[WebView scrollDOMRangeToVisible:]): * WebView/WebViewPrivate.h: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@16761 268f45cc-cd09-0410-ab3c-d52691b4dbfc --- WebCore/ChangeLog | 13 +++++++++++++ WebCore/bridge/mac/WebCoreFrameBridge.h | 1 + WebCore/bridge/mac/WebCoreFrameBridge.mm | 13 +++++++++++++ WebKit/ChangeLog | 11 +++++++++++ WebKit/WebView/WebView.m | 6 ++++++ WebKit/WebView/WebViewPrivate.h | 2 ++ 6 files changed, 46 insertions(+) diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog index a5e9b43e4f3..e361b1b9382 100644 --- a/WebCore/ChangeLog +++ b/WebCore/ChangeLog @@ -1,3 +1,16 @@ +2006-09-26 David Smith + + Reviewed by Timothy. + + http://bugzilla.opendarwin.org/show_bug.cgi?id=3723 + Add -scrollDOMRangeToVisible: + + No automated tests are possible as this code path isn't reachable from JavaScript. + + * bridge/mac/WebCoreFrameBridge.h: + * bridge/mac/WebCoreFrameBridge.mm: + (-[WebCoreFrameBridge scrollDOMRangeToVisible:]): + 2006-10-03 Graham Dennis Reviewed by Timothy. diff --git a/WebCore/bridge/mac/WebCoreFrameBridge.h b/WebCore/bridge/mac/WebCoreFrameBridge.h index 65cbecf0421..52749e3c0b3 100644 --- a/WebCore/bridge/mac/WebCoreFrameBridge.h +++ b/WebCore/bridge/mac/WebCoreFrameBridge.h @@ -358,6 +358,7 @@ typedef enum { - (NSImage *)selectionImageForcingWhiteText:(BOOL)forceWhiteText; - (NSRect)caretRectAtNode:(DOMNode *)node offset:(int)offset affinity:(NSSelectionAffinity)affinity; - (NSRect)firstRectForDOMRange:(DOMRange *)range; +- (void)scrollDOMRangeToVisible:(DOMRange *)range; - (void)setSelectedDOMRange:(DOMRange *)range affinity:(NSSelectionAffinity)selectionAffinity closeTyping:(BOOL)closeTyping; - (DOMRange *)selectedDOMRange; diff --git a/WebCore/bridge/mac/WebCoreFrameBridge.mm b/WebCore/bridge/mac/WebCoreFrameBridge.mm index 63f881e5a62..bfa8e9e636f 100644 --- a/WebCore/bridge/mac/WebCoreFrameBridge.mm +++ b/WebCore/bridge/mac/WebCoreFrameBridge.mm @@ -1,6 +1,7 @@ /* * Copyright (C) 2004, 2005, 2006 Apple Computer, Inc. All rights reserved. * Copyright (C) 2005, 2006 Alexey Proskuryakov (ap@nypop.com) + * Copyright (C) 2006 David Smith (catfish.man@gmail.com) * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -1429,6 +1430,18 @@ static HTMLFormElement *formElementFromDOMElement(DOMElement *element) startCaretRect.height()); } +- (void)scrollDOMRangeToVisible:(DOMRange *)range +{ + NSRect rangeRect = [self firstRectForDOMRange:range]; + Node *startNode = [[range startContainer] _node]; + + if (startNode && startNode->renderer()) { + RenderLayer *layer = startNode->renderer()->enclosingLayer(); + if (layer) + layer->scrollRectToVisible(enclosingIntRect(rangeRect), RenderLayer::gAlignToEdgeIfNeeded, RenderLayer::gAlignToEdgeIfNeeded); + } +} + - (NSImage *)selectionImageForcingWhiteText:(BOOL)forceWhiteText; { return m_frame->selectionImage(forceWhiteText); diff --git a/WebKit/ChangeLog b/WebKit/ChangeLog index 9b867939b26..d7af3b56268 100644 --- a/WebKit/ChangeLog +++ b/WebKit/ChangeLog @@ -1,3 +1,14 @@ +2006-09-26 David Smith + + Reviewed by Timothy. + + http://bugzilla.opendarwin.org/show_bug.cgi?id=3723 + Add -scrollDOMRangeToVisible: + + * WebView/WebView.m: + (-[WebView scrollDOMRangeToVisible:]): + * WebView/WebViewPrivate.h: + 2006-10-03 Graham Dennis Reviewed by Timothy. diff --git a/WebKit/WebView/WebView.m b/WebKit/WebView/WebView.m index d92b36b2897..2471b102498 100644 --- a/WebKit/WebView/WebView.m +++ b/WebKit/WebView/WebView.m @@ -1,5 +1,6 @@ /* * Copyright (C) 2005, 2006 Apple Computer, Inc. All rights reserved. + * Copyright (C) 2006 David Smith (catfish.man@gmail.com) * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -3063,6 +3064,11 @@ - (DOMCSSStyleDeclaration *)computedStyleForElement:(DOMElement *)element pseudo @implementation WebView (WebViewEditing) +- (void)scrollDOMRangeToVisible:(DOMRange *)range +{ + [[[range startContainer] _bridge] scrollDOMRangeToVisible:range]; +} + - (DOMRange *)editableDOMRangeForPoint:(NSPoint)point { WebFrameBridge *bridge = [self _bridgeAtPoint:point]; diff --git a/WebKit/WebView/WebViewPrivate.h b/WebKit/WebView/WebViewPrivate.h index c00afee16e9..b99eba5a309 100644 --- a/WebKit/WebView/WebViewPrivate.h +++ b/WebKit/WebView/WebViewPrivate.h @@ -78,6 +78,8 @@ typedef enum { - (void)setTabKeyCyclesThroughElements:(BOOL)cyclesElements; - (BOOL)tabKeyCyclesThroughElements; +- (void)scrollDOMRangeToVisible:(DOMRange *)range; + /*! @method setScriptDebugDelegate: @abstract Set the WebView's WebScriptDebugDelegate delegate. -- GitLab