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

Side by Side Diff: WebCore/platform/ScrollView.cpp

Issue 3364013: Merge 67001 - 2010-09-08 Peter Kasting <pkasting@google.com>... (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/517/
Patch Set: Created 10 years, 3 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
« no previous file with comments | « WebCore/platform/ScrollView.h ('k') | WebCore/platform/Scrollbar.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 updateScrollbars(scrollOffset()); 266 updateScrollbars(scrollOffset());
267 } 267 }
268 268
269 IntPoint ScrollView::maximumScrollPosition() const 269 IntPoint ScrollView::maximumScrollPosition() const
270 { 270 {
271 IntSize maximumOffset = contentsSize() - visibleContentRect().size(); 271 IntSize maximumOffset = contentsSize() - visibleContentRect().size();
272 maximumOffset.clampNegativeToZero(); 272 maximumOffset.clampNegativeToZero();
273 return IntPoint(maximumOffset.width(), maximumOffset.height()); 273 return IntPoint(maximumOffset.width(), maximumOffset.height());
274 } 274 }
275 275
276 int ScrollView::scrollSize(ScrollbarOrientation orientation) const
277 {
278 Scrollbar* scrollbar = ((orientation == HorizontalScrollbar) ? m_horizontalS crollbar : m_verticalScrollbar).get();
279 return scrollbar ? (scrollbar->totalSize() - scrollbar->visibleSize()) : 0;
280 }
281
282 void ScrollView::setScrollOffsetFromAnimation(const IntPoint& offset)
283 {
284 if (m_horizontalScrollbar)
285 m_horizontalScrollbar->setValue(offset.x(), Scrollbar::FromScrollAnimato r);
286 if (m_verticalScrollbar)
287 m_verticalScrollbar->setValue(offset.y(), Scrollbar::FromScrollAnimator) ;
288 }
289
276 void ScrollView::valueChanged(Scrollbar* scrollbar) 290 void ScrollView::valueChanged(Scrollbar* scrollbar)
277 { 291 {
278 // Figure out if we really moved. 292 // Figure out if we really moved.
279 IntSize newOffset = m_scrollOffset; 293 IntSize newOffset = m_scrollOffset;
280 if (scrollbar) { 294 if (scrollbar) {
281 if (scrollbar->orientation() == HorizontalScrollbar) 295 if (scrollbar->orientation() == HorizontalScrollbar)
282 newOffset.setWidth(scrollbar->value()); 296 newOffset.setWidth(scrollbar->value());
283 else if (scrollbar->orientation() == VerticalScrollbar) 297 else if (scrollbar->orientation() == VerticalScrollbar)
284 newOffset.setHeight(scrollbar->value()); 298 newOffset.setHeight(scrollbar->value());
285 } 299 }
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 width() - (m_verticalScrollbar ? m_verticalSc rollbar->width() : 0), 448 width() - (m_verticalScrollbar ? m_verticalSc rollbar->width() : 0),
435 m_horizontalScrollbar->height()); 449 m_horizontalScrollbar->height());
436 m_horizontalScrollbar->setFrameRect(hBarRect); 450 m_horizontalScrollbar->setFrameRect(hBarRect);
437 if (!m_scrollbarsSuppressed && oldRect != m_horizontalScrollbar->frameRe ct()) 451 if (!m_scrollbarsSuppressed && oldRect != m_horizontalScrollbar->frameRe ct())
438 m_horizontalScrollbar->invalidate(); 452 m_horizontalScrollbar->invalidate();
439 453
440 if (m_scrollbarsSuppressed) 454 if (m_scrollbarsSuppressed)
441 m_horizontalScrollbar->setSuppressInvalidation(true); 455 m_horizontalScrollbar->setSuppressInvalidation(true);
442 m_horizontalScrollbar->setSteps(Scrollbar::pixelsPerLineStep(), pageStep ); 456 m_horizontalScrollbar->setSteps(Scrollbar::pixelsPerLineStep(), pageStep );
443 m_horizontalScrollbar->setProportion(clientWidth, contentsWidth()); 457 m_horizontalScrollbar->setProportion(clientWidth, contentsWidth());
444 m_horizontalScrollbar->setValue(scroll.width()); 458 m_horizontalScrollbar->setValue(scroll.width(), Scrollbar::NotFromScroll Animator);
445 if (m_scrollbarsSuppressed) 459 if (m_scrollbarsSuppressed)
446 m_horizontalScrollbar->setSuppressInvalidation(false); 460 m_horizontalScrollbar->setSuppressInvalidation(false);
447 } 461 }
448 462
449 if (m_verticalScrollbar) { 463 if (m_verticalScrollbar) {
450 int clientHeight = visibleHeight(); 464 int clientHeight = visibleHeight();
451 m_verticalScrollbar->setEnabled(contentsHeight() > clientHeight); 465 m_verticalScrollbar->setEnabled(contentsHeight() > clientHeight);
452 int pageStep = max(max<int>(clientHeight * Scrollbar::minFractionToStepW henPaging(), clientHeight - Scrollbar::maxOverlapBetweenPages()), 1); 466 int pageStep = max(max<int>(clientHeight * Scrollbar::minFractionToStepW henPaging(), clientHeight - Scrollbar::maxOverlapBetweenPages()), 1);
453 IntRect oldRect(m_verticalScrollbar->frameRect()); 467 IntRect oldRect(m_verticalScrollbar->frameRect());
454 IntRect vBarRect = IntRect(width() - m_verticalScrollbar->width(), 468 IntRect vBarRect = IntRect(width() - m_verticalScrollbar->width(),
455 0, 469 0,
456 m_verticalScrollbar->width(), 470 m_verticalScrollbar->width(),
457 height() - (m_horizontalScrollbar ? m_horizon talScrollbar->height() : 0)); 471 height() - (m_horizontalScrollbar ? m_horizon talScrollbar->height() : 0));
458 m_verticalScrollbar->setFrameRect(vBarRect); 472 m_verticalScrollbar->setFrameRect(vBarRect);
459 if (!m_scrollbarsSuppressed && oldRect != m_verticalScrollbar->frameRect ()) 473 if (!m_scrollbarsSuppressed && oldRect != m_verticalScrollbar->frameRect ())
460 m_verticalScrollbar->invalidate(); 474 m_verticalScrollbar->invalidate();
461 475
462 if (m_scrollbarsSuppressed) 476 if (m_scrollbarsSuppressed)
463 m_verticalScrollbar->setSuppressInvalidation(true); 477 m_verticalScrollbar->setSuppressInvalidation(true);
464 m_verticalScrollbar->setSteps(Scrollbar::pixelsPerLineStep(), pageStep); 478 m_verticalScrollbar->setSteps(Scrollbar::pixelsPerLineStep(), pageStep);
465 m_verticalScrollbar->setProportion(clientHeight, contentsHeight()); 479 m_verticalScrollbar->setProportion(clientHeight, contentsHeight());
466 m_verticalScrollbar->setValue(scroll.height()); 480 m_verticalScrollbar->setValue(scroll.height(), Scrollbar::NotFromScrollA nimator);
467 if (m_scrollbarsSuppressed) 481 if (m_scrollbarsSuppressed)
468 m_verticalScrollbar->setSuppressInvalidation(false); 482 m_verticalScrollbar->setSuppressInvalidation(false);
469 } 483 }
470 484
471 if (hasHorizontalScrollbar != (m_horizontalScrollbar != 0) || hasVerticalScr ollbar != (m_verticalScrollbar != 0)) { 485 if (hasHorizontalScrollbar != (m_horizontalScrollbar != 0) || hasVerticalScr ollbar != (m_verticalScrollbar != 0)) {
472 frameRectsChanged(); 486 frameRectsChanged();
473 updateScrollCorner(); 487 updateScrollCorner();
474 } 488 }
475 489
476 // See if our offset has changed in a situation where we might not have scro llbars. 490 // See if our offset has changed in a situation where we might not have scro llbars.
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
666 e.accept(); 680 e.accept();
667 float deltaX = e.deltaX(); 681 float deltaX = e.deltaX();
668 float deltaY = e.deltaY(); 682 float deltaY = e.deltaY();
669 if (e.granularity() == ScrollByPageWheelEvent) { 683 if (e.granularity() == ScrollByPageWheelEvent) {
670 ASSERT(deltaX == 0); 684 ASSERT(deltaX == 0);
671 bool negative = deltaY < 0; 685 bool negative = deltaY < 0;
672 deltaY = max(max(static_cast<float>(visibleHeight()) * Scrollbar::mi nFractionToStepWhenPaging(), static_cast<float>(visibleHeight() - Scrollbar::max OverlapBetweenPages())), 1.0f); 686 deltaY = max(max(static_cast<float>(visibleHeight()) * Scrollbar::mi nFractionToStepWhenPaging(), static_cast<float>(visibleHeight() - Scrollbar::max OverlapBetweenPages())), 1.0f);
673 if (negative) 687 if (negative)
674 deltaY = -deltaY; 688 deltaY = -deltaY;
675 } 689 }
676 scrollBy(IntSize(-deltaX, -deltaY)); 690
691 // Should we fall back on scrollBy() if there is no scrollbar for a non- zero delta?
692 if (deltaY && m_verticalScrollbar)
693 m_verticalScrollbar->scroll(ScrollUp, ScrollByPixel, deltaY);
694 if (deltaX && m_horizontalScrollbar)
695 m_horizontalScrollbar->scroll(ScrollLeft, ScrollByPixel, deltaX);
677 } 696 }
678 } 697 }
679 698
680 void ScrollView::setFrameRect(const IntRect& newRect) 699 void ScrollView::setFrameRect(const IntRect& newRect)
681 { 700 {
682 IntRect oldRect = frameRect(); 701 IntRect oldRect = frameRect();
683 702
684 if (newRect == oldRect) 703 if (newRect == oldRect)
685 return; 704 return;
686 705
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after
1043 1062
1044 bool ScrollView::platformIsOffscreen() const 1063 bool ScrollView::platformIsOffscreen() const
1045 { 1064 {
1046 return false; 1065 return false;
1047 } 1066 }
1048 1067
1049 #endif 1068 #endif
1050 1069
1051 } 1070 }
1052 1071
OLDNEW
« no previous file with comments | « WebCore/platform/ScrollView.h ('k') | WebCore/platform/Scrollbar.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698