| OLD | NEW |
| 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 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 75 | 75 |
| 76 void ScrollView::removeChild(Widget* child) | 76 void ScrollView::removeChild(Widget* child) |
| 77 { | 77 { |
| 78 ASSERT(child->parent() == this); | 78 ASSERT(child->parent() == this); |
| 79 child->setParent(0); | 79 child->setParent(0); |
| 80 m_children.remove(child); | 80 m_children.remove(child); |
| 81 } | 81 } |
| 82 | 82 |
| 83 void ScrollView::setHasHorizontalScrollbar(bool hasBar) | 83 void ScrollView::setHasHorizontalScrollbar(bool hasBar) |
| 84 { | 84 { |
| 85 ASSERT(!hasBar); | 85 ASSERT(!hasBar || !avoidScrollbarCreation()); |
| 86 if (hasBar && !m_horizontalScrollbar) { | 86 if (hasBar && !m_horizontalScrollbar) { |
| 87 m_horizontalScrollbar = createScrollbar(HorizontalScrollbar); | 87 m_horizontalScrollbar = createScrollbar(HorizontalScrollbar); |
| 88 addChild(m_horizontalScrollbar.get()); | 88 addChild(m_horizontalScrollbar.get()); |
| 89 didAddHorizontalScrollbar(m_horizontalScrollbar.get()); | 89 didAddHorizontalScrollbar(m_horizontalScrollbar.get()); |
| 90 m_horizontalScrollbar->styleChanged(); | 90 m_horizontalScrollbar->styleChanged(); |
| 91 } else if (!hasBar && m_horizontalScrollbar) { | 91 } else if (!hasBar && m_horizontalScrollbar) { |
| 92 willRemoveHorizontalScrollbar(m_horizontalScrollbar.get()); | 92 willRemoveHorizontalScrollbar(m_horizontalScrollbar.get()); |
| 93 removeChild(m_horizontalScrollbar.get()); | 93 removeChild(m_horizontalScrollbar.get()); |
| 94 m_horizontalScrollbar = 0; | 94 m_horizontalScrollbar = 0; |
| 95 } | 95 } |
| 96 | 96 |
| 97 if (AXObjectCache* cache = axObjectCache()) | 97 if (AXObjectCache* cache = axObjectCache()) |
| 98 cache->handleScrollbarUpdate(this); | 98 cache->handleScrollbarUpdate(this); |
| 99 } | 99 } |
| 100 | 100 |
| 101 void ScrollView::setHasVerticalScrollbar(bool hasBar) | 101 void ScrollView::setHasVerticalScrollbar(bool hasBar) |
| 102 { | 102 { |
| 103 ASSERT(!hasBar); | 103 ASSERT(!hasBar || !avoidScrollbarCreation()); |
| 104 if (hasBar && !m_verticalScrollbar) { | 104 if (hasBar && !m_verticalScrollbar) { |
| 105 m_verticalScrollbar = createScrollbar(VerticalScrollbar); | 105 m_verticalScrollbar = createScrollbar(VerticalScrollbar); |
| 106 addChild(m_verticalScrollbar.get()); | 106 addChild(m_verticalScrollbar.get()); |
| 107 didAddVerticalScrollbar(m_verticalScrollbar.get()); | 107 didAddVerticalScrollbar(m_verticalScrollbar.get()); |
| 108 m_verticalScrollbar->styleChanged(); | 108 m_verticalScrollbar->styleChanged(); |
| 109 } else if (!hasBar && m_verticalScrollbar) { | 109 } else if (!hasBar && m_verticalScrollbar) { |
| 110 willRemoveVerticalScrollbar(m_verticalScrollbar.get()); | 110 willRemoveVerticalScrollbar(m_verticalScrollbar.get()); |
| 111 removeChild(m_verticalScrollbar.get()); | 111 removeChild(m_verticalScrollbar.get()); |
| 112 m_verticalScrollbar = 0; | 112 m_verticalScrollbar = 0; |
| 113 } | 113 } |
| (...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 418 | 418 |
| 419 ScrollbarMode hScroll = m_horizontalScrollbarMode; | 419 ScrollbarMode hScroll = m_horizontalScrollbarMode; |
| 420 ScrollbarMode vScroll = m_verticalScrollbarMode; | 420 ScrollbarMode vScroll = m_verticalScrollbarMode; |
| 421 | 421 |
| 422 if (hScroll != ScrollbarAuto) | 422 if (hScroll != ScrollbarAuto) |
| 423 newHasHorizontalScrollbar = (hScroll == ScrollbarAlwaysOn); | 423 newHasHorizontalScrollbar = (hScroll == ScrollbarAlwaysOn); |
| 424 if (vScroll != ScrollbarAuto) | 424 if (vScroll != ScrollbarAuto) |
| 425 newHasVerticalScrollbar = (vScroll == ScrollbarAlwaysOn); | 425 newHasVerticalScrollbar = (vScroll == ScrollbarAlwaysOn); |
| 426 | 426 |
| 427 if (m_scrollbarsSuppressed || (hScroll != ScrollbarAuto && vScroll != Scroll
barAuto)) { | 427 if (m_scrollbarsSuppressed || (hScroll != ScrollbarAuto && vScroll != Scroll
barAuto)) { |
| 428 if (hasHorizontalScrollbar != newHasHorizontalScrollbar && hasHorizontal
Scrollbar) | 428 if (hasHorizontalScrollbar != newHasHorizontalScrollbar && (hasHorizonta
lScrollbar || !avoidScrollbarCreation())) |
| 429 setHasHorizontalScrollbar(newHasHorizontalScrollbar); | 429 setHasHorizontalScrollbar(newHasHorizontalScrollbar); |
| 430 if (hasVerticalScrollbar != newHasVerticalScrollbar && hasVerticalScroll
bar) | 430 if (hasVerticalScrollbar != newHasVerticalScrollbar && (hasVerticalScrol
lbar || !avoidScrollbarCreation())) |
| 431 setHasVerticalScrollbar(newHasVerticalScrollbar); | 431 setHasVerticalScrollbar(newHasVerticalScrollbar); |
| 432 } else { | 432 } else { |
| 433 bool sendContentResizedNotification = false; | 433 bool sendContentResizedNotification = false; |
| 434 | 434 |
| 435 IntSize docSize = totalContentsSize(); | 435 IntSize docSize = totalContentsSize(); |
| 436 IntSize fullVisibleSize = visibleContentRect(IncludeScrollbars).size(); | 436 IntSize fullVisibleSize = visibleContentRect(IncludeScrollbars).size(); |
| 437 | 437 |
| 438 if (hScroll == ScrollbarAuto) { | 438 if (hScroll == ScrollbarAuto) { |
| 439 newHasHorizontalScrollbar = docSize.width() > visibleWidth(); | 439 newHasHorizontalScrollbar = docSize.width() > visibleWidth(); |
| 440 if (newHasHorizontalScrollbar && !m_updateScrollbarsPass && docSize.
width() <= fullVisibleSize.width() && docSize.height() <= fullVisibleSize.height
()) | 440 if (newHasHorizontalScrollbar && !m_updateScrollbarsPass && docSize.
width() <= fullVisibleSize.width() && docSize.height() <= fullVisibleSize.height
()) |
| 441 newHasHorizontalScrollbar = false; | 441 newHasHorizontalScrollbar = false; |
| 442 } | 442 } |
| 443 if (vScroll == ScrollbarAuto) { | 443 if (vScroll == ScrollbarAuto) { |
| 444 newHasVerticalScrollbar = docSize.height() > visibleHeight(); | 444 newHasVerticalScrollbar = docSize.height() > visibleHeight(); |
| 445 if (newHasVerticalScrollbar && !m_updateScrollbarsPass && docSize.wi
dth() <= fullVisibleSize.width() && docSize.height() <= fullVisibleSize.height()
) | 445 if (newHasVerticalScrollbar && !m_updateScrollbarsPass && docSize.wi
dth() <= fullVisibleSize.width() && docSize.height() <= fullVisibleSize.height()
) |
| 446 newHasVerticalScrollbar = false; | 446 newHasVerticalScrollbar = false; |
| 447 } | 447 } |
| 448 | 448 |
| 449 // If we ever turn one scrollbar off, always turn the other one off too.
Never ever | 449 // If we ever turn one scrollbar off, always turn the other one off too.
Never ever |
| 450 // try to both gain/lose a scrollbar in the same pass. | 450 // try to both gain/lose a scrollbar in the same pass. |
| 451 if (!newHasHorizontalScrollbar && hasHorizontalScrollbar && vScroll != S
crollbarAlwaysOn) | 451 if (!newHasHorizontalScrollbar && hasHorizontalScrollbar && vScroll != S
crollbarAlwaysOn) |
| 452 newHasVerticalScrollbar = false; | 452 newHasVerticalScrollbar = false; |
| 453 if (!newHasVerticalScrollbar && hasVerticalScrollbar && hScroll != Scrol
lbarAlwaysOn) | 453 if (!newHasVerticalScrollbar && hasVerticalScrollbar && hScroll != Scrol
lbarAlwaysOn) |
| 454 newHasHorizontalScrollbar = false; | 454 newHasHorizontalScrollbar = false; |
| 455 | 455 |
| 456 bool scrollbarIsOverlay = ScrollbarTheme::theme()->usesOverlayScrollbars
(); | 456 bool scrollbarIsOverlay = ScrollbarTheme::theme()->usesOverlayScrollbars
(); |
| 457 if (hasHorizontalScrollbar != newHasHorizontalScrollbar && hasHorizontal
Scrollbar) { | 457 if (hasHorizontalScrollbar != newHasHorizontalScrollbar && (hasHorizonta
lScrollbar || !avoidScrollbarCreation())) { |
| 458 if (!scrollbarIsOverlay) | 458 if (!scrollbarIsOverlay) |
| 459 sendContentResizedNotification = true; | 459 sendContentResizedNotification = true; |
| 460 if (scrollOrigin().y() && !newHasHorizontalScrollbar && !scrollbarIs
Overlay) | 460 if (scrollOrigin().y() && !newHasHorizontalScrollbar && !scrollbarIs
Overlay) |
| 461 ScrollableArea::setScrollOrigin(IntPoint(scrollOrigin().x(), scr
ollOrigin().y() - m_horizontalScrollbar->height())); | 461 ScrollableArea::setScrollOrigin(IntPoint(scrollOrigin().x(), scr
ollOrigin().y() - m_horizontalScrollbar->height())); |
| 462 if (hasHorizontalScrollbar) | 462 if (hasHorizontalScrollbar) |
| 463 m_horizontalScrollbar->invalidate(); | 463 m_horizontalScrollbar->invalidate(); |
| 464 setHasHorizontalScrollbar(newHasHorizontalScrollbar); | 464 setHasHorizontalScrollbar(newHasHorizontalScrollbar); |
| 465 } | 465 } |
| 466 | 466 |
| 467 if (hasVerticalScrollbar != newHasVerticalScrollbar && hasVerticalScroll
bar) { | 467 if (hasVerticalScrollbar != newHasVerticalScrollbar && (hasVerticalScrol
lbar || !avoidScrollbarCreation())) { |
| 468 if (!scrollbarIsOverlay) | 468 if (!scrollbarIsOverlay) |
| 469 sendContentResizedNotification = true; | 469 sendContentResizedNotification = true; |
| 470 if (scrollOrigin().x() && !newHasVerticalScrollbar && !scrollbarIsOv
erlay) | 470 if (scrollOrigin().x() && !newHasVerticalScrollbar && !scrollbarIsOv
erlay) |
| 471 ScrollableArea::setScrollOrigin(IntPoint(scrollOrigin().x() - m_
verticalScrollbar->width(), scrollOrigin().y())); | 471 ScrollableArea::setScrollOrigin(IntPoint(scrollOrigin().x() - m_
verticalScrollbar->width(), scrollOrigin().y())); |
| 472 if (hasVerticalScrollbar) | 472 if (hasVerticalScrollbar) |
| 473 m_verticalScrollbar->invalidate(); | 473 m_verticalScrollbar->invalidate(); |
| 474 setHasVerticalScrollbar(newHasVerticalScrollbar); | 474 setHasVerticalScrollbar(newHasVerticalScrollbar); |
| 475 } | 475 } |
| 476 | 476 |
| 477 if (sendContentResizedNotification && m_updateScrollbarsPass < cMaxUpdat
eScrollbarsPass) { | 477 if (sendContentResizedNotification && m_updateScrollbarsPass < cMaxUpdat
eScrollbarsPass) { |
| (...skipping 799 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1277 { | 1277 { |
| 1278 } | 1278 } |
| 1279 | 1279 |
| 1280 bool ScrollView::platformIsOffscreen() const | 1280 bool ScrollView::platformIsOffscreen() const |
| 1281 { | 1281 { |
| 1282 return false; | 1282 return false; |
| 1283 } | 1283 } |
| 1284 | 1284 |
| 1285 | 1285 |
| 1286 } | 1286 } |
| OLD | NEW |