diff options
Diffstat (limited to 'cc/trees/layer_tree_host.cc')
-rw-r--r-- | cc/trees/layer_tree_host.cc | 42 |
1 files changed, 26 insertions, 16 deletions
diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc index 1dd29a9..cca8c67 100644 --- a/cc/trees/layer_tree_host.cc +++ b/cc/trees/layer_tree_host.cc @@ -37,6 +37,7 @@ #include "cc/trees/single_thread_proxy.h" #include "cc/trees/thread_proxy.h" #include "cc/trees/tree_synchronizer.h" +#include "ui/gfx/size_conversions.h" namespace { static int s_num_layer_tree_instances; @@ -342,7 +343,7 @@ void LayerTreeHost::FinishCommitOnImplThread(LayerTreeHostImpl* host_impl) { max_page_scale_factor_); sync_tree->SetPageScaleDelta(page_scale_delta / sent_page_scale_delta); - host_impl->SetViewportSize(layout_viewport_size_, device_viewport_size_); + host_impl->SetViewportSize(device_viewport_size_); host_impl->SetOverdrawBottomHeight(overdraw_bottom_height_); host_impl->SetDeviceScaleFactor(device_scale_factor_); host_impl->SetDebugState(debug_state_); @@ -380,22 +381,34 @@ void LayerTreeHost::FinishCommitOnImplThread(LayerTreeHostImpl* host_impl) { commit_number_++; } +gfx::Size LayerTreeHost::PinchZoomScrollbarSize( + WebKit::WebScrollbar::Orientation orientation) const { + gfx::Size viewport_size = gfx::ToCeiledSize( + gfx::ScaleSize(device_viewport_size(), 1.f / device_scale_factor())); + gfx::Size size; + int track_width = PinchZoomScrollbarGeometry::kTrackWidth; + if (orientation == WebKit::WebScrollbar::Horizontal) + size = gfx::Size(viewport_size.width() - track_width, track_width); + else + size = gfx::Size(track_width, viewport_size.height() - track_width); + return size; +} + void LayerTreeHost::SetPinchZoomScrollbarsBoundsAndPosition() { if (!pinch_zoom_scrollbar_horizontal_ || !pinch_zoom_scrollbar_vertical_) return; - gfx::Size size = layout_viewport_size(); - int track_width = PinchZoomScrollbarGeometry::kTrackWidth; + gfx::Size horizontal_size = + PinchZoomScrollbarSize(WebKit::WebScrollbar::Horizontal); + gfx::Size vertical_size = + PinchZoomScrollbarSize(WebKit::WebScrollbar::Vertical); - pinch_zoom_scrollbar_horizontal_->SetBounds( - gfx::Size(size.width() - track_width, track_width)); + pinch_zoom_scrollbar_horizontal_->SetBounds(horizontal_size); pinch_zoom_scrollbar_horizontal_->SetPosition( - gfx::PointF(0, size.height() - track_width)); - - pinch_zoom_scrollbar_vertical_->SetBounds( - gfx::Size(track_width, size.height() - track_width)); + gfx::PointF(0, vertical_size.height())); + pinch_zoom_scrollbar_vertical_->SetBounds(vertical_size); pinch_zoom_scrollbar_vertical_->SetPosition( - gfx::PointF(size.width() - track_width, 0)); + gfx::PointF(horizontal_size.width(), 0)); } static scoped_refptr<ScrollbarLayer> CreatePinchZoomScrollbar( @@ -623,13 +636,10 @@ void LayerTreeHost::SetDebugState(const LayerTreeDebugState& debug_state) { SetNeedsCommit(); } -void LayerTreeHost::SetViewportSize(gfx::Size layout_viewport_size, - gfx::Size device_viewport_size) { - if (layout_viewport_size == layout_viewport_size_ && - device_viewport_size == device_viewport_size_) +void LayerTreeHost::SetViewportSize(gfx::Size device_viewport_size) { + if (device_viewport_size == device_viewport_size_) return; - layout_viewport_size_ = layout_viewport_size; device_viewport_size_ = device_viewport_size; SetPinchZoomScrollbarsBoundsAndPosition(); @@ -712,7 +722,7 @@ void LayerTreeHost::UpdateLayers(ResourceUpdateQueue* queue, if (!root_layer()) return; - if (layout_viewport_size().IsEmpty()) + if (device_viewport_size().IsEmpty()) return; if (memory_allocation_limit_bytes) { |