Diff
Modified: trunk/Source/WebCore/ChangeLog (183516 => 183517)
--- trunk/Source/WebCore/ChangeLog 2015-04-28 23:16:24 UTC (rev 183516)
+++ trunk/Source/WebCore/ChangeLog 2015-04-28 23:27:21 UTC (rev 183517)
@@ -1,3 +1,34 @@
+2015-04-28 Timothy Horton <[email protected]>
+
+ [TextIndicator] Yellow highlight takes too long to fade out on scroll
+ https://bugs.webkit.org/show_bug.cgi?id=144358
+ <rdar://problem/19451011>
+
+ Reviewed by Beth Dakin.
+
+ * page/TextIndicator.h:
+ Add Lifetime and DismissalAnimation enums.
+
+ (WebCore::TextIndicator::contentImageWithHighlight):
+ (WebCore::TextIndicator::contentImage):
+ Fix style.
+
+ * page/mac/TextIndicatorWindow.h:
+ * page/mac/TextIndicatorWindow.mm:
+ (WebCore::TextIndicatorWindow::TextIndicatorWindow):
+ (WebCore::TextIndicatorWindow::~TextIndicatorWindow):
+ (WebCore::TextIndicatorWindow::clearTextIndicator):
+ (WebCore::TextIndicatorWindow::setTextIndicator):
+ (WebCore::TextIndicatorWindow::closeWindow):
+ (WebCore::TextIndicatorWindow::startFadeOut):
+ Rename m_startFadeOutTimer to m_temporaryTextIndicatorTimer (and related).
+ This is just about temporary-lifetime TextIndicators, like the ones
+ you get when the find-in-page UI is hidden but you hit Cmd-G.
+
+ Add clearTextIndicator, which takes a DismissalAnimation, providing
+ clients an opportunity to avoid the normal fade-out animation, if it
+ was going to happen.
+
2015-04-28 Michael Catanzaro <[email protected]>
Fully replace ENABLE_LLINT_C_LOOP with ENABLE_JIT
Modified: trunk/Source/WebCore/page/TextIndicator.h (183516 => 183517)
--- trunk/Source/WebCore/page/TextIndicator.h 2015-04-28 23:16:24 UTC (rev 183516)
+++ trunk/Source/WebCore/page/TextIndicator.h 2015-04-28 23:27:21 UTC (rev 183517)
@@ -56,6 +56,19 @@
Crossfade
};
+enum class TextIndicatorLifetime {
+ // The TextIndicator should indicate the text until dismissed.
+ Permanent,
+
+ // The TextIndicator should briefly indicate the text and then automatically dismiss.
+ Temporary
+};
+
+enum class TextIndicatorDismissalAnimation {
+ None,
+ FadeOut
+};
+
struct TextIndicatorData {
FloatRect selectionRectInRootViewCoordinates;
FloatRect textBoundingRectInRootViewCoordinates;
@@ -78,8 +91,8 @@
FloatRect textBoundingRectInRootViewCoordinates() const { return m_data.textBoundingRectInRootViewCoordinates; }
const Vector<FloatRect>& textRectsInBoundingRectCoordinates() const { return m_data.textRectsInBoundingRectCoordinates; }
float contentImageScaleFactor() const { return m_data.contentImageScaleFactor; }
- Image *contentImageWithHighlight() const { return m_data.contentImageWithHighlight.get(); }
- Image *contentImage() const { return m_data.contentImage.get(); }
+ Image* contentImageWithHighlight() const { return m_data.contentImageWithHighlight.get(); }
+ Image* contentImage() const { return m_data.contentImage.get(); }
TextIndicatorPresentationTransition presentationTransition() const { return m_data.presentationTransition; }
void setPresentationTransition(TextIndicatorPresentationTransition transition) { m_data.presentationTransition = transition; }
Modified: trunk/Source/WebCore/page/mac/TextIndicatorWindow.h (183516 => 183517)
--- trunk/Source/WebCore/page/mac/TextIndicatorWindow.h 2015-04-28 23:16:24 UTC (rev 183516)
+++ trunk/Source/WebCore/page/mac/TextIndicatorWindow.h 2015-04-28 23:27:21 UTC (rev 183517)
@@ -28,6 +28,7 @@
#if PLATFORM(MAC)
+#import "TextIndicator.h"
#import <wtf/Noncopyable.h>
#import <wtf/RefPtr.h>
#import <wtf/RetainPtr.h>
@@ -38,8 +39,6 @@
namespace WebCore {
-class TextIndicator;
-
class TextIndicatorWindow {
WTF_MAKE_NONCOPYABLE(TextIndicatorWindow);
@@ -47,7 +46,8 @@
WEBCORE_EXPORT explicit TextIndicatorWindow(NSView *);
WEBCORE_EXPORT ~TextIndicatorWindow();
- WEBCORE_EXPORT void setTextIndicator(PassRefPtr<TextIndicator>, CGRect contentRect, bool fadeOut);
+ WEBCORE_EXPORT void setTextIndicator(Ref<TextIndicator>, CGRect contentRect, TextIndicatorLifetime);
+ WEBCORE_EXPORT void clearTextIndicator(TextIndicatorDismissalAnimation);
WEBCORE_EXPORT void setAnimationProgress(float);
@@ -61,7 +61,9 @@
RetainPtr<NSWindow> m_textIndicatorWindow;
RetainPtr<WebTextIndicatorView> m_textIndicatorView;
- RunLoop::Timer<TextIndicatorWindow> m_startFadeOutTimer;
+ RunLoop::Timer<TextIndicatorWindow> m_temporaryTextIndicatorTimer;
+
+ bool m_fadingOut { false };
};
} // namespace WebKit
Modified: trunk/Source/WebCore/page/mac/TextIndicatorWindow.mm (183516 => 183517)
--- trunk/Source/WebCore/page/mac/TextIndicatorWindow.mm 2015-04-28 23:16:24 UTC (rev 183516)
+++ trunk/Source/WebCore/page/mac/TextIndicatorWindow.mm 2015-04-28 23:27:21 UTC (rev 183517)
@@ -348,18 +348,13 @@
TextIndicatorWindow::TextIndicatorWindow(NSView *targetView)
: m_targetView(targetView)
- , m_startFadeOutTimer(RunLoop::main(), this, &TextIndicatorWindow::startFadeOut)
+ , m_temporaryTextIndicatorTimer(RunLoop::main(), this, &TextIndicatorWindow::startFadeOut)
{
}
TextIndicatorWindow::~TextIndicatorWindow()
{
- if (m_textIndicator->wantsManualAnimation() && [m_textIndicatorView hasCompletedAnimation]) {
- startFadeOut();
- return;
- }
-
- closeWindow();
+ clearTextIndicator(TextIndicatorDismissalAnimation::FadeOut);
}
void TextIndicatorWindow::setAnimationProgress(float progress)
@@ -370,18 +365,30 @@
[m_textIndicatorView setAnimationProgress:progress];
}
-void TextIndicatorWindow::setTextIndicator(PassRefPtr<TextIndicator> textIndicator, CGRect textBoundingRectInScreenCoordinates, bool fadeOut)
+void TextIndicatorWindow::clearTextIndicator(TextIndicatorDismissalAnimation animation)
{
- if (m_textIndicator == textIndicator)
+ RefPtr<TextIndicator> textIndicator = WTF::move(m_textIndicator);
+
+ if (m_fadingOut)
return;
- m_textIndicator = textIndicator;
+ if (textIndicator && textIndicator->wantsManualAnimation() && [m_textIndicatorView hasCompletedAnimation] && animation == TextIndicatorDismissalAnimation::FadeOut) {
+ startFadeOut();
+ return;
+ }
closeWindow();
+}
- if (!m_textIndicator)
+void TextIndicatorWindow::setTextIndicator(Ref<TextIndicator> textIndicator, CGRect textBoundingRectInScreenCoordinates, TextIndicatorLifetime lifetime)
+{
+ if (m_textIndicator == textIndicator.ptr())
return;
+ m_textIndicator = textIndicator.ptr();
+
+ closeWindow();
+
CGFloat horizontalMargin = dropShadowBlurRadius * 2 + horizontalBorder;
CGFloat verticalMargin = dropShadowBlurRadius * 2 + verticalBorder;
@@ -410,8 +417,8 @@
if (m_textIndicator->presentationTransition() != TextIndicatorPresentationTransition::None)
[m_textIndicatorView present];
- if (fadeOut)
- m_startFadeOutTimer.startOneShot(timeBeforeFadeStarts);
+ if (lifetime == TextIndicatorLifetime::Temporary)
+ m_temporaryTextIndicatorTimer.startOneShot(timeBeforeFadeStarts);
}
void TextIndicatorWindow::closeWindow()
@@ -419,8 +426,11 @@
if (!m_textIndicatorWindow)
return;
- m_startFadeOutTimer.stop();
+ if (m_fadingOut)
+ return;
+ m_temporaryTextIndicatorTimer.stop();
+
[[m_textIndicatorWindow parentWindow] removeChildWindow:m_textIndicatorWindow.get()];
[m_textIndicatorWindow close];
m_textIndicatorWindow = nullptr;
@@ -428,6 +438,7 @@
void TextIndicatorWindow::startFadeOut()
{
+ m_fadingOut = true;
RetainPtr<NSWindow> indicatorWindow = m_textIndicatorWindow;
[m_textIndicatorView hideWithCompletionHandler:[indicatorWindow] {
[[indicatorWindow parentWindow] removeChildWindow:indicatorWindow.get()];
Modified: trunk/Source/WebKit/mac/ChangeLog (183516 => 183517)
--- trunk/Source/WebKit/mac/ChangeLog 2015-04-28 23:16:24 UTC (rev 183516)
+++ trunk/Source/WebKit/mac/ChangeLog 2015-04-28 23:27:21 UTC (rev 183517)
@@ -1,3 +1,35 @@
+2015-04-28 Timothy Horton <[email protected]>
+
+ [TextIndicator] Yellow highlight takes too long to fade out on scroll
+ https://bugs.webkit.org/show_bug.cgi?id=144358
+ <rdar://problem/19451011>
+
+ Reviewed by Beth Dakin.
+
+ * WebView/WebActionMenuController.mm:
+ (-[WebActionMenuController _showTextIndicator]):
+ * WebView/WebHTMLView.mm:
+ (-[WebHTMLView quickLookWithEvent:]):
+ * WebView/WebImmediateActionController.mm:
+ (-[WebImmediateActionController _defaultAnimationController]):
+ (-[WebImmediateActionController _animationControllerForDataDetectedText]):
+ (-[WebImmediateActionController _animationControllerForDataDetectedLink]):
+ Pull _clearTextIndicatorWithAnimation out, make it avoid using a dismissal animation
+ if we're called from didHandleScrollWheel.
+
+ * WebView/WebView.mm:
+ (-[WebView _animationControllerForDictionaryLookupPopupInfo:]):
+ (-[WebView _setTextIndicator:]):
+ (-[WebView _setTextIndicator:withLifetime:]):
+ (-[WebView _clearTextIndicator]):
+ (-[WebView _showDictionaryLookupPopup:]):
+ (-[WebView _dictionaryLookupPopoverWillClose:]):
+ (-[WebView _setTextIndicator:fadeOut:]): Deleted.
+ * WebView/WebViewInternal.h:
+ Make _setTextIndicator take a reference.
+ Add a variant of _setTextIndicator that takes a Lifetime.
+ Make _clearTextIndicatorWithAnimation take a DismissalAnimation.
+
2015-04-28 Michael Catanzaro <[email protected]>
Fully replace ENABLE_LLINT_C_LOOP with ENABLE_JIT
Modified: trunk/Source/WebKit/mac/WebView/WebActionMenuController.mm (183516 => 183517)
--- trunk/Source/WebKit/mac/WebView/WebActionMenuController.mm 2015-04-28 23:16:24 UTC (rev 183516)
+++ trunk/Source/WebKit/mac/WebView/WebActionMenuController.mm 2015-04-28 23:27:21 UTC (rev 183517)
@@ -121,6 +121,7 @@
- (void)webView:(WebView *)webView didHandleScrollWheel:(NSEvent *)event
{
[self _dismissActionMenuPopovers];
+ [self _hideTextIndicatorWithAnimation:TextIndicatorDismissalAnimation::None];
}
- (void)prepareForMenu:(NSMenu *)menu withEvent:(NSEvent *)event
@@ -133,6 +134,7 @@
return;
[self _dismissActionMenuPopovers];
+ [self _hideTextIndicatorWithAnimation:TextIndicatorDismissalAnimation::FadeOut];
[actionMenu removeAllItems];
WebElementDictionary *hitTestResult = [self performHitTestAtPoint:event.locationInWindow];
@@ -549,7 +551,7 @@
} interactionChangedHandler:^() {
[self _showTextIndicator];
} interactionStoppedHandler:^() {
- [self _hideTextIndicator];
+ [self _hideTextIndicatorWithAnimation:TextIndicatorDismissalAnimation::FadeOut];
}];
_currentDetectedDataRange = detectedDataRange;
@@ -813,17 +815,17 @@
return;
if (_type == WebActionMenuDataDetectedItem && _currentDetectedDataTextIndicator) {
- [_webView _setTextIndicator:_currentDetectedDataTextIndicator.get() fadeOut:NO];
+ [_webView _setTextIndicator:*_currentDetectedDataTextIndicator withLifetime:TextIndicatorLifetime::Permanent];
_isShowingTextIndicator = YES;
}
}
-- (void)_hideTextIndicator
+- (void)_hideTextIndicatorWithAnimation:(TextIndicatorDismissalAnimation)animation
{
if (!_isShowingTextIndicator)
return;
- [_webView _clearTextIndicator];
+ [_webView _clearTextIndicatorWithAnimation:animation];
_isShowingTextIndicator = NO;
}
@@ -832,8 +834,6 @@
DDActionsManager *actionsManager = [getDDActionsManagerClass() sharedManager];
if ([actionsManager respondsToSelector:@selector(requestBubbleClosureUnanchorOnFailure:)])
[actionsManager requestBubbleClosureUnanchorOnFailure:YES];
-
- [self _hideTextIndicator];
}
@end
Modified: trunk/Source/WebKit/mac/WebView/WebHTMLView.mm (183516 => 183517)
--- trunk/Source/WebKit/mac/WebView/WebHTMLView.mm 2015-04-28 23:16:24 UTC (rev 183516)
+++ trunk/Source/WebKit/mac/WebView/WebHTMLView.mm 2015-04-28 23:27:21 UTC (rev 183517)
@@ -5676,7 +5676,7 @@
- (void)quickLookWithEvent:(NSEvent *)event
{
- [[self _webView] _setTextIndicator:nullptr fadeOut:NO];
+ [[self _webView] _clearTextIndicatorWithAnimation:TextIndicatorDismissalAnimation::FadeOut];
[super quickLookWithEvent:event];
}
#endif // !PLATFORM(IOS)
Modified: trunk/Source/WebKit/mac/WebView/WebImmediateActionController.mm (183516 => 183517)
--- trunk/Source/WebKit/mac/WebView/WebImmediateActionController.mm 2015-04-28 23:16:24 UTC (rev 183516)
+++ trunk/Source/WebKit/mac/WebView/WebImmediateActionController.mm 2015-04-28 23:27:21 UTC (rev 183517)
@@ -97,12 +97,14 @@
- (void)webView:(WebView *)webView willHandleMouseDown:(NSEvent *)event
{
[self _clearImmediateActionState];
+ [_webView _clearTextIndicatorWithAnimation:TextIndicatorDismissalAnimation::FadeOut];
}
- (void)webView:(WebView *)webView didHandleScrollWheel:(NSEvent *)event
{
[_currentQLPreviewMenuItem close];
[self _clearImmediateActionState];
+ [_webView _clearTextIndicatorWithAnimation:TextIndicatorDismissalAnimation::None];
}
- (NSImmediateActionGestureRecognizer *)immediateActionRecognizer
@@ -117,11 +119,11 @@
[_immediateActionRecognizer setEnabled:YES];
[self _clearImmediateActionState];
+ [_webView _clearTextIndicatorWithAnimation:TextIndicatorDismissalAnimation::FadeOut];
}
- (void)_clearImmediateActionState
{
- [_webView _clearTextIndicator];
DDActionsManager *actionsManager = [getDDActionsManagerClass() sharedManager];
if ([actionsManager respondsToSelector:@selector(requestBubbleClosureUnanchorOnFailure:)])
[actionsManager requestBubbleClosureUnanchorOnFailure:YES];
@@ -196,6 +198,7 @@
[_webView _setTextIndicatorAnimationProgress:0];
[self _clearImmediateActionState];
+ [_webView _clearTextIndicatorWithAnimation:TextIndicatorDismissalAnimation::None];
[_webView _setMaintainsInactiveSelection:NO];
}
@@ -230,7 +233,7 @@
RefPtr<Range> linkRange = rangeOfContents(*_hitTestResult.URLElement());
RefPtr<TextIndicator> indicator = TextIndicator::createWithRange(*linkRange, TextIndicatorPresentationTransition::FadeIn);
- [_webView _setTextIndicator:indicator.get() fadeOut:NO];
+ [_webView _setTextIndicator:*indicator withLifetime:TextIndicatorLifetime::Permanent];
QLPreviewMenuItem *item = [NSMenuItem standardQuickLookMenuItem];
item.previewStyle = QLPreviewStylePopover;
@@ -303,6 +306,7 @@
- (void)menuItemDidClose:(NSMenuItem *)menuItem
{
[self _clearImmediateActionState];
+ [_webView _clearTextIndicatorWithAnimation:TextIndicatorDismissalAnimation::FadeOut];
}
static IntRect elementBoundingBoxInWindowCoordinatesFromNode(Node* node)
@@ -383,9 +387,9 @@
_currentActionContext = [actionContext contextForView:_webView altMode:YES interactionStartedHandler:^() {
} interactionChangedHandler:^() {
- [_webView _setTextIndicator:detectedDataTextIndicator.get() fadeOut:NO];
+ [_webView _setTextIndicator:*detectedDataTextIndicator withLifetime:TextIndicatorLifetime::Permanent];
} interactionStoppedHandler:^() {
- [_webView _clearTextIndicator];
+ [_webView _clearTextIndicatorWithAnimation:TextIndicatorDismissalAnimation::FadeOut];
}];
[_currentActionContext setHighlightFrame:[_webView.window convertRectToScreen:detectedDataBoundingBox]];
@@ -414,9 +418,9 @@
_currentActionContext = [actionContext contextForView:_webView altMode:YES interactionStartedHandler:^() {
} interactionChangedHandler:^() {
- [_webView _setTextIndicator:indicator.get() fadeOut:NO];
+ [_webView _setTextIndicator:*indicator withLifetime:TextIndicatorLifetime::Permanent];
} interactionStoppedHandler:^() {
- [_webView _clearTextIndicator];
+ [_webView _clearTextIndicatorWithAnimation:TextIndicatorDismissalAnimation::FadeOut];
}];
[_currentActionContext setHighlightFrame:[_webView.window convertRectToScreen:elementBoundingBoxInWindowCoordinatesFromNode(_hitTestResult.URLElement())]];
Modified: trunk/Source/WebKit/mac/WebView/WebView.mm (183516 => 183517)
--- trunk/Source/WebKit/mac/WebView/WebView.mm 2015-04-28 23:16:24 UTC (rev 183516)
+++ trunk/Source/WebKit/mac/WebView/WebView.mm 2015-04-28 23:27:21 UTC (rev 183517)
@@ -8591,7 +8591,7 @@
if (!mutableOptions)
mutableOptions = adoptNS([[NSMutableDictionary alloc] init]);
[mutableOptions setObject:@YES forKey:getLUTermOptionDisableSearchTermIndicator()];
- [self _setTextIndicator:dictionaryPopupInfo.textIndicator.get() fadeOut:NO];
+ [self _setTextIndicator:*dictionaryPopupInfo.textIndicator withLifetime:TextIndicatorLifetime::Permanent];
return [getLULookupDefinitionModuleClass() lookupAnimationControllerForTerm:dictionaryPopupInfo.attributedString.get() atLocation:textBaselineOrigin options:mutableOptions.get()];
}
@@ -8599,24 +8599,26 @@
}
#endif // __MAC_OS_X_VERSION_MIN_REQUIRED >= 101000
-- (void)_setTextIndicator:(TextIndicator *)textIndicator fadeOut:(BOOL)fadeOut
+- (void)_setTextIndicator:(TextIndicator&)textIndicator
{
- if (!textIndicator) {
- _private->textIndicatorWindow = nullptr;
- return;
- }
+ [self _setTextIndicator:textIndicator withLifetime:TextIndicatorLifetime::Permanent];
+}
+- (void)_setTextIndicator:(TextIndicator&)textIndicator withLifetime:(TextIndicatorLifetime)lifetime
+{
if (!_private->textIndicatorWindow)
_private->textIndicatorWindow = std::make_unique<TextIndicatorWindow>(self);
- NSRect textBoundingRectInWindowCoordinates = [self convertRect:[self _convertRectFromRootView:textIndicator->textBoundingRectInRootViewCoordinates()] toView:nil];
+ NSRect textBoundingRectInWindowCoordinates = [self convertRect:[self _convertRectFromRootView:textIndicator.textBoundingRectInRootViewCoordinates()] toView:nil];
NSRect textBoundingRectInScreenCoordinates = [self.window convertRectToScreen:textBoundingRectInWindowCoordinates];
- _private->textIndicatorWindow->setTextIndicator(textIndicator, NSRectToCGRect(textBoundingRectInScreenCoordinates), fadeOut);
+ _private->textIndicatorWindow->setTextIndicator(textIndicator, NSRectToCGRect(textBoundingRectInScreenCoordinates), lifetime);
}
-- (void)_clearTextIndicator
+- (void)_clearTextIndicatorWithAnimation:(TextIndicatorDismissalAnimation)animation
{
- [self _setTextIndicator:nullptr fadeOut:NO];
+ if (_private->textIndicatorWindow)
+ _private->textIndicatorWindow->clearTextIndicator(TextIndicatorDismissalAnimation::FadeOut);
+ _private->textIndicatorWindow = nullptr;
}
- (void)_setTextIndicatorAnimationProgress:(float)progress
@@ -8645,7 +8647,7 @@
if (!mutableOptions)
mutableOptions = adoptNS([[NSMutableDictionary alloc] init]);
[mutableOptions setObject:@YES forKey:getLUTermOptionDisableSearchTermIndicator()];
- [self _setTextIndicator:dictionaryPopupInfo.textIndicator.get() fadeOut:NO];
+ [self _setTextIndicator:*dictionaryPopupInfo.textIndicator withLifetime:TextIndicatorLifetime::Permanent];
[getLULookupDefinitionModuleClass() showDefinitionForTerm:dictionaryPopupInfo.attributedString.get() atLocation:textBaselineOrigin options:mutableOptions.get()];
} else
[getLULookupDefinitionModuleClass() showDefinitionForTerm:dictionaryPopupInfo.attributedString.get() atLocation:textBaselineOrigin options:dictionaryPopupInfo.options.get()];
@@ -8653,7 +8655,7 @@
- (void)_dictionaryLookupPopoverWillClose:(NSNotification *)notification
{
- [self _setTextIndicator:nullptr fadeOut:NO];
+ [self _clearTextIndicatorWithAnimation:TextIndicatorDismissalAnimation::FadeOut];
}
#endif // PLATFORM(MAC)
Modified: trunk/Source/WebKit/mac/WebView/WebViewInternal.h (183516 => 183517)
--- trunk/Source/WebKit/mac/WebView/WebViewInternal.h 2015-04-28 23:16:24 UTC (rev 183516)
+++ trunk/Source/WebKit/mac/WebView/WebViewInternal.h 2015-04-28 23:27:21 UTC (rev 183517)
@@ -40,6 +40,7 @@
#import <WebCore/HTMLMediaElement.h>
#import <WebCore/LayoutMilestones.h>
#import <WebCore/TextAlternativeWithRange.h>
+#import <WebCore/TextIndicatorWindow.h>
#import <WebCore/WebCoreKeyboardUIMode.h>
#import <functional>
#import <wtf/Forward.h>
@@ -258,8 +259,9 @@
- (void)_setMaintainsInactiveSelection:(BOOL)shouldMaintainInactiveSelection;
#if PLATFORM(MAC) && defined(__cplusplus)
-- (void)_setTextIndicator:(WebCore::TextIndicator*)textIndicator fadeOut:(BOOL)fadeOut;
-- (void)_clearTextIndicator;
+- (void)_setTextIndicator:(WebCore::TextIndicator&)textIndicator;
+- (void)_setTextIndicator:(WebCore::TextIndicator&)textIndicator withLifetime:(WebCore::TextIndicatorLifetime)lifetime;
+- (void)_clearTextIndicatorWithAnimation:(WebCore::TextIndicatorDismissalAnimation)animation;
- (void)_setTextIndicatorAnimationProgress:(float)progress;
- (void)_showDictionaryLookupPopup:(const DictionaryPopupInfo&)dictionaryPopupInfo;
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101000
Modified: trunk/Source/WebKit2/ChangeLog (183516 => 183517)
--- trunk/Source/WebKit2/ChangeLog 2015-04-28 23:16:24 UTC (rev 183516)
+++ trunk/Source/WebKit2/ChangeLog 2015-04-28 23:27:21 UTC (rev 183517)
@@ -1,3 +1,63 @@
+2015-04-28 Timothy Horton <[email protected]>
+
+ [TextIndicator] Yellow highlight takes too long to fade out on scroll
+ https://bugs.webkit.org/show_bug.cgi?id=144358
+ <rdar://problem/19451011>
+
+ Reviewed by Beth Dakin.
+
+ * UIProcess/API/Cocoa/WKViewPrivate.h:
+ * UIProcess/API/mac/WKView.mm:
+ (-[WKView renewGState]):
+ (-[WKView viewDidMoveToWindow]):
+ (-[WKView _dictionaryLookupPopoverWillClose:]):
+ (-[WKView _setTextIndicator:]):
+ (-[WKView _setTextIndicator:withLifetime:]):
+ (-[WKView _clearTextIndicatorWithAnimation:]):
+ (-[WKView magnifyWithEvent:]):
+ (-[WKView smartMagnifyWithEvent:]):
+ (-[WKView setMagnification:centeredAtPoint:]):
+ (-[WKView setMagnification:]):
+ (-[WKView _dismissContentRelativeChildWindows]):
+ (-[WKView _dismissContentRelativeChildWindowsWithAnimation:]):
+ (-[WKView _setTextIndicator:fadeOut:]): Deleted.
+ * UIProcess/API/mac/WKViewInternal.h:
+ * UIProcess/PageClient.h:
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::pageDidScroll):
+ (WebKit::WebPageProxy::setTextIndicator):
+ (WebKit::WebPageProxy::clearTextIndicator):
+ * UIProcess/WebPageProxy.h:
+ * UIProcess/WebPageProxy.messages.in:
+ * UIProcess/ios/PageClientImplIOS.h:
+ * UIProcess/ios/PageClientImplIOS.mm:
+ (WebKit::PageClientImpl::setTextIndicator):
+ (WebKit::PageClientImpl::clearTextIndicator):
+ * UIProcess/mac/PageClientImpl.h:
+ * UIProcess/mac/PageClientImpl.mm:
+ (WebKit::PageClientImpl::setTextIndicator):
+ (WebKit::PageClientImpl::clearTextIndicator):
+ (WebKit::PageClientImpl::didPerformDictionaryLookup):
+ (WebKit::PageClientImpl::dismissContentRelativeChildWindows):
+ * UIProcess/mac/WKActionMenuController.mm:
+ (-[WKActionMenuController _defaultMenuItemsForDataDetectedText]):
+ * UIProcess/mac/WKImmediateActionController.mm:
+ (-[WKImmediateActionController _defaultAnimationController]):
+ (-[WKImmediateActionController _animationControllerForDataDetectedText]):
+ (-[WKImmediateActionController _animationControllerForDataDetectedLink]):
+ (-[WKImmediateActionController _animationControllerForText]):
+ * WebProcess/WebPage/FindController.cpp:
+ (WebKit::FindController::updateFindIndicator):
+ Make _setTextIndicator take a reference.
+ Add a variant of _setTextIndicator that takes a Lifetime.
+ Make _clearTextIndicatorWithAnimation take a DismissalAnimation.
+ Make dismissContentRelativeChildWindows take a parameter indicating
+ whether the dismissal should include animation or not (currently
+ only applies to TextIndicator).
+ Don't animate when dismissal occurs because of scrolling, zooming,
+ or other things in which the content will have changed significantly
+ underneath the indicator and shouldn't have a slowly-fading-out yellow highlight.
+
2015-04-28 Michael Catanzaro <[email protected]>
Fully replace ENABLE_LLINT_C_LOOP with ENABLE_JIT
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h (183516 => 183517)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h 2015-04-28 23:16:24 UTC (rev 183516)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h 2015-04-28 23:27:21 UTC (rev 183517)
@@ -149,6 +149,7 @@
- (void)_completeImmediateActionAnimation;
- (void)_dismissContentRelativeChildWindows;
+- (void)_dismissContentRelativeChildWindowsWithAnimation:(BOOL)withAnimation;
- (void)_didChangeContentSize:(NSSize)newSize;
#endif
Modified: trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp (183516 => 183517)
--- trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp 2015-04-28 23:16:24 UTC (rev 183516)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp 2015-04-28 23:27:21 UTC (rev 183517)
@@ -235,11 +235,16 @@
return WebColorPickerGtk::create(*page, color, rect);
}
-void PageClientImpl::setTextIndicator(PassRefPtr<WebCore::TextIndicator>, bool /* fadeOut */)
+void PageClientImpl::setTextIndicator(Ref<WebCore::TextIndicator>, WebCore::TextIndicatorLifetime)
{
notImplemented();
}
+void PageClientImpl::clearTextIndicator(WebCore::TextIndicatorDismissalAnimation)
+{
+ notImplemented();
+}
+
void PageClientImpl::setTextIndicatorAnimationProgress(float)
{
notImplemented();
Modified: trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h (183516 => 183517)
--- trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h 2015-04-28 23:16:24 UTC (rev 183516)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h 2015-04-28 23:27:21 UTC (rev 183517)
@@ -88,7 +88,8 @@
#if ENABLE(INPUT_TYPE_COLOR)
virtual PassRefPtr<WebColorPicker> createColorPicker(WebPageProxy*, const WebCore::Color& intialColor, const WebCore::IntRect&) override;
#endif
- virtual void setTextIndicator(PassRefPtr<WebCore::TextIndicator>, bool fadeOut) override;
+ virtual void setTextIndicator(Ref<WebCore::TextIndicator>, WebCore::TextIndicatorLifetime = WebCore::TextIndicatorLifetime::Permanent) override;
+ virtual void clearTextIndicator(WebCore::TextIndicatorDismissalAnimation = WebCore::TextIndicatorDismissalAnimation::FadeOut) override;
virtual void setTextIndicatorAnimationProgress(float) override;
virtual void getEditorCommandsForKeyEvent(const NativeWebKeyboardEvent&, const AtomicString&, Vector<WTF::String>&) override;
virtual void updateTextInputState() override;
Modified: trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm (183516 => 183517)
--- trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm 2015-04-28 23:16:24 UTC (rev 183516)
+++ trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm 2015-04-28 23:27:21 UTC (rev 183517)
@@ -602,7 +602,7 @@
- (void)renewGState
{
if (_data->_textIndicatorWindow)
- [self _dismissContentRelativeChildWindows];
+ [self _dismissContentRelativeChildWindowsWithAnimation:NO];
// Update the view frame.
if ([self window])
@@ -2760,7 +2760,7 @@
[NSEvent removeMonitor:_data->_flagsChangedEventMonitor];
_data->_flagsChangedEventMonitor = nil;
- [self _dismissContentRelativeChildWindows];
+ [self _dismissContentRelativeChildWindowsWithAnimation:NO];
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101000
if (_data->_immediateActionGestureRecognizer)
@@ -2896,7 +2896,7 @@
- (void)_dictionaryLookupPopoverWillClose:(NSNotification *)notification
{
- [self _setTextIndicator:nil fadeOut:NO];
+ [self _clearTextIndicatorWithAnimation:TextIndicatorDismissalAnimation::None];
}
- (void)_accessibilityRegisterUIProcessTokens
@@ -3282,20 +3282,27 @@
}
}
-- (void)_setTextIndicator:(PassRefPtr<TextIndicator>)textIndicator fadeOut:(BOOL)fadeOut
+- (void)_setTextIndicator:(TextIndicator&)textIndicator
{
- if (!textIndicator) {
- _data->_textIndicatorWindow = nullptr;
- return;
- }
+ [self _setTextIndicator:textIndicator withLifetime:TextIndicatorLifetime::Permanent];
+}
+- (void)_setTextIndicator:(TextIndicator&)textIndicator withLifetime:(TextIndicatorLifetime)lifetime
+{
if (!_data->_textIndicatorWindow)
_data->_textIndicatorWindow = std::make_unique<TextIndicatorWindow>(self);
- NSRect textBoundingRectInScreenCoordinates = [self.window convertRectToScreen:[self convertRect:textIndicator->textBoundingRectInRootViewCoordinates() toView:nil]];
- _data->_textIndicatorWindow->setTextIndicator(textIndicator, NSRectToCGRect(textBoundingRectInScreenCoordinates), fadeOut);
+ NSRect textBoundingRectInScreenCoordinates = [self.window convertRectToScreen:[self convertRect:textIndicator.textBoundingRectInRootViewCoordinates() toView:nil]];
+ _data->_textIndicatorWindow->setTextIndicator(textIndicator, NSRectToCGRect(textBoundingRectInScreenCoordinates), lifetime);
}
+- (void)_clearTextIndicatorWithAnimation:(TextIndicatorDismissalAnimation)animation
+{
+ if (_data->_textIndicatorWindow)
+ _data->_textIndicatorWindow->clearTextIndicator(animation);
+ _data->_textIndicatorWindow = nullptr;
+}
+
- (void)_setTextIndicatorAnimationProgress:(float)progress
{
if (_data->_textIndicatorWindow)
@@ -4538,7 +4545,7 @@
return;
}
- [self _dismissContentRelativeChildWindows];
+ [self _dismissContentRelativeChildWindowsWithAnimation:NO];
[self _ensureGestureController];
@@ -4555,7 +4562,7 @@
return;
}
- [self _dismissContentRelativeChildWindows];
+ [self _dismissContentRelativeChildWindowsWithAnimation:NO];
[self _ensureGestureController];
@@ -4567,7 +4574,7 @@
if (magnification <= 0 || isnan(magnification) || isinf(magnification))
[NSException raise:NSInvalidArgumentException format:@"Magnification should be a positive number"];
- [self _dismissContentRelativeChildWindows];
+ [self _dismissContentRelativeChildWindowsWithAnimation:NO];
_data->_page->scalePageInViewCoordinates(magnification, roundedIntPoint(point));
}
@@ -4577,7 +4584,7 @@
if (magnification <= 0 || isnan(magnification) || isinf(magnification))
[NSException raise:NSInvalidArgumentException format:@"Magnification should be a positive number"];
- [self _dismissContentRelativeChildWindows];
+ [self _dismissContentRelativeChildWindowsWithAnimation:NO];
FloatPoint viewCenter(NSMidX([self bounds]), NSMidY([self bounds]));
_data->_page->scalePageInViewCoordinates(magnification, roundedIntPoint(viewCenter));
@@ -4675,9 +4682,9 @@
// FIXME: We don't know which panel we are dismissing, it may not even be in the current page (see <rdar://problem/13875766>).
if ([[self window] isKeyWindow]
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101000
- || [_data->_immediateActionController hasActiveImmediateAction]
+ || [_data->_immediateActionController hasActiveImmediateAction]
#endif
- ) {
+ ) {
if (Class lookupDefinitionModuleClass = getLULookupDefinitionModuleClass())
[lookupDefinitionModuleClass hideDefinition];
@@ -4686,7 +4693,7 @@
[actionsManager requestBubbleClosureUnanchorOnFailure:YES];
}
- [self _setTextIndicator:nullptr fadeOut:NO];
+ [self _clearTextIndicatorWithAnimation:TextIndicatorDismissalAnimation::FadeOut];
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101000
[_data->_immediateActionController dismissContentRelativeChildWindows];
@@ -4695,6 +4702,14 @@
static_cast<PageClient&>(*_data->_pageClient).dismissCorrectionPanel(ReasonForDismissingAlternativeTextIgnored);
}
+- (void)_dismissContentRelativeChildWindowsWithAnimation:(BOOL)withAnimation
+{
+ // Calling _clearTextIndicatorWithAnimation here will win out over the animated clear in _dismissContentRelativeChildWindows.
+ // We can't invert these because clients can override (and have overridden) _dismissContentRelativeChildWindows, so it needs to be called.
+ [self _clearTextIndicatorWithAnimation:withAnimation ? TextIndicatorDismissalAnimation::FadeOut : TextIndicatorDismissalAnimation::None];
+ [self _dismissContentRelativeChildWindows];
+}
+
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101000
- (void)_setAutomaticallyAdjustsContentInsets:(BOOL)automaticallyAdjustsContentInsets
Modified: trunk/Source/WebKit2/UIProcess/API/mac/WKViewInternal.h (183516 => 183517)
--- trunk/Source/WebKit2/UIProcess/API/mac/WKViewInternal.h 2015-04-28 23:16:24 UTC (rev 183516)
+++ trunk/Source/WebKit2/UIProcess/API/mac/WKViewInternal.h 2015-04-28 23:27:21 UTC (rev 183517)
@@ -85,7 +85,9 @@
- (void)_setIntrinsicContentSize:(NSSize)intrinsicContentSize;
- (NSRect)_convertToDeviceSpace:(NSRect)rect;
- (NSRect)_convertToUserSpace:(NSRect)rect;
-- (void)_setTextIndicator:(PassRefPtr<WebCore::TextIndicator>)textIndicator fadeOut:(BOOL)fadeOut;
+- (void)_setTextIndicator:(WebCore::TextIndicator&)textIndicator;
+- (void)_setTextIndicator:(WebCore::TextIndicator&)textIndicator withLifetime:(WebCore::TextIndicatorLifetime)lifetime;
+- (void)_clearTextIndicatorWithAnimation:(WebCore::TextIndicatorDismissalAnimation)animation;
- (void)_setTextIndicatorAnimationProgress:(float)progress;
- (void)_selectionChanged;
Modified: trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.cpp (183516 => 183517)
--- trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.cpp 2015-04-28 23:16:24 UTC (rev 183516)
+++ trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.cpp 2015-04-28 23:27:21 UTC (rev 183517)
@@ -450,11 +450,16 @@
}
#endif
-void WebView::setTextIndicator(PassRefPtr<WebCore::TextIndicator>, bool)
+void WebView::setTextIndicator(Ref<WebCore::TextIndicator>, WebCore::TextIndicatorLifetime)
{
notImplemented();
}
+void WebView::clearTextIndicator(WebCore::TextIndicatorDismissalAnimation)
+{
+ notImplemented();
+}
+
void WebView::setTextIndicatorAnimationProgress(float)
{
notImplemented();
Modified: trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.h (183516 => 183517)
--- trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.h 2015-04-28 23:16:24 UTC (rev 183516)
+++ trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.h 2015-04-28 23:27:21 UTC (rev 183517)
@@ -181,7 +181,8 @@
virtual PassRefPtr<WebColorPicker> createColorPicker(WebPageProxy*, const WebCore::Color& initialColor, const WebCore::IntRect&) override;
#endif
- virtual void setTextIndicator(PassRefPtr<WebCore::TextIndicator>, bool) override;
+ virtual void setTextIndicator(Ref<WebCore::TextIndicator>, WebCore::TextIndicatorLifetime = WebCore::TextIndicatorLifetime::Permanent) override;
+ virtual void clearTextIndicator(WebCore::TextIndicatorDismissalAnimation = WebCore::TextIndicatorDismissalAnimation::FadeOut) override;
virtual void setTextIndicatorAnimationProgress(float) override;
virtual void enterAcceleratedCompositingMode(const LayerTreeContext&) override;
Modified: trunk/Source/WebKit2/UIProcess/PageClient.h (183516 => 183517)
--- trunk/Source/WebKit2/UIProcess/PageClient.h 2015-04-28 23:16:24 UTC (rev 183516)
+++ trunk/Source/WebKit2/UIProcess/PageClient.h 2015-04-28 23:27:21 UTC (rev 183517)
@@ -220,7 +220,8 @@
virtual PassRefPtr<WebColorPicker> createColorPicker(WebPageProxy*, const WebCore::Color& initialColor, const WebCore::IntRect&) = 0;
#endif
- virtual void setTextIndicator(PassRefPtr<WebCore::TextIndicator>, bool fadeOut) = 0;
+ virtual void setTextIndicator(Ref<WebCore::TextIndicator>, WebCore::TextIndicatorLifetime = WebCore::TextIndicatorLifetime::Permanent) = 0;
+ virtual void clearTextIndicator(WebCore::TextIndicatorDismissalAnimation = WebCore::TextIndicatorDismissalAnimation::FadeOut) = 0;
virtual void setTextIndicatorAnimationProgress(float) = 0;
virtual void enterAcceleratedCompositingMode(const LayerTreeContext&) = 0;
@@ -231,7 +232,7 @@
virtual void pluginFocusOrWindowFocusChanged(uint64_t pluginComplexTextInputIdentifier, bool pluginHasFocusAndWindowHasFocus) = 0;
virtual void setPluginComplexTextInputState(uint64_t pluginComplexTextInputIdentifier, PluginComplexTextInputState) = 0;
virtual void didPerformDictionaryLookup(const DictionaryPopupInfo&) = 0;
- virtual void dismissContentRelativeChildWindows() = 0;
+ virtual void dismissContentRelativeChildWindows(bool withAnimation = true) = 0;
virtual void showCorrectionPanel(WebCore::AlternativeTextType, const WebCore::FloatRect& boundingBoxOfReplacedString, const String& replacedString, const String& replacementString, const Vector<String>& alternativeReplacementStrings) = 0;
virtual void dismissCorrectionPanel(WebCore::ReasonForDismissingAlternativeText) = 0;
virtual String dismissCorrectionPanelSoon(WebCore::ReasonForDismissingAlternativeText) = 0;
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (183516 => 183517)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2015-04-28 23:16:24 UTC (rev 183516)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2015-04-28 23:27:21 UTC (rev 183517)
@@ -3646,7 +3646,7 @@
{
m_uiClient->pageDidScroll(this);
#if PLATFORM(MAC)
- m_pageClient.dismissContentRelativeChildWindows();
+ m_pageClient.dismissContentRelativeChildWindows(false);
#endif
}
@@ -3899,14 +3899,14 @@
m_findMatchesClient.didGetImageForMatchResult(this, WebImage::create(ShareableBitmap::create(contentImageHandle)).get(), matchIndex);
}
-void WebPageProxy::setTextIndicator(const TextIndicatorData& indicatorData, bool fadeOut)
+void WebPageProxy::setTextIndicator(const TextIndicatorData& indicatorData, uint64_t lifetime)
{
- m_pageClient.setTextIndicator(TextIndicator::create(indicatorData), fadeOut);
+ m_pageClient.setTextIndicator(*TextIndicator::create(indicatorData), static_cast<TextIndicatorLifetime>(lifetime));
}
void WebPageProxy::clearTextIndicator()
{
- m_pageClient.setTextIndicator(nullptr, false);
+ m_pageClient.clearTextIndicator();
}
void WebPageProxy::setTextIndicatorAnimationProgress(float progress)
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (183516 => 183517)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2015-04-28 23:16:24 UTC (rev 183516)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2015-04-28 23:27:21 UTC (rev 183517)
@@ -728,7 +728,7 @@
void hideFindUI();
void countStringMatches(const String&, FindOptions, unsigned maxMatchCount);
void didCountStringMatches(const String&, uint32_t matchCount);
- void setTextIndicator(const WebCore::TextIndicatorData&, bool fadeOut);
+ void setTextIndicator(const WebCore::TextIndicatorData&, uint64_t /* WebCore::TextIndicatorLifetime */ lifetime = (uint64_t)WebCore::TextIndicatorLifetime::Permanent);
void setTextIndicatorAnimationProgress(float);
void clearTextIndicator();
void didFindString(const String&, uint32_t matchCount, int32_t matchIndex);
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in (183516 => 183517)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in 2015-04-28 23:16:24 UTC (rev 183516)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in 2015-04-28 23:27:21 UTC (rev 183517)
@@ -236,7 +236,7 @@
# Find messages
DidCountStringMatches(String string, uint32_t matchCount)
- SetTextIndicator(struct WebCore::TextIndicatorData indicator, bool fadeOut)
+ SetTextIndicator(struct WebCore::TextIndicatorData indicator, uint64_t lifetime)
ClearTextIndicator()
DidFindString(String string, uint32_t matchCount, int32_t matchIndex)
DidFailToFindString(String string)
Modified: trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.h (183516 => 183517)
--- trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.h 2015-04-28 23:16:24 UTC (rev 183516)
+++ trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.h 2015-04-28 23:27:21 UTC (rev 183517)
@@ -99,7 +99,8 @@
#endif
virtual PassRefPtr<WebPopupMenuProxy> createPopupMenuProxy(WebPageProxy*) override;
virtual PassRefPtr<WebContextMenuProxy> createContextMenuProxy(WebPageProxy*) override;
- virtual void setTextIndicator(PassRefPtr<WebCore::TextIndicator>, bool fadeOut) override;
+ virtual void setTextIndicator(Ref<WebCore::TextIndicator>, WebCore::TextIndicatorLifetime = WebCore::TextIndicatorLifetime::Permanent) override;
+ virtual void clearTextIndicator(WebCore::TextIndicatorDismissalAnimation = WebCore::TextIndicatorDismissalAnimation::FadeOut) override;
virtual void setTextIndicatorAnimationProgress(float) override;
virtual void enterAcceleratedCompositingMode(const LayerTreeContext&) override;
Modified: trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm (183516 => 183517)
--- trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm 2015-04-28 23:16:24 UTC (rev 183516)
+++ trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm 2015-04-28 23:27:21 UTC (rev 183517)
@@ -453,10 +453,14 @@
return 0;
}
-void PageClientImpl::setTextIndicator(PassRefPtr<TextIndicator> textIndicator, bool fadeOut)
+void PageClientImpl::setTextIndicator(Ref<TextIndicator> textIndicator, TextIndicatorLifetime)
{
}
+void PageClientImpl::clearTextIndicator(TextIndicatorDismissalAnimation)
+{
+}
+
void PageClientImpl::setTextIndicatorAnimationProgress(float)
{
}
Modified: trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.h (183516 => 183517)
--- trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.h 2015-04-28 23:16:24 UTC (rev 183516)
+++ trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.h 2015-04-28 23:27:21 UTC (rev 183517)
@@ -127,7 +127,8 @@
virtual PassRefPtr<WebColorPicker> createColorPicker(WebPageProxy*, const WebCore::Color& initialColor, const WebCore::IntRect&) override;
#endif
- virtual void setTextIndicator(PassRefPtr<WebCore::TextIndicator>, bool fadeOut) override;
+ virtual void setTextIndicator(Ref<WebCore::TextIndicator>, WebCore::TextIndicatorLifetime = WebCore::TextIndicatorLifetime::Permanent) override;
+ virtual void clearTextIndicator(WebCore::TextIndicatorDismissalAnimation = WebCore::TextIndicatorDismissalAnimation::FadeOut) override;
virtual void setTextIndicatorAnimationProgress(float) override;
virtual void enterAcceleratedCompositingMode(const LayerTreeContext&) override;
@@ -145,7 +146,7 @@
virtual void makeFirstResponder() override;
virtual void didPerformDictionaryLookup(const DictionaryPopupInfo&) override;
- virtual void dismissContentRelativeChildWindows() override;
+ virtual void dismissContentRelativeChildWindows(bool withAnimation = true) override;
virtual void showCorrectionPanel(WebCore::AlternativeTextType, const WebCore::FloatRect& boundingBoxOfReplacedString, const String& replacedString, const String& replacementString, const Vector<String>& alternativeReplacementStrings) override;
virtual void dismissCorrectionPanel(WebCore::ReasonForDismissingAlternativeText) override;
Modified: trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.mm (183516 => 183517)
--- trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.mm 2015-04-28 23:16:24 UTC (rev 183516)
+++ trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.mm 2015-04-28 23:27:21 UTC (rev 183517)
@@ -503,11 +503,16 @@
}
#endif
-void PageClientImpl::setTextIndicator(PassRefPtr<TextIndicator> textIndicator, bool fadeOut)
+void PageClientImpl::setTextIndicator(Ref<TextIndicator> textIndicator, WebCore::TextIndicatorLifetime lifetime)
{
- [m_wkView _setTextIndicator:textIndicator fadeOut:fadeOut];
+ [m_wkView _setTextIndicator:textIndicator.get() withLifetime:lifetime];
}
+void PageClientImpl::clearTextIndicator(WebCore::TextIndicatorDismissalAnimation dismissalAnimation)
+{
+ [m_wkView _clearTextIndicatorWithAnimation:dismissalAnimation];
+}
+
void PageClientImpl::setTextIndicatorAnimationProgress(float progress)
{
[m_wkView _setTextIndicatorAnimationProgress:progress];
@@ -589,16 +594,16 @@
RetainPtr<NSMutableDictionary> mutableOptions = adoptNS([(NSDictionary *)dictionaryPopupInfo.options.get() mutableCopy]);
if (canLoadLUTermOptionDisableSearchTermIndicator() && dictionaryPopupInfo.textIndicator.contentImage) {
- [m_wkView _setTextIndicator:TextIndicator::create(dictionaryPopupInfo.textIndicator) fadeOut:NO];
+ [m_wkView _setTextIndicator:*TextIndicator::create(dictionaryPopupInfo.textIndicator) withLifetime:TextIndicatorLifetime::Permanent];
[mutableOptions setObject:@YES forKey:getLUTermOptionDisableSearchTermIndicator()];
[getLULookupDefinitionModuleClass() showDefinitionForTerm:dictionaryPopupInfo.attributedString.string.get() atLocation:textBaselineOrigin options:mutableOptions.get()];
} else
[getLULookupDefinitionModuleClass() showDefinitionForTerm:dictionaryPopupInfo.attributedString.string.get() atLocation:textBaselineOrigin options:mutableOptions.get()];
}
-void PageClientImpl::dismissContentRelativeChildWindows()
+void PageClientImpl::dismissContentRelativeChildWindows(bool withAnimation)
{
- [m_wkView _dismissContentRelativeChildWindows];
+ [m_wkView _dismissContentRelativeChildWindowsWithAnimation:withAnimation];
}
void PageClientImpl::showCorrectionPanel(AlternativeTextType type, const FloatRect& boundingBoxOfReplacedString, const String& replacedString, const String& replacementString, const Vector<String>& alternativeReplacementStrings)
Modified: trunk/Source/WebKit2/UIProcess/mac/WKActionMenuController.mm (183516 => 183517)
--- trunk/Source/WebKit2/UIProcess/mac/WKActionMenuController.mm 2015-04-28 23:16:24 UTC (rev 183516)
+++ trunk/Source/WebKit2/UIProcess/mac/WKActionMenuController.mm 2015-04-28 23:27:21 UTC (rev 183517)
@@ -377,7 +377,7 @@
page->send(Messages::WebPage::DataDetectorsDidPresentUI(overlayID));
} interactionChangedHandler:^() {
if (_hitTestResultData.detectedDataTextIndicator)
- page->setTextIndicator(_hitTestResultData.detectedDataTextIndicator->data(), false);
+ page->setTextIndicator(_hitTestResultData.detectedDataTextIndicator->data());
page->send(Messages::WebPage::DataDetectorsDidChangeUI(overlayID));
} interactionStoppedHandler:^() {
page->send(Messages::WebPage::DataDetectorsDidHideUI(overlayID));
Modified: trunk/Source/WebKit2/UIProcess/mac/WKImmediateActionController.mm (183516 => 183517)
--- trunk/Source/WebKit2/UIProcess/mac/WKImmediateActionController.mm 2015-04-28 23:16:24 UTC (rev 183516)
+++ trunk/Source/WebKit2/UIProcess/mac/WKImmediateActionController.mm 2015-04-28 23:27:21 UTC (rev 183517)
@@ -294,7 +294,7 @@
_currentQLPreviewMenuItem = item;
if (TextIndicator *textIndicator = _hitTestResultData.linkTextIndicator.get())
- _page->setTextIndicator(textIndicator->data(), false);
+ _page->setTextIndicator(textIndicator->data());
return (id<NSImmediateActionAnimationController>)item;
}
@@ -406,7 +406,7 @@
page->send(Messages::WebPage::DataDetectorsDidPresentUI(overlayID));
} interactionChangedHandler:^() {
if (_hitTestResultData.detectedDataTextIndicator)
- page->setTextIndicator(_hitTestResultData.detectedDataTextIndicator->data(), false);
+ page->setTextIndicator(_hitTestResultData.detectedDataTextIndicator->data());
page->send(Messages::WebPage::DataDetectorsDidChangeUI(overlayID));
} interactionStoppedHandler:^() {
page->send(Messages::WebPage::DataDetectorsDidHideUI(overlayID));
@@ -437,7 +437,7 @@
_currentActionContext = [actionContext contextForView:_wkView altMode:YES interactionStartedHandler:^() {
} interactionChangedHandler:^() {
if (_hitTestResultData.linkTextIndicator)
- page->setTextIndicator(_hitTestResultData.linkTextIndicator->data(), false);
+ page->setTextIndicator(_hitTestResultData.linkTextIndicator->data());
} interactionStoppedHandler:^() {
[self _clearImmediateActionState];
}];
@@ -474,7 +474,8 @@
RetainPtr<NSMutableDictionary> mutableOptions = adoptNS([(NSDictionary *)dictionaryPopupInfo.options.get() mutableCopy]);
if (canLoadLUTermOptionDisableSearchTermIndicator() && dictionaryPopupInfo.textIndicator.contentImage) {
- [_wkView _setTextIndicator:TextIndicator::create(dictionaryPopupInfo.textIndicator) fadeOut:NO];
+ RefPtr<TextIndicator> indicator = TextIndicator::create(dictionaryPopupInfo.textIndicator);
+ [_wkView _setTextIndicator:*indicator withLifetime:TextIndicatorLifetime::Permanent];
[mutableOptions setObject:@YES forKey:getLUTermOptionDisableSearchTermIndicator()];
return [getLULookupDefinitionModuleClass() lookupAnimationControllerForTerm:dictionaryPopupInfo.attributedString.string.get() atLocation:textBaselineOrigin options:mutableOptions.get()];
}
Modified: trunk/Source/WebKit2/WebProcess/WebPage/FindController.cpp (183516 => 183517)
--- trunk/Source/WebKit2/WebProcess/WebPage/FindController.cpp 2015-04-28 23:16:24 UTC (rev 183516)
+++ trunk/Source/WebKit2/WebProcess/WebPage/FindController.cpp 2015-04-28 23:27:21 UTC (rev 183517)
@@ -322,7 +322,7 @@
return false;
m_findIndicatorRect = enclosingIntRect(indicator->selectionRectInRootViewCoordinates());
- m_webPage->send(Messages::WebPageProxy::SetTextIndicator(indicator->data(), !isShowingOverlay));
+ m_webPage->send(Messages::WebPageProxy::SetTextIndicator(indicator->data(), static_cast<uint64_t>(isShowingOverlay ? TextIndicatorLifetime::Permanent : TextIndicatorLifetime::Temporary)));
m_isShowingFindIndicator = true;
return true;