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 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) | 3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) |
4 * Copyright (C) 2009 Igalia S.L. | 4 * Copyright (C) 2009 Igalia S.L. |
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 1859 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1870 Event* event, | 1870 Event* event, |
1871 EditorCommandSource) { | 1871 EditorCommandSource) { |
1872 frame.document()->updateStyleAndLayoutIgnorePendingStylesheets(); | 1872 frame.document()->updateStyleAndLayoutIgnorePendingStylesheets(); |
1873 | 1873 |
1874 // We should update selection to canonicalize with current layout and style, | 1874 // We should update selection to canonicalize with current layout and style, |
1875 // before accessing |FrameSelection::selection()|. | 1875 // before accessing |FrameSelection::selection()|. |
1876 frame.selection().updateIfNeeded(); | 1876 frame.selection().updateIfNeeded(); |
1877 return frame.editor().selectionForCommand(event).rootEditableElement(); | 1877 return frame.editor().selectionForCommand(event).rootEditableElement(); |
1878 } | 1878 } |
1879 | 1879 |
| 1880 static bool enabledInFocusedEditableText(LocalFrame& frame, |
| 1881 Event* event, |
| 1882 EditorCommandSource dummy) { |
| 1883 if (!enabledInEditableText(frame, event, dummy)) |
| 1884 return false; |
| 1885 |
| 1886 const Element* const focusedElement = frame.document()->focusedElement(); |
| 1887 if (!focusedElement->containsIncludingHostElements( |
| 1888 *frame.selection().start().computeContainerNode())) { |
| 1889 // We should not move cursor if selected text does not have focus. |
| 1890 return false; |
| 1891 } |
| 1892 |
| 1893 return true; |
| 1894 } |
| 1895 |
1880 static bool enabledDelete(LocalFrame& frame, | 1896 static bool enabledDelete(LocalFrame& frame, |
1881 Event* event, | 1897 Event* event, |
1882 EditorCommandSource source) { | 1898 EditorCommandSource source) { |
1883 switch (source) { | 1899 switch (source) { |
1884 case CommandFromMenuOrKeyBinding: | 1900 case CommandFromMenuOrKeyBinding: |
1885 return frame.editor().canDelete(); | 1901 return frame.editor().canDelete(); |
1886 case CommandFromDOM: | 1902 case CommandFromDOM: |
1887 // "Delete" from DOM is like delete/backspace keypress, affects selected | 1903 // "Delete" from DOM is like delete/backspace keypress, affects selected |
1888 // range if non-empty, otherwise removes a character | 1904 // range if non-empty, otherwise removes a character |
1889 return enabledInEditableText(frame, event, source); | 1905 return enabledInEditableText(frame, event, source); |
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2239 stateTextWritingDirectionRightToLeft, valueNull, notTextInsertion, | 2255 stateTextWritingDirectionRightToLeft, valueNull, notTextInsertion, |
2240 doNotAllowExecutionWhenDisabled}, | 2256 doNotAllowExecutionWhenDisabled}, |
2241 {WebEditingCommandType::MoveBackward, executeMoveBackward, | 2257 {WebEditingCommandType::MoveBackward, executeMoveBackward, |
2242 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, | 2258 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, |
2243 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, | 2259 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, |
2244 {WebEditingCommandType::MoveBackwardAndModifySelection, | 2260 {WebEditingCommandType::MoveBackwardAndModifySelection, |
2245 executeMoveBackwardAndModifySelection, supportedFromMenuOrKeyBinding, | 2261 executeMoveBackwardAndModifySelection, supportedFromMenuOrKeyBinding, |
2246 enabledVisibleSelection, stateNone, valueNull, notTextInsertion, | 2262 enabledVisibleSelection, stateNone, valueNull, notTextInsertion, |
2247 doNotAllowExecutionWhenDisabled}, | 2263 doNotAllowExecutionWhenDisabled}, |
2248 {WebEditingCommandType::MoveDown, executeMoveDown, | 2264 {WebEditingCommandType::MoveDown, executeMoveDown, |
2249 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, | 2265 supportedFromMenuOrKeyBinding, enabledInFocusedEditableText, stateNone, |
2250 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, | 2266 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, |
2251 {WebEditingCommandType::MoveDownAndModifySelection, | 2267 {WebEditingCommandType::MoveDownAndModifySelection, |
2252 executeMoveDownAndModifySelection, supportedFromMenuOrKeyBinding, | 2268 executeMoveDownAndModifySelection, supportedFromMenuOrKeyBinding, |
2253 enabledVisibleSelection, stateNone, valueNull, notTextInsertion, | 2269 enabledVisibleSelection, stateNone, valueNull, notTextInsertion, |
2254 doNotAllowExecutionWhenDisabled}, | 2270 doNotAllowExecutionWhenDisabled}, |
2255 {WebEditingCommandType::MoveForward, executeMoveForward, | 2271 {WebEditingCommandType::MoveForward, executeMoveForward, |
2256 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, | 2272 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, |
2257 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, | 2273 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, |
2258 {WebEditingCommandType::MoveForwardAndModifySelection, | 2274 {WebEditingCommandType::MoveForwardAndModifySelection, |
2259 executeMoveForwardAndModifySelection, supportedFromMenuOrKeyBinding, | 2275 executeMoveForwardAndModifySelection, supportedFromMenuOrKeyBinding, |
2260 enabledVisibleSelection, stateNone, valueNull, notTextInsertion, | 2276 enabledVisibleSelection, stateNone, valueNull, notTextInsertion, |
2261 doNotAllowExecutionWhenDisabled}, | 2277 doNotAllowExecutionWhenDisabled}, |
2262 {WebEditingCommandType::MoveLeft, executeMoveLeft, | 2278 {WebEditingCommandType::MoveLeft, executeMoveLeft, |
2263 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, | 2279 supportedFromMenuOrKeyBinding, enabledInFocusedEditableText, stateNone, |
2264 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, | 2280 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, |
2265 {WebEditingCommandType::MoveLeftAndModifySelection, | 2281 {WebEditingCommandType::MoveLeftAndModifySelection, |
2266 executeMoveLeftAndModifySelection, supportedFromMenuOrKeyBinding, | 2282 executeMoveLeftAndModifySelection, supportedFromMenuOrKeyBinding, |
2267 enabledVisibleSelection, stateNone, valueNull, notTextInsertion, | 2283 enabledVisibleSelection, stateNone, valueNull, notTextInsertion, |
2268 doNotAllowExecutionWhenDisabled}, | 2284 doNotAllowExecutionWhenDisabled}, |
2269 {WebEditingCommandType::MovePageDown, executeMovePageDown, | 2285 {WebEditingCommandType::MovePageDown, executeMovePageDown, |
2270 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, | 2286 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, |
2271 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, | 2287 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, |
2272 {WebEditingCommandType::MovePageDownAndModifySelection, | 2288 {WebEditingCommandType::MovePageDownAndModifySelection, |
2273 executeMovePageDownAndModifySelection, supportedFromMenuOrKeyBinding, | 2289 executeMovePageDownAndModifySelection, supportedFromMenuOrKeyBinding, |
(...skipping 15 matching lines...) Expand all Loading... |
2289 supportedFromMenuOrKeyBinding, enabledVisibleSelection, stateNone, | 2305 supportedFromMenuOrKeyBinding, enabledVisibleSelection, stateNone, |
2290 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, | 2306 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, |
2291 {WebEditingCommandType::MoveParagraphForward, executeMoveParagraphForward, | 2307 {WebEditingCommandType::MoveParagraphForward, executeMoveParagraphForward, |
2292 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, | 2308 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, |
2293 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, | 2309 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, |
2294 {WebEditingCommandType::MoveParagraphForwardAndModifySelection, | 2310 {WebEditingCommandType::MoveParagraphForwardAndModifySelection, |
2295 executeMoveParagraphForwardAndModifySelection, | 2311 executeMoveParagraphForwardAndModifySelection, |
2296 supportedFromMenuOrKeyBinding, enabledVisibleSelection, stateNone, | 2312 supportedFromMenuOrKeyBinding, enabledVisibleSelection, stateNone, |
2297 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, | 2313 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, |
2298 {WebEditingCommandType::MoveRight, executeMoveRight, | 2314 {WebEditingCommandType::MoveRight, executeMoveRight, |
2299 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, | 2315 supportedFromMenuOrKeyBinding, enabledInFocusedEditableText, stateNone, |
2300 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, | 2316 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, |
2301 {WebEditingCommandType::MoveRightAndModifySelection, | 2317 {WebEditingCommandType::MoveRightAndModifySelection, |
2302 executeMoveRightAndModifySelection, supportedFromMenuOrKeyBinding, | 2318 executeMoveRightAndModifySelection, supportedFromMenuOrKeyBinding, |
2303 enabledVisibleSelection, stateNone, valueNull, notTextInsertion, | 2319 enabledVisibleSelection, stateNone, valueNull, notTextInsertion, |
2304 doNotAllowExecutionWhenDisabled}, | 2320 doNotAllowExecutionWhenDisabled}, |
2305 {WebEditingCommandType::MoveToBeginningOfDocument, | 2321 {WebEditingCommandType::MoveToBeginningOfDocument, |
2306 executeMoveToBeginningOfDocument, supportedFromMenuOrKeyBinding, | 2322 executeMoveToBeginningOfDocument, supportedFromMenuOrKeyBinding, |
2307 enabledInEditableText, stateNone, valueNull, notTextInsertion, | 2323 enabledInEditableText, stateNone, valueNull, notTextInsertion, |
2308 doNotAllowExecutionWhenDisabled}, | 2324 doNotAllowExecutionWhenDisabled}, |
2309 {WebEditingCommandType::MoveToBeginningOfDocumentAndModifySelection, | 2325 {WebEditingCommandType::MoveToBeginningOfDocumentAndModifySelection, |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2370 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, | 2386 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, |
2371 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, | 2387 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, |
2372 {WebEditingCommandType::MoveToRightEndOfLine, executeMoveToRightEndOfLine, | 2388 {WebEditingCommandType::MoveToRightEndOfLine, executeMoveToRightEndOfLine, |
2373 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, | 2389 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, |
2374 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, | 2390 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, |
2375 {WebEditingCommandType::MoveToRightEndOfLineAndModifySelection, | 2391 {WebEditingCommandType::MoveToRightEndOfLineAndModifySelection, |
2376 executeMoveToRightEndOfLineAndModifySelection, | 2392 executeMoveToRightEndOfLineAndModifySelection, |
2377 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, | 2393 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, |
2378 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, | 2394 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, |
2379 {WebEditingCommandType::MoveUp, executeMoveUp, | 2395 {WebEditingCommandType::MoveUp, executeMoveUp, |
2380 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, | 2396 supportedFromMenuOrKeyBinding, enabledInFocusedEditableText, stateNone, |
2381 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, | 2397 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, |
2382 {WebEditingCommandType::MoveUpAndModifySelection, | 2398 {WebEditingCommandType::MoveUpAndModifySelection, |
2383 executeMoveUpAndModifySelection, supportedFromMenuOrKeyBinding, | 2399 executeMoveUpAndModifySelection, supportedFromMenuOrKeyBinding, |
2384 enabledVisibleSelection, stateNone, valueNull, notTextInsertion, | 2400 enabledVisibleSelection, stateNone, valueNull, notTextInsertion, |
2385 doNotAllowExecutionWhenDisabled}, | 2401 doNotAllowExecutionWhenDisabled}, |
2386 {WebEditingCommandType::MoveWordBackward, executeMoveWordBackward, | 2402 {WebEditingCommandType::MoveWordBackward, executeMoveWordBackward, |
2387 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, | 2403 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, |
2388 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, | 2404 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, |
2389 {WebEditingCommandType::MoveWordBackwardAndModifySelection, | 2405 {WebEditingCommandType::MoveWordBackwardAndModifySelection, |
2390 executeMoveWordBackwardAndModifySelection, supportedFromMenuOrKeyBinding, | 2406 executeMoveWordBackwardAndModifySelection, supportedFromMenuOrKeyBinding, |
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2735 *m_frame, DirectionBackward, WordGranularity); | 2751 *m_frame, DirectionBackward, WordGranularity); |
2736 case WebEditingCommandType::DeleteWordForward: | 2752 case WebEditingCommandType::DeleteWordForward: |
2737 return RangesFromCurrentSelectionOrExtendCaret(*m_frame, DirectionForward, | 2753 return RangesFromCurrentSelectionOrExtendCaret(*m_frame, DirectionForward, |
2738 WordGranularity); | 2754 WordGranularity); |
2739 default: | 2755 default: |
2740 return nullptr; | 2756 return nullptr; |
2741 } | 2757 } |
2742 } | 2758 } |
2743 | 2759 |
2744 } // namespace blink | 2760 } // namespace blink |
OLD | NEW |