| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2004, 2006, 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2004, 2006, 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 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 94 Scrollbar::~Scrollbar() | 94 Scrollbar::~Scrollbar() |
| 95 { | 95 { |
| 96 if (AXObjectCache* cache = existingAXObjectCache()) | 96 if (AXObjectCache* cache = existingAXObjectCache()) |
| 97 cache->remove(this); | 97 cache->remove(this); |
| 98 | 98 |
| 99 stopTimerIfNeeded(); | 99 stopTimerIfNeeded(); |
| 100 | 100 |
| 101 m_theme->unregisterScrollbar(this); | 101 m_theme->unregisterScrollbar(this); |
| 102 } | 102 } |
| 103 | 103 |
| 104 void Scrollbar::removeFromParent() |
| 105 { |
| 106 if (parent()) |
| 107 toScrollView(parent())->removeChild(this); |
| 108 } |
| 109 |
| 110 ScrollView* Scrollbar::parentScrollView() const |
| 111 { |
| 112 return toScrollView(parent()); |
| 113 } |
| 114 |
| 115 ScrollView* Scrollbar::rootScrollView() const |
| 116 { |
| 117 return toScrollView(root()); |
| 118 } |
| 119 |
| 104 ScrollbarOverlayStyle Scrollbar::scrollbarOverlayStyle() const | 120 ScrollbarOverlayStyle Scrollbar::scrollbarOverlayStyle() const |
| 105 { | 121 { |
| 106 return m_scrollableArea ? m_scrollableArea->scrollbarOverlayStyle() : Scroll
barOverlayStyleDefault; | 122 return m_scrollableArea ? m_scrollableArea->scrollbarOverlayStyle() : Scroll
barOverlayStyleDefault; |
| 107 } | 123 } |
| 108 | 124 |
| 109 void Scrollbar::getTickmarks(Vector<IntRect>& tickmarks) const | 125 void Scrollbar::getTickmarks(Vector<IntRect>& tickmarks) const |
| 110 { | 126 { |
| 111 if (m_scrollableArea) | 127 if (m_scrollableArea) |
| 112 m_scrollableArea->getTickmarks(tickmarks); | 128 m_scrollableArea->getTickmarks(tickmarks); |
| 113 } | 129 } |
| (...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 473 | 489 |
| 474 autoscrollPressedPart(theme()->initialAutoscrollTimerDelay()); | 490 autoscrollPressedPart(theme()->initialAutoscrollTimerDelay()); |
| 475 } | 491 } |
| 476 | 492 |
| 477 void Scrollbar::setFrameRect(const IntRect& rect) | 493 void Scrollbar::setFrameRect(const IntRect& rect) |
| 478 { | 494 { |
| 479 // Get our window resizer rect and see if we overlap. Adjust to avoid the ov
erlap | 495 // Get our window resizer rect and see if we overlap. Adjust to avoid the ov
erlap |
| 480 // if necessary. | 496 // if necessary. |
| 481 IntRect adjustedRect(rect); | 497 IntRect adjustedRect(rect); |
| 482 bool overlapsResizer = false; | 498 bool overlapsResizer = false; |
| 483 ScrollView* view = parent(); | 499 ScrollView* view = parentScrollView(); |
| 484 if (view && !rect.isEmpty() && !view->windowResizerRect().isEmpty()) { | 500 if (view && !rect.isEmpty() && !view->windowResizerRect().isEmpty()) { |
| 485 IntRect resizerRect = view->convertFromContainingWindow(view->windowResi
zerRect()); | 501 IntRect resizerRect = view->convertFromContainingWindow(view->windowResi
zerRect()); |
| 486 if (rect.intersects(resizerRect)) { | 502 if (rect.intersects(resizerRect)) { |
| 487 if (orientation() == HorizontalScrollbar) { | 503 if (orientation() == HorizontalScrollbar) { |
| 488 int overlap = rect.maxX() - resizerRect.x(); | 504 int overlap = rect.maxX() - resizerRect.x(); |
| 489 if (overlap > 0 && resizerRect.maxX() >= rect.maxX()) { | 505 if (overlap > 0 && resizerRect.maxX() >= rect.maxX()) { |
| 490 adjustedRect.setWidth(rect.width() - overlap); | 506 adjustedRect.setWidth(rect.width() - overlap); |
| 491 overlapsResizer = true; | 507 overlapsResizer = true; |
| 492 } | 508 } |
| 493 } else { | 509 } else { |
| 494 int overlap = rect.maxY() - resizerRect.y(); | 510 int overlap = rect.maxY() - resizerRect.y(); |
| 495 if (overlap > 0 && resizerRect.maxY() >= rect.maxY()) { | 511 if (overlap > 0 && resizerRect.maxY() >= rect.maxY()) { |
| 496 adjustedRect.setHeight(rect.height() - overlap); | 512 adjustedRect.setHeight(rect.height() - overlap); |
| 497 overlapsResizer = true; | 513 overlapsResizer = true; |
| 498 } | 514 } |
| 499 } | 515 } |
| 500 } | 516 } |
| 501 } | 517 } |
| 502 if (overlapsResizer != m_overlapsResizer) { | 518 if (overlapsResizer != m_overlapsResizer) { |
| 503 m_overlapsResizer = overlapsResizer; | 519 m_overlapsResizer = overlapsResizer; |
| 504 if (view) | 520 if (view) |
| 505 view->adjustScrollbarsAvoidingResizerCount(m_overlapsResizer ? 1 : -
1); | 521 view->adjustScrollbarsAvoidingResizerCount(m_overlapsResizer ? 1 : -
1); |
| 506 } | 522 } |
| 507 | 523 |
| 508 Widget::setFrameRect(adjustedRect); | 524 Widget::setFrameRect(adjustedRect); |
| 509 } | 525 } |
| 510 | 526 |
| 511 void Scrollbar::setParent(ScrollView* parentView) | 527 void Scrollbar::setParent(Widget* parentView) |
| 512 { | 528 { |
| 513 if (!parentView && m_overlapsResizer && parent()) | 529 if (!parentView && m_overlapsResizer && parentScrollView()) |
| 514 parent()->adjustScrollbarsAvoidingResizerCount(-1); | 530 parentScrollView()->adjustScrollbarsAvoidingResizerCount(-1); |
| 515 Widget::setParent(parentView); | 531 Widget::setParent(parentView); |
| 516 } | 532 } |
| 517 | 533 |
| 518 void Scrollbar::setEnabled(bool e) | 534 void Scrollbar::setEnabled(bool e) |
| 519 { | 535 { |
| 520 if (m_enabled == e) | 536 if (m_enabled == e) |
| 521 return; | 537 return; |
| 522 m_enabled = e; | 538 m_enabled = e; |
| 523 theme()->updateEnabledState(this); | 539 theme()->updateEnabledState(this); |
| 524 invalidate(); | 540 invalidate(); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 537 return m_scrollableArea->scrollAnimator()->shouldScrollbarParticipateInHitTe
sting(this); | 553 return m_scrollableArea->scrollAnimator()->shouldScrollbarParticipateInHitTe
sting(this); |
| 538 } | 554 } |
| 539 | 555 |
| 540 bool Scrollbar::isWindowActive() const | 556 bool Scrollbar::isWindowActive() const |
| 541 { | 557 { |
| 542 return m_scrollableArea && m_scrollableArea->isActive(); | 558 return m_scrollableArea && m_scrollableArea->isActive(); |
| 543 } | 559 } |
| 544 | 560 |
| 545 AXObjectCache* Scrollbar::existingAXObjectCache() const | 561 AXObjectCache* Scrollbar::existingAXObjectCache() const |
| 546 { | 562 { |
| 547 if (!parent()) | 563 if (!parentScrollView()) |
| 548 return 0; | 564 return 0; |
| 549 | 565 |
| 550 return parent()->axObjectCache(); | 566 return parentScrollView()->axObjectCache(); |
| 551 } | 567 } |
| 552 | 568 |
| 553 void Scrollbar::invalidateRect(const IntRect& rect) | 569 void Scrollbar::invalidateRect(const IntRect& rect) |
| 554 { | 570 { |
| 555 if (suppressInvalidation()) | 571 if (suppressInvalidation()) |
| 556 return; | 572 return; |
| 557 | 573 |
| 558 if (m_scrollableArea) | 574 if (m_scrollableArea) |
| 559 m_scrollableArea->invalidateScrollbar(this, rect); | 575 m_scrollableArea->invalidateScrollbar(this, rect); |
| 560 } | 576 } |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 596 if (!m_scrollableArea) | 612 if (!m_scrollableArea) |
| 597 return 0; | 613 return 0; |
| 598 | 614 |
| 599 if (m_orientation == HorizontalScrollbar) | 615 if (m_orientation == HorizontalScrollbar) |
| 600 return m_scrollableArea->scrollPosition().x() - m_scrollableArea->minimu
mScrollPosition().x(); | 616 return m_scrollableArea->scrollPosition().x() - m_scrollableArea->minimu
mScrollPosition().x(); |
| 601 | 617 |
| 602 return m_scrollableArea->scrollPosition().y() - m_scrollableArea->minimumScr
ollPosition().y(); | 618 return m_scrollableArea->scrollPosition().y() - m_scrollableArea->minimumScr
ollPosition().y(); |
| 603 } | 619 } |
| 604 | 620 |
| 605 } // namespace WebCore | 621 } // namespace WebCore |
| OLD | NEW |