, m_viewFocused(false)
, m_viewWindowActive(true)
, m_pageDidRendered(true)
- , m_viewportAngle(0)
+ , m_viewResizeCount(0)
, m_viewportFitsToContent(false)
#if ENABLE(TIZEN_WEBKIT2_TILED_BACKING_STORE)
, m_visibleContentRect(IntRect())
#if ENABLE(TIZEN_WEBKIT2_FORM_DATABASE)
m_autoFillManager = AutoFillManager::create(m_viewImpl);
#endif
- Ecore_Evas* ee = ecore_evas_ecore_evas_get(evas_object_evas_get(m_viewImpl->view()));
- m_viewportAngle = ecore_evas_rotation_get(ee);
#endif
setBackgroundColor(1, 1, 1, 1);
#if USE(TILED_BACKING_STORE) && ENABLE(TIZEN_WEBKIT2_TILED_BACKING_STORE)
void PageClientImpl::updateViewportSize(const IntSize& viewportSize, const int angle)
{
+ // save current visible content rect ratio per contents' size
+ m_viewResizeCount++;
+
#if ENABLE(TIZEN_DLOG_SUPPORT)
- TIZEN_LOGI(" view size: [%d, %d], angle: [%d]", viewportSize.width(), viewportSize.height(), angle);
+ TIZEN_LOGI(" view size: [%d, %d], scale: [%.2f, %.2f, %.2f], resizeCount: [%d]", viewportSize.width(), viewportSize.height(),
+ m_scaleFactor, m_viewportConstraints.minimumScale, m_viewportConstraints.maximumScale, m_viewResizeCount);
#endif
#if ENABLE(TIZEN_WEBKIT2_VIEW_VISIBILITY)
if (m_deferUpdateViewportSize) {
void PageClientImpl::didChangeViewportProperties(const WebCore::ViewportAttributes& attributes)
{
- double scaleRatioBeforeRotation = m_scaleFactor / m_viewportConstraints.minimumScale;
+ m_viewResizeCount = max(m_viewResizeCount - 1, 0);
+ if (m_viewResizeCount)
+ return;
+
+ float scaleRatioBeforeResize = m_scaleFactor / m_viewportConstraints.minimumScale;
+
m_viewportConstraints = computeViewportConstraints(attributes);
// Initially, m_scaleFactor is not decided yet.
#endif
// setVisibleContentRect() should be called to adjust visible content rect only when view is resized
- if (!m_pageDidRendered || m_viewImpl->page()->estimatedProgress() <= 0.1)
+ if (!canUpdateVisibleContentRect())
return;
// if IME is opened, visible content rect will be updated by ewk_view_focused_node_adjust()
float newScale = scaleFactor();
IntPoint newScrollPosition = m_visibleContentRect.location();
- Ecore_Evas* ee = ecore_evas_ecore_evas_get(evas_object_evas_get(m_viewImpl->view()));
- int angle = ecore_evas_rotation_get(ee);
- bool isRotated = (angle != m_viewportAngle);
-
- // if it's rotated, we need to fit content to viewport by minimize the scale
- if (isRotated) {
- m_viewportAngle = angle;
- newScale = m_viewportConstraints.minimumScale * scaleRatioBeforeRotation;
- if (m_viewportFitsToContent)
- newScale = m_viewportConstraints.minimumScale;
- newScrollPosition.scale(newScale / m_scaleFactor, newScale / m_scaleFactor);
- }
+
+ // we need to keep visible content rect after resizing view
+ newScale = m_viewportConstraints.minimumScale * scaleRatioBeforeResize;
+ if (m_viewportFitsToContent)
+ newScale = m_viewportConstraints.minimumScale;
+ newScrollPosition.scale(newScale / m_scaleFactor, newScale / m_scaleFactor);
#if ENABLE(TIZEN_PRERENDERING_FOR_ROTATION)
if (m_waitFrameOfNewViewortSize)
ewk_view_resume(m_viewImpl->view());
#endif
#if ENABLE(TIZEN_DLOG_SUPPORT)
- TIZEN_LOGI("scroll position: [%d, %d], scale factor: [%.2f], rotated: [%s]", m_visibleContentRect.x(), m_visibleContentRect.y(), newScale, isRotated ? "Rotated" : "Not rotated");
+ TIZEN_LOGI("scroll position: [%d, %d], new scale: [%.2f], ratio: [%.2f], fitted: [%s]", m_visibleContentRect.x(), m_visibleContentRect.y(), newScale, scaleRatioBeforeResize, m_viewportFitsToContent ? "Fitted" : "Not fitted");
#endif
#if ENABLE(TIZEN_WEBKIT2_TILED_BACKING_STORE)
#else
m_viewImpl->informContentsSizeChange(size);
#endif
- if (!m_pageDidRendered || m_viewImpl->page()->estimatedProgress() <= 0.1)
+ if (!canUpdateVisibleContentRect())
return;
// FIXME: Do we really need to adjust visible content rect at here?
// Visible content rect can be updated when below conditions are satisfied
// 1. page render is done(m_pageDidRendered && (m_viewImpl->page()->estimatedProgress())
// 2. function call count of both updateViewportSize() and didChangeViewportProperties() should be matched
- return m_pageDidRendered && (m_viewImpl->page()->estimatedProgress() > 0.1);
+ return m_pageDidRendered && (m_viewImpl->page()->estimatedProgress() > 0.1) && !m_viewResizeCount;
}
#endif