OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv
ed. | 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv
ed. |
3 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) | 3 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) |
4 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies) | 4 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies) |
5 * | 5 * |
6 * Redistribution and use in source and binary forms, with or without | 6 * Redistribution and use in source and binary forms, with or without |
7 * modification, are permitted provided that the following conditions | 7 * modification, are permitted provided that the following conditions |
8 * are met: | 8 * are met: |
9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
389 return node->dispatchEvent(Event::createCancelableBubble(EventTypeNames::sel
ectstart)); | 389 return node->dispatchEvent(Event::createCancelableBubble(EventTypeNames::sel
ectstart)); |
390 } | 390 } |
391 | 391 |
392 static VisibleSelection expandSelectionToRespectUserSelectAll(Node* targetNode,
const VisibleSelection& selection) | 392 static VisibleSelection expandSelectionToRespectUserSelectAll(Node* targetNode,
const VisibleSelection& selection) |
393 { | 393 { |
394 Node* rootUserSelectAll = Position::rootUserSelectAllForNode(targetNode); | 394 Node* rootUserSelectAll = Position::rootUserSelectAllForNode(targetNode); |
395 if (!rootUserSelectAll) | 395 if (!rootUserSelectAll) |
396 return selection; | 396 return selection; |
397 | 397 |
398 VisibleSelection newSelection(selection); | 398 VisibleSelection newSelection(selection); |
399 newSelection.setBase(positionBeforeNode(rootUserSelectAll).upstream(CanCross
EditingBoundary)); | 399 newSelection.setBase(positionBeforeNode(*rootUserSelectAll).upstream(CanCros
sEditingBoundary)); |
400 newSelection.setExtent(positionAfterNode(rootUserSelectAll).downstream(CanCr
ossEditingBoundary)); | 400 newSelection.setExtent(positionAfterNode(*rootUserSelectAll).downstream(CanC
rossEditingBoundary)); |
401 | 401 |
402 return newSelection; | 402 return newSelection; |
403 } | 403 } |
404 | 404 |
405 bool EventHandler::updateSelectionForMouseDownDispatchingSelectStart(Node* targe
tNode, const VisibleSelection& selection, TextGranularity granularity) | 405 bool EventHandler::updateSelectionForMouseDownDispatchingSelectStart(Node* targe
tNode, const VisibleSelection& selection, TextGranularity granularity) |
406 { | 406 { |
407 if (Position::nodeIsUserSelectNone(targetNode)) | 407 if (Position::nodeIsUserSelectNone(targetNode)) |
408 return false; | 408 return false; |
409 | 409 |
410 if (!dispatchSelectStart(targetNode)) | 410 if (!dispatchSelectStart(targetNode)) |
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
772 | 772 |
773 if (m_selectionInitiationState != ExtendedSelection) { | 773 if (m_selectionInitiationState != ExtendedSelection) { |
774 // Always extend selection here because it's caused by a mouse drag | 774 // Always extend selection here because it's caused by a mouse drag |
775 m_selectionInitiationState = ExtendedSelection; | 775 m_selectionInitiationState = ExtendedSelection; |
776 newSelection = VisibleSelection(targetPosition); | 776 newSelection = VisibleSelection(targetPosition); |
777 } | 777 } |
778 | 778 |
779 if (RuntimeEnabledFeatures::userSelectAllEnabled()) { | 779 if (RuntimeEnabledFeatures::userSelectAllEnabled()) { |
780 Node* rootUserSelectAllForMousePressNode = Position::rootUserSelectAllFo
rNode(m_mousePressNode.get()); | 780 Node* rootUserSelectAllForMousePressNode = Position::rootUserSelectAllFo
rNode(m_mousePressNode.get()); |
781 if (rootUserSelectAllForMousePressNode && rootUserSelectAllForMousePress
Node == Position::rootUserSelectAllForNode(target)) { | 781 if (rootUserSelectAllForMousePressNode && rootUserSelectAllForMousePress
Node == Position::rootUserSelectAllForNode(target)) { |
782 newSelection.setBase(positionBeforeNode(rootUserSelectAllForMousePre
ssNode).upstream(CanCrossEditingBoundary)); | 782 newSelection.setBase(positionBeforeNode(*rootUserSelectAllForMousePr
essNode).upstream(CanCrossEditingBoundary)); |
783 newSelection.setExtent(positionAfterNode(rootUserSelectAllForMousePr
essNode).downstream(CanCrossEditingBoundary)); | 783 newSelection.setExtent(positionAfterNode(*rootUserSelectAllForMouseP
ressNode).downstream(CanCrossEditingBoundary)); |
784 } else { | 784 } else { |
785 // Reset base for user select all when base is inside user-select-al
l area and extent < base. | 785 // Reset base for user select all when base is inside user-select-al
l area and extent < base. |
786 if (rootUserSelectAllForMousePressNode && comparePositions(target->r
enderer()->positionForPoint(hitTestResult.localPoint()), m_mousePressNode->rende
rer()->positionForPoint(m_dragStartPos)) < 0) | 786 if (rootUserSelectAllForMousePressNode && comparePositions(target->r
enderer()->positionForPoint(hitTestResult.localPoint()), m_mousePressNode->rende
rer()->positionForPoint(m_dragStartPos)) < 0) |
787 newSelection.setBase(positionAfterNode(rootUserSelectAllForMouse
PressNode).downstream(CanCrossEditingBoundary)); | 787 newSelection.setBase(positionAfterNode(*rootUserSelectAllForMous
ePressNode).downstream(CanCrossEditingBoundary)); |
788 | 788 |
789 Node* rootUserSelectAllForTarget = Position::rootUserSelectAllForNod
e(target); | 789 Node* rootUserSelectAllForTarget = Position::rootUserSelectAllForNod
e(target); |
790 if (rootUserSelectAllForTarget && m_mousePressNode->renderer() && co
mparePositions(target->renderer()->positionForPoint(hitTestResult.localPoint()),
m_mousePressNode->renderer()->positionForPoint(m_dragStartPos)) < 0) | 790 if (rootUserSelectAllForTarget && m_mousePressNode->renderer() && co
mparePositions(target->renderer()->positionForPoint(hitTestResult.localPoint()),
m_mousePressNode->renderer()->positionForPoint(m_dragStartPos)) < 0) |
791 newSelection.setExtent(positionBeforeNode(rootUserSelectAllForTa
rget).upstream(CanCrossEditingBoundary)); | 791 newSelection.setExtent(positionBeforeNode(*rootUserSelectAllForT
arget).upstream(CanCrossEditingBoundary)); |
792 else if (rootUserSelectAllForTarget && m_mousePressNode->renderer()) | 792 else if (rootUserSelectAllForTarget && m_mousePressNode->renderer()) |
793 newSelection.setExtent(positionAfterNode(rootUserSelectAllForTar
get).downstream(CanCrossEditingBoundary)); | 793 newSelection.setExtent(positionAfterNode(*rootUserSelectAllForTa
rget).downstream(CanCrossEditingBoundary)); |
794 else | 794 else |
795 newSelection.setExtent(targetPosition); | 795 newSelection.setExtent(targetPosition); |
796 } | 796 } |
797 } else { | 797 } else { |
798 newSelection.setExtent(targetPosition); | 798 newSelection.setExtent(targetPosition); |
799 } | 799 } |
800 | 800 |
801 if (m_frame->selection().granularity() != CharacterGranularity) | 801 if (m_frame->selection().granularity() != CharacterGranularity) |
802 newSelection.expandUsingGranularity(m_frame->selection().granularity()); | 802 newSelection.expandUsingGranularity(m_frame->selection().granularity()); |
803 | 803 |
(...skipping 3221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4025 unsigned EventHandler::accessKeyModifiers() | 4025 unsigned EventHandler::accessKeyModifiers() |
4026 { | 4026 { |
4027 #if OS(MACOSX) | 4027 #if OS(MACOSX) |
4028 return PlatformEvent::CtrlKey | PlatformEvent::AltKey; | 4028 return PlatformEvent::CtrlKey | PlatformEvent::AltKey; |
4029 #else | 4029 #else |
4030 return PlatformEvent::AltKey; | 4030 return PlatformEvent::AltKey; |
4031 #endif | 4031 #endif |
4032 } | 4032 } |
4033 | 4033 |
4034 } // namespace WebCore | 4034 } // namespace WebCore |
OLD | NEW |