| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2004, 2008, 2009, 2010 Apple Inc. All rights reserved. | 2 * Copyright (C) 2004, 2008, 2009, 2010 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 1522 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1533 if (m_selection.start().isNotNull() && m_selection.end().isNotNull()) { | 1533 if (m_selection.start().isNotNull() && m_selection.end().isNotNull()) { |
| 1534 if (AXObjectCache* cache = m_frame->document()->existingAXObjectCache()) | 1534 if (AXObjectCache* cache = m_frame->document()->existingAXObjectCache()) |
| 1535 cache->selectionChanged(m_selection.start().containerNode()); | 1535 cache->selectionChanged(m_selection.start().containerNode()); |
| 1536 } | 1536 } |
| 1537 } | 1537 } |
| 1538 | 1538 |
| 1539 void FrameSelection::focusedOrActiveStateChanged() | 1539 void FrameSelection::focusedOrActiveStateChanged() |
| 1540 { | 1540 { |
| 1541 bool activeAndFocused = isFocusedAndActive(); | 1541 bool activeAndFocused = isFocusedAndActive(); |
| 1542 | 1542 |
| 1543 RefPtr<Document> document = m_frame->document(); |
| 1544 document->updateStyleIfNeeded(); |
| 1545 |
| 1543 // Because RenderObject::selectionBackgroundColor() and | 1546 // Because RenderObject::selectionBackgroundColor() and |
| 1544 // RenderObject::selectionForegroundColor() check if the frame is active, | 1547 // RenderObject::selectionForegroundColor() check if the frame is active, |
| 1545 // we have to update places those colors were painted. | 1548 // we have to update places those colors were painted. |
| 1546 if (RenderView* view = m_frame->document()->renderView()) | 1549 if (RenderView* view = document->renderView()) |
| 1547 view->repaintSelection(); | 1550 view->repaintSelection(); |
| 1548 | 1551 |
| 1549 // Caret appears in the active frame. | 1552 // Caret appears in the active frame. |
| 1550 if (activeAndFocused) | 1553 if (activeAndFocused) |
| 1551 setSelectionFromNone(); | 1554 setSelectionFromNone(); |
| 1552 else | 1555 else |
| 1553 m_frame->spellChecker().spellCheckAfterBlur(); | 1556 m_frame->spellChecker().spellCheckAfterBlur(); |
| 1554 setCaretVisibility(activeAndFocused ? Visible : Hidden); | 1557 setCaretVisibility(activeAndFocused ? Visible : Hidden); |
| 1555 | 1558 |
| 1556 // Update for caps lock state | 1559 // Update for caps lock state |
| 1557 m_frame->eventHandler()->capsLockStateMayHaveChanged(); | 1560 m_frame->eventHandler()->capsLockStateMayHaveChanged(); |
| 1558 | 1561 |
| 1559 // Because StyleResolver::checkOneSelector() and | 1562 // Because StyleResolver::checkOneSelector() and |
| 1560 // RenderTheme::isFocused() check if the frame is active, we have to | 1563 // RenderTheme::isFocused() check if the frame is active, we have to |
| 1561 // update style and theme state that depended on those. | 1564 // update style and theme state that depended on those. |
| 1562 if (Element* element = m_frame->document()->focusedElement()) { | 1565 if (Element* element = document->focusedElement()) { |
| 1563 element->setNeedsStyleRecalc(); | 1566 element->setNeedsStyleRecalc(); |
| 1564 if (RenderObject* renderer = element->renderer()) { | 1567 if (RenderObject* renderer = element->renderer()) { |
| 1565 if (renderer && renderer->style()->hasAppearance()) | 1568 if (renderer && renderer->style()->hasAppearance()) |
| 1566 RenderTheme::theme().stateChanged(renderer, FocusState); | 1569 RenderTheme::theme().stateChanged(renderer, FocusState); |
| 1567 } | 1570 } |
| 1568 } | 1571 } |
| 1569 | 1572 |
| 1570 // Secure keyboard entry is set by the active frame. | 1573 // Secure keyboard entry is set by the active frame. |
| 1571 if (m_frame->document()->useSecureKeyboardEntryWhenActive()) | 1574 if (document->useSecureKeyboardEntryWhenActive()) |
| 1572 setUseSecureKeyboardEntry(activeAndFocused); | 1575 setUseSecureKeyboardEntry(activeAndFocused); |
| 1573 } | 1576 } |
| 1574 | 1577 |
| 1575 void FrameSelection::pageActivationChanged() | 1578 void FrameSelection::pageActivationChanged() |
| 1576 { | 1579 { |
| 1577 focusedOrActiveStateChanged(); | 1580 focusedOrActiveStateChanged(); |
| 1578 } | 1581 } |
| 1579 | 1582 |
| 1580 void FrameSelection::updateSecureKeyboardEntryIfActive() | 1583 void FrameSelection::updateSecureKeyboardEntryIfActive() |
| 1581 { | 1584 { |
| (...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1798 | 1801 |
| 1799 String FrameSelection::selectedTextForClipboard() const | 1802 String FrameSelection::selectedTextForClipboard() const |
| 1800 { | 1803 { |
| 1801 if (m_frame->settings() && m_frame->settings()->selectionIncludesAltImageTex
t()) | 1804 if (m_frame->settings() && m_frame->settings()->selectionIncludesAltImageTex
t()) |
| 1802 return extractSelectedText(*this, TextIteratorEmitsImageAltText); | 1805 return extractSelectedText(*this, TextIteratorEmitsImageAltText); |
| 1803 return selectedText(); | 1806 return selectedText(); |
| 1804 } | 1807 } |
| 1805 | 1808 |
| 1806 FloatRect FrameSelection::bounds(bool clipToVisibleContent) const | 1809 FloatRect FrameSelection::bounds(bool clipToVisibleContent) const |
| 1807 { | 1810 { |
| 1808 RenderView* root = m_frame->contentRenderer(); | 1811 m_frame->document()->updateStyleIfNeeded(); |
| 1812 |
| 1809 FrameView* view = m_frame->view(); | 1813 FrameView* view = m_frame->view(); |
| 1810 if (!root || !view) | 1814 RenderView* renderView = m_frame->contentRenderer(); |
| 1811 return LayoutRect(); | |
| 1812 | 1815 |
| 1813 LayoutRect selectionRect = root->selectionBounds(clipToVisibleContent); | 1816 if (!view || !renderView) |
| 1817 return FloatRect(); |
| 1818 |
| 1819 LayoutRect selectionRect = renderView->selectionBounds(clipToVisibleContent)
; |
| 1814 return clipToVisibleContent ? intersection(selectionRect, view->visibleConte
ntRect()) : selectionRect; | 1820 return clipToVisibleContent ? intersection(selectionRect, view->visibleConte
ntRect()) : selectionRect; |
| 1815 } | 1821 } |
| 1816 | 1822 |
| 1817 void FrameSelection::getClippedVisibleTextRectangles(Vector<FloatRect>& rectangl
es) const | 1823 void FrameSelection::getClippedVisibleTextRectangles(Vector<FloatRect>& rectangl
es) const |
| 1818 { | 1824 { |
| 1819 RenderView* root = m_frame->contentRenderer(); | 1825 RenderView* root = m_frame->contentRenderer(); |
| 1820 if (!root) | 1826 if (!root) |
| 1821 return; | 1827 return; |
| 1822 | 1828 |
| 1823 FloatRect visibleContentRect = m_frame->view()->visibleContentRect(); | 1829 FloatRect visibleContentRect = m_frame->view()->visibleContentRect(); |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1964 sel.showTreeForThis(); | 1970 sel.showTreeForThis(); |
| 1965 } | 1971 } |
| 1966 | 1972 |
| 1967 void showTree(const WebCore::FrameSelection* sel) | 1973 void showTree(const WebCore::FrameSelection* sel) |
| 1968 { | 1974 { |
| 1969 if (sel) | 1975 if (sel) |
| 1970 sel->showTreeForThis(); | 1976 sel->showTreeForThis(); |
| 1971 } | 1977 } |
| 1972 | 1978 |
| 1973 #endif | 1979 #endif |
| OLD | NEW |