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

Side by Side Diff: cc/trees/layer_tree_impl.cc

Issue 877863002: Hide pinch viewport scrollbars when near minimum scale. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Use SetHideLayerAndSubtree Created 5 years, 11 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 unified diff | Download patch
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/trees/layer_tree_impl.h" 5 #include "cc/trees/layer_tree_impl.h"
6 6
7 #include <limits> 7 #include <limits>
8 #include <set> 8 #include <set>
9 9
10 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
(...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after
388 set_needs_update_draw_properties(); 388 set_needs_update_draw_properties();
389 389
390 if (root_layer_scroll_offset_delegate_) { 390 if (root_layer_scroll_offset_delegate_) {
391 root_layer_scroll_offset_delegate_->UpdateRootLayerState( 391 root_layer_scroll_offset_delegate_->UpdateRootLayerState(
392 TotalScrollOffset(), TotalMaxScrollOffset(), ScrollableSize(), 392 TotalScrollOffset(), TotalMaxScrollOffset(), ScrollableSize(),
393 current_page_scale_factor(), min_page_scale_factor_, 393 current_page_scale_factor(), min_page_scale_factor_,
394 max_page_scale_factor_); 394 max_page_scale_factor_);
395 } 395 }
396 396
397 ForceScrollbarParameterUpdateAfterScaleChange(page_scale_layer()); 397 ForceScrollbarParameterUpdateAfterScaleChange(page_scale_layer());
398
399 HideInnerViewportScrollbarsIfNearMinimumScale();
400 }
401
402 void LayerTreeImpl::HideInnerViewportScrollbarsIfNearMinimumScale() {
403 if (!InnerViewportContainerLayer())
404 return;
405
406 LayerImpl::ScrollbarSet* scrollbars =
407 InnerViewportContainerLayer()->scrollbars();
408
409 if (!scrollbars)
410 return;
411
412 for (LayerImpl::ScrollbarSet::iterator it = scrollbars->begin();
413 it != scrollbars->end();
414 ++it) {
415 ScrollbarLayerImplBase* scrollbar = *it;
416 float minimum_scale_to_show_at =
417 min_page_scale_factor() + settings().scrollbar_show_scale_threshold;
aelias_OOO_until_Jul13 2015/01/27 19:35:05 I generally prefer scales to be multiplied togethe
bokan 2015/01/27 20:42:01 Done.
418 scrollbar->SetHideLayerAndSubtree(
419 current_page_scale_factor() < minimum_scale_to_show_at);
420 }
398 } 421 }
399 422
400 SyncedProperty<ScaleGroup>* LayerTreeImpl::page_scale_factor() { 423 SyncedProperty<ScaleGroup>* LayerTreeImpl::page_scale_factor() {
401 return page_scale_factor_.get(); 424 return page_scale_factor_.get();
402 } 425 }
403 426
404 const SyncedProperty<ScaleGroup>* LayerTreeImpl::page_scale_factor() const { 427 const SyncedProperty<ScaleGroup>* LayerTreeImpl::page_scale_factor() const {
405 return page_scale_factor_.get(); 428 return page_scale_factor_.get();
406 } 429 }
407 430
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
469 492
470 inner_viewport_scroll_layer_ = 493 inner_viewport_scroll_layer_ =
471 LayerById(inner_viewport_scroll_layer_id); 494 LayerById(inner_viewport_scroll_layer_id);
472 DCHECK(inner_viewport_scroll_layer_); 495 DCHECK(inner_viewport_scroll_layer_);
473 496
474 outer_viewport_scroll_layer_ = 497 outer_viewport_scroll_layer_ =
475 LayerById(outer_viewport_scroll_layer_id); 498 LayerById(outer_viewport_scroll_layer_id);
476 DCHECK(outer_viewport_scroll_layer_ || 499 DCHECK(outer_viewport_scroll_layer_ ||
477 outer_viewport_scroll_layer_id == Layer::INVALID_ID); 500 outer_viewport_scroll_layer_id == Layer::INVALID_ID);
478 501
502 HideInnerViewportScrollbarsIfNearMinimumScale();
503
479 if (!root_layer_scroll_offset_delegate_) 504 if (!root_layer_scroll_offset_delegate_)
480 return; 505 return;
481 506
482 inner_viewport_scroll_delegate_proxy_ = make_scoped_ptr( 507 inner_viewport_scroll_delegate_proxy_ = make_scoped_ptr(
483 new LayerScrollOffsetDelegateProxy(inner_viewport_scroll_layer_, 508 new LayerScrollOffsetDelegateProxy(inner_viewport_scroll_layer_,
484 root_layer_scroll_offset_delegate_, 509 root_layer_scroll_offset_delegate_,
485 this)); 510 this));
486 511
487 if (outer_viewport_scroll_layer_) 512 if (outer_viewport_scroll_layer_)
488 outer_viewport_scroll_delegate_proxy_ = make_scoped_ptr( 513 outer_viewport_scroll_delegate_proxy_ = make_scoped_ptr(
(...skipping 1034 matching lines...) Expand 10 before | Expand all | Expand 10 after
1523 scoped_ptr<PendingPageScaleAnimation> pending_animation) { 1548 scoped_ptr<PendingPageScaleAnimation> pending_animation) {
1524 pending_page_scale_animation_ = pending_animation.Pass(); 1549 pending_page_scale_animation_ = pending_animation.Pass();
1525 } 1550 }
1526 1551
1527 scoped_ptr<PendingPageScaleAnimation> 1552 scoped_ptr<PendingPageScaleAnimation>
1528 LayerTreeImpl::TakePendingPageScaleAnimation() { 1553 LayerTreeImpl::TakePendingPageScaleAnimation() {
1529 return pending_page_scale_animation_.Pass(); 1554 return pending_page_scale_animation_.Pass();
1530 } 1555 }
1531 1556
1532 } // namespace cc 1557 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698