Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(28)

Unified Diff: cc/layer_tree_impl.cc

Issue 12552004: Support bottom-right anchored fixed-position elements during a pinch gesture (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: reupload the same thing Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: cc/layer_tree_impl.cc
diff --git a/cc/layer_tree_impl.cc b/cc/layer_tree_impl.cc
index f16ec0035e93d2d3e7b66be833c00fdac28fa69e..14793a4ad8f460194ed6e7c9ba108a660a0b8aa4 100644
--- a/cc/layer_tree_impl.cc
+++ b/cc/layer_tree_impl.cc
@@ -170,8 +170,7 @@ void LayerTreeImpl::SetPageScaleDelta(float delta)
set_needs_update_draw_properties();
}
-gfx::SizeF LayerTreeImpl::ScrollableViewportSize() const {
- gfx::SizeF view_bounds;
+gfx::SizeF LayerTreeImpl::UnscaledScrollableViewportSize() const {
// The clip layer should be used for scrolling bounds if available since it
// adjusts for non-overlay scrollbars. Otherwise, fall back to our knowledge
// of the physical viewport size.
@@ -179,11 +178,15 @@ gfx::SizeF LayerTreeImpl::ScrollableViewportSize() const {
if (root_scroll_layer_)
clip_layer = root_scroll_layer_->parent();
if (clip_layer && clip_layer->masksToBounds()) {
- view_bounds = clip_layer->bounds();
+ return clip_layer->bounds();
} else {
- view_bounds = gfx::ScaleSize(device_viewport_size(),
+ return gfx::ScaleSize(device_viewport_size(),
1 / device_scale_factor());
}
+}
+
+gfx::SizeF LayerTreeImpl::ScrollableViewportSize() const {
+ gfx::SizeF view_bounds = UnscaledScrollableViewportSize();
view_bounds.Scale(1 / total_page_scale_factor());
return view_bounds;
@@ -201,6 +204,15 @@ void LayerTreeImpl::UpdateMaxScrollOffset() {
max_scroll.ClampToMin(gfx::Vector2dF());
root_scroll_layer_->setMaxScrollOffset(gfx::ToFlooredVector2d(max_scroll));
+
+ gfx::Vector2dF scrollable_viewport_size =
+ gfx::RectF(ScrollableViewportSize()).bottom_right() - gfx::PointF();
+ gfx::Vector2dF original_scrollable_viewport_size =
+ gfx::RectF(UnscaledScrollableViewportSize()).bottom_right() -
+ gfx::PointF();
+ original_scrollable_viewport_size.Scale(1 / page_scale_factor());
+ root_scroll_layer_->setFixedContainerSizeDelta(
+ scrollable_viewport_size - original_scrollable_viewport_size);
}
gfx::Transform LayerTreeImpl::ImplTransform() const {

Powered by Google App Engine
This is Rietveld 408576698