Skip to content

Commit

Permalink
Merge pull request #23 from antseppa/noreposition
Browse files Browse the repository at this point in the history
[qtwebkit] Added experimental.repositionInputField property
  • Loading branch information
Raine Mäkeläinen committed May 19, 2015
2 parents c264d1d + bf9b564 commit c3785a4
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 2 deletions.
32 changes: 32 additions & 0 deletions qtwebkit/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp
Expand Up @@ -316,6 +316,7 @@ QQuickWebViewPrivate::QQuickWebViewPrivate(QQuickWebView* viewport)
, m_autoCorrect(false)
, m_temporaryCookies(false)
, m_loadProgress(0)
, m_enableInputFieldAnimation(true)
{
viewport->setClip(true);
viewport->setPixelAligned(true);
Expand Down Expand Up @@ -1350,6 +1351,37 @@ bool QQuickWebViewExperimental::firstFrameRendered() const
return d->m_firstFrameRendered;
}


bool QQuickWebViewExperimental::enableInputFieldAnimation() const
{
Q_D(const QQuickWebView);
return d->m_enableInputFieldAnimation;
}

void QQuickWebViewExperimental::setEnableInputFieldAnimation(bool enableInputFieldAnimation)
{
Q_D(QQuickWebView);

if (d->m_enableInputFieldAnimation == enableInputFieldAnimation)
return;

d->m_enableInputFieldAnimation = enableInputFieldAnimation;
emit enableInputFieldAnimationChanged();
}

void QQuickWebViewExperimental::animateInputFieldVisible()
{
Q_D(QQuickWebView);

const EditorState& editor = d->webPageProxy->editorState();
if (editor.isContentEditable) {
PageViewportControllerClientQt* viewportControllerClient = d->viewportControllerClient();
if (viewportControllerClient) {
viewportControllerClient->focusEditableArea(QRectF(editor.cursorRect), QRectF(editor.editorRect), true);
}
}
}

/*!
\internal
Expand Down
6 changes: 6 additions & 0 deletions qtwebkit/Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h
Expand Up @@ -291,6 +291,7 @@ class QWEBKIT_EXPORT QQuickWebViewExperimental : public QObject {
Q_PROPERTY(QList<QUrl> userScripts READ userScripts WRITE setUserScripts NOTIFY userScriptsChanged)
Q_PROPERTY(QUrl userStyleSheet READ userStyleSheet WRITE setUserStyleSheet NOTIFY userStyleSheetChanged)
Q_PROPERTY(QUrl remoteInspectorUrl READ remoteInspectorUrl NOTIFY remoteInspectorUrlChanged FINAL)
Q_PROPERTY(bool enableInputFieldAnimation READ enableInputFieldAnimation WRITE setEnableInputFieldAnimation NOTIFY enableInputFieldAnimationChanged)
Q_ENUMS(NavigationRequestActionExperimental)
Q_FLAGS(FindFlags)

Expand Down Expand Up @@ -344,6 +345,10 @@ class QWEBKIT_EXPORT QQuickWebViewExperimental : public QObject {
QUrl userStyleSheet() const;
void setUserStyleSheet(const QUrl& userStyleSheet);
QUrl remoteInspectorUrl() const;
bool enableInputFieldAnimation() const;
void setEnableInputFieldAnimation(bool enableInputFieldAnimation);

Q_INVOKABLE void animateInputFieldVisible();

QWebKitTest* test();

Expand Down Expand Up @@ -432,6 +437,7 @@ public Q_SLOTS:
void customLayoutWidthChanged();
void overviewChanged();
void pinchingChanged();
void enableInputFieldAnimationChanged();

void temporaryCookiesChanged();
void textFound(int matchCount);
Expand Down
4 changes: 4 additions & 0 deletions qtwebkit/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h
Expand Up @@ -92,6 +92,8 @@ class QQuickWebViewPrivate {
void didRenderFrame();

virtual WebKit::PageViewportController* viewportController() const { return 0; }
virtual WebKit::PageViewportControllerClientQt* viewportControllerClient() const { return 0; }

virtual void updateViewportSize() { }
void updateTouchViewportSize();

Expand Down Expand Up @@ -242,6 +244,7 @@ class QQuickWebViewPrivate {
int m_loadProgress;
QString m_currentUrl;
bool m_pinching;
bool m_enableInputFieldAnimation;
};

class QQuickWebViewLegacyPrivate : public QQuickWebViewPrivate {
Expand All @@ -266,6 +269,7 @@ class QQuickWebViewFlickablePrivate : public QQuickWebViewPrivate {

virtual void didChangeViewportProperties(const WebCore::ViewportAttributes&);
virtual WebKit::PageViewportController* viewportController() const { return m_pageViewportController.data(); }
virtual WebKit::PageViewportControllerClientQt* viewportControllerClient() const { return m_pageViewportControllerClient.data(); }
virtual void updateViewportSize();

virtual void pageDidRequestScroll(const QPoint& pos);
Expand Down
Expand Up @@ -208,11 +208,16 @@ void PageViewportControllerClientQt::touchEnd()
m_touchInteraction.end();
}

void PageViewportControllerClientQt::focusEditableArea(const QRectF& caretArea, const QRectF& targetArea)
void PageViewportControllerClientQt::focusEditableArea(const QRectF& caretArea,
const QRectF& targetArea,
bool userTriggered)
{
// This can only happen as a result of a user interaction.
ASSERT(m_controller->hadUserInteraction());

if (!userTriggered && m_viewportItem->experimental()->enableInputFieldAnimation() == false)
return;

const float editingFixedScale = 2;
float targetScale = m_controller->innerBoundedViewportScale(editingFixedScale);
const QRectF viewportRect = m_viewportItem->boundingRect();
Expand Down
Expand Up @@ -77,7 +77,7 @@ class PageViewportControllerClientQt : public QObject, public PageViewportContro
void pinchGestureCancelled();

void zoomToAreaGestureEnded(const QPointF& touchPoint, const QRectF& targetArea);
void focusEditableArea(const QRectF& caretArea, const QRectF& targetArea);
void focusEditableArea(const QRectF& caretArea, const QRectF& targetArea, bool userTriggered = false);

private Q_SLOTS:
// Respond to changes of position that are not driven by us.
Expand Down

0 comments on commit c3785a4

Please sign in to comment.