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

Side by Side Diff: ui/views/controls/scrollbar/base_scroll_bar.cc

Issue 171423003: Update local BaseScrollBar::contents_scroll_offset_ on Update. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Keep disabled tests disabled. Created 6 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | ui/views/controls/scrollbar/native_scroll_bar.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "ui/views/controls/scrollbar/base_scroll_bar.h" 5 #include "ui/views/controls/scrollbar/base_scroll_bar.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after
381 break; 381 break;
382 case ScrollBarContextMenuCommand_ScrollNext: 382 case ScrollBarContextMenuCommand_ScrollNext:
383 ScrollByAmount(SCROLL_NEXT_LINE); 383 ScrollByAmount(SCROLL_NEXT_LINE);
384 break; 384 break;
385 } 385 }
386 } 386 }
387 387
388 /////////////////////////////////////////////////////////////////////////////// 388 ///////////////////////////////////////////////////////////////////////////////
389 // BaseScrollBar, ScrollBar implementation: 389 // BaseScrollBar, ScrollBar implementation:
390 390
391 void BaseScrollBar::Update(int viewport_size, int content_size, 391 void BaseScrollBar::Update(int viewport_size,
392 int content_size,
392 int contents_scroll_offset) { 393 int contents_scroll_offset) {
393 ScrollBar::Update(viewport_size, content_size, contents_scroll_offset); 394 ScrollBar::Update(viewport_size, content_size, contents_scroll_offset);
394 395
395 // Make sure contents_size is always > 0 to avoid divide by zero errors in 396 // Make sure contents_size is always > 0 to avoid divide by zero errors in
396 // calculations throughout this code. 397 // calculations throughout this code.
397 contents_size_ = std::max(1, content_size); 398 contents_size_ = std::max(1, content_size);
398 399
399 viewport_size_ = std::max(1, viewport_size); 400 viewport_size_ = std::max(1, viewport_size);
400 401
401 if (content_size < 0) 402 if (content_size < 0)
402 content_size = 0; 403 content_size = 0;
403 if (contents_scroll_offset < 0) 404 if (contents_scroll_offset < 0)
404 contents_scroll_offset = 0; 405 contents_scroll_offset = 0;
405 if (contents_scroll_offset > content_size) 406 if (contents_scroll_offset > content_size)
406 contents_scroll_offset = content_size; 407 contents_scroll_offset = content_size;
408 contents_scroll_offset_ = contents_scroll_offset;
407 409
408 // Thumb Height and Thumb Pos. 410 // Thumb Height and Thumb Pos.
409 // The height of the thumb is the ratio of the Viewport height to the 411 // The height of the thumb is the ratio of the Viewport height to the
410 // content size multiplied by the height of the thumb track. 412 // content size multiplied by the height of the thumb track.
411 double ratio = static_cast<double>(viewport_size) / contents_size_; 413 double ratio = static_cast<double>(viewport_size) / contents_size_;
412 int thumb_size = static_cast<int>(ratio * GetTrackSize()); 414 int thumb_size = static_cast<int>(ratio * GetTrackSize());
413 thumb_->SetSize(thumb_size); 415 thumb_->SetSize(thumb_size);
414 416
415 int thumb_position = CalculateThumbPosition(contents_scroll_offset); 417 int thumb_position = CalculateThumbPosition(contents_scroll_offset);
416 thumb_->SetPosition(thumb_position); 418 thumb_->SetPosition(thumb_position);
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
491 // simple division can be rounded and there could be 1 pixel gap even when the 493 // simple division can be rounded and there could be 1 pixel gap even when the
492 // contents scroll down to the bottom. See crbug.com/244671 494 // contents scroll down to the bottom. See crbug.com/244671
493 if (contents_scroll_offset + viewport_size_ == contents_size_) { 495 if (contents_scroll_offset + viewport_size_ == contents_size_) {
494 int track_size = GetTrackSize(); 496 int track_size = GetTrackSize();
495 return track_size - (viewport_size_ * GetTrackSize() / contents_size_); 497 return track_size - (viewport_size_ * GetTrackSize() / contents_size_);
496 } 498 }
497 return (contents_scroll_offset * GetTrackSize()) / contents_size_; 499 return (contents_scroll_offset * GetTrackSize()) / contents_size_;
498 } 500 }
499 501
500 int BaseScrollBar::CalculateContentsOffset(int thumb_position, 502 int BaseScrollBar::CalculateContentsOffset(int thumb_position,
501 bool scroll_to_middle) const { 503 bool scroll_to_middle) const {
502 if (scroll_to_middle) 504 if (scroll_to_middle)
503 thumb_position = thumb_position - (thumb_->GetSize() / 2); 505 thumb_position = thumb_position - (thumb_->GetSize() / 2);
504 return (thumb_position * contents_size_) / GetTrackSize(); 506 return (thumb_position * contents_size_) / GetTrackSize();
505 } 507 }
506 508
507 void BaseScrollBar::SetThumbTrackState(CustomButton::ButtonState state) { 509 void BaseScrollBar::SetThumbTrackState(CustomButton::ButtonState state) {
508 thumb_track_state_ = state; 510 thumb_track_state_ = state;
509 SchedulePaint(); 511 SchedulePaint();
510 } 512 }
511 513
512 } // namespace views 514 } // namespace views
OLDNEW
« no previous file with comments | « no previous file | ui/views/controls/scrollbar/native_scroll_bar.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698