From: Changhyup Jwa Date: Mon, 10 Jun 2013 08:16:53 +0000 (+0900) Subject: Enable input field zoom on user scalable contents even caret is visible X-Git-Tag: submit/tizen_2.2/20130714.131554~133 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a859137241517ac470eba83b53b9c2cb686aa6f7;p=framework%2Fweb%2Fwebkit-efl.git Enable input field zoom on user scalable contents even caret is visible [Title] Enable input field zoom on user scalable contents even caret is visible [Issue#] N_SE-39317 [Problem] Caret position is placed right side on webview [Cause] Scroll position is not updated on input field zooming if caret is visible [Solution] Update scroll position if content is user scalable Change-Id: I705c6cdb2ca6b7ee184300ad134c4b30f5460e50 --- diff --git a/Source/WebKit2/UIProcess/API/efl/PageClientImpl.h b/Source/WebKit2/UIProcess/API/efl/PageClientImpl.h index a248428..99c2b6d 100755 --- a/Source/WebKit2/UIProcess/API/efl/PageClientImpl.h +++ b/Source/WebKit2/UIProcess/API/efl/PageClientImpl.h @@ -51,6 +51,7 @@ #if ENABLE(TIZEN_WEBKIT2_FORM_DATABASE) #include "FormDataCandidate.h" #endif +using std::numeric_limits; #endif // #if OS(TIZEN) class EwkViewImpl; @@ -106,6 +107,7 @@ public: WebCore::IntSize layoutSize; }; + bool userScalable() { return fabs(m_viewportConstraints.minimumScale - m_viewportConstraints.maximumScale) > numeric_limits::epsilon(); } ViewportConstraints viewportConstraints() { return m_viewportConstraints; } ViewportConstraints computeViewportConstraints(const WebCore::ViewportAttributes&); double adjustScaleWithViewport(double); diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp b/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp index 1afe539..62ff9e6 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp +++ b/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp @@ -2511,8 +2511,8 @@ bool ewk_view_focused_node_adjust(Evas_Object* ewkView, Eina_Bool adjustForExter IntRect visibleRect = impl->pageClient->visibleContentRect(); IntPoint scrollPosition = visibleRect.location(); - // Do not adjust scroll position if selection rect (caret) is visible after scaling. - if (!visibleRect.contains(selectionRect)) { + // Do not adjust scroll position if content is userscalable or selection rect (caret) is visible after scaling + if (impl->pageClient->userScalable() || !visibleRect.contains(selectionRect)) { // set paddings scrollPosition = IntPoint(selectionRect.x() - visibleRect.width() / 3, selectionRect.y() - visibleRect.height() / 3); // If both input field's position x and selection rect can be displayed together,