Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(829)

Side by Side Diff: third_party/WebKit/Source/core/editing/commands/EditorCommand.cpp

Issue 2616623002: Do not send redundant selectionchange-events (decouple focus) (Closed)
Patch Set: Fix LayoutTests that create selections within SVG documents Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 1870 matching lines...) Expand 10 before | Expand all | Expand 10 after
1881 return frame.editor().canDHTMLCut() || frame.editor().canCut(); 1881 return frame.editor().canDHTMLCut() || frame.editor().canCut();
1882 } 1882 }
1883 1883
1884 static bool enabledInEditableText(LocalFrame& frame, 1884 static bool enabledInEditableText(LocalFrame& frame,
1885 Event* event, 1885 Event* event,
1886 EditorCommandSource) { 1886 EditorCommandSource) {
1887 frame.document()->updateStyleAndLayoutIgnorePendingStylesheets(); 1887 frame.document()->updateStyleAndLayoutIgnorePendingStylesheets();
1888 return frame.editor().selectionForCommand(event).rootEditableElement(); 1888 return frame.editor().selectionForCommand(event).rootEditableElement();
1889 } 1889 }
1890 1890
1891 static bool enabledInFocusedEditableText(LocalFrame& frame,
1892 Event* event,
1893 EditorCommandSource dummy) {
1894 if (!enabledInEditableText(frame, event, dummy))
1895 return false;
1896
1897 const Element* const focusedElement = frame.document()->focusedElement();
1898 if (!focusedElement->containsIncludingHostElements(
1899 *frame.selection()
1900 .computeVisibleSelectionInDOMTreeDeprecated()
1901 .start()
1902 .computeContainerNode())) {
1903 // We should not move cursor if selected text does not have focus.
1904 return false;
1905 }
1906
1907 return true;
1908 }
1909
1891 static bool enabledDelete(LocalFrame& frame, 1910 static bool enabledDelete(LocalFrame& frame,
1892 Event* event, 1911 Event* event,
1893 EditorCommandSource source) { 1912 EditorCommandSource source) {
1894 switch (source) { 1913 switch (source) {
1895 case CommandFromMenuOrKeyBinding: 1914 case CommandFromMenuOrKeyBinding:
1896 return frame.editor().canDelete(); 1915 return frame.editor().canDelete();
1897 case CommandFromDOM: 1916 case CommandFromDOM:
1898 // "Delete" from DOM is like delete/backspace keypress, affects selected 1917 // "Delete" from DOM is like delete/backspace keypress, affects selected
1899 // range if non-empty, otherwise removes a character 1918 // range if non-empty, otherwise removes a character
1900 return enabledInEditableText(frame, event, source); 1919 return enabledInEditableText(frame, event, source);
(...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after
2255 stateTextWritingDirectionRightToLeft, valueNull, notTextInsertion, 2274 stateTextWritingDirectionRightToLeft, valueNull, notTextInsertion,
2256 doNotAllowExecutionWhenDisabled}, 2275 doNotAllowExecutionWhenDisabled},
2257 {WebEditingCommandType::MoveBackward, executeMoveBackward, 2276 {WebEditingCommandType::MoveBackward, executeMoveBackward,
2258 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, 2277 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone,
2259 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, 2278 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled},
2260 {WebEditingCommandType::MoveBackwardAndModifySelection, 2279 {WebEditingCommandType::MoveBackwardAndModifySelection,
2261 executeMoveBackwardAndModifySelection, supportedFromMenuOrKeyBinding, 2280 executeMoveBackwardAndModifySelection, supportedFromMenuOrKeyBinding,
2262 enabledVisibleSelection, stateNone, valueNull, notTextInsertion, 2281 enabledVisibleSelection, stateNone, valueNull, notTextInsertion,
2263 doNotAllowExecutionWhenDisabled}, 2282 doNotAllowExecutionWhenDisabled},
2264 {WebEditingCommandType::MoveDown, executeMoveDown, 2283 {WebEditingCommandType::MoveDown, executeMoveDown,
2265 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, 2284 supportedFromMenuOrKeyBinding, enabledInFocusedEditableText, stateNone,
2266 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, 2285 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled},
2267 {WebEditingCommandType::MoveDownAndModifySelection, 2286 {WebEditingCommandType::MoveDownAndModifySelection,
2268 executeMoveDownAndModifySelection, supportedFromMenuOrKeyBinding, 2287 executeMoveDownAndModifySelection, supportedFromMenuOrKeyBinding,
2269 enabledVisibleSelection, stateNone, valueNull, notTextInsertion, 2288 enabledVisibleSelection, stateNone, valueNull, notTextInsertion,
2270 doNotAllowExecutionWhenDisabled}, 2289 doNotAllowExecutionWhenDisabled},
2271 {WebEditingCommandType::MoveForward, executeMoveForward, 2290 {WebEditingCommandType::MoveForward, executeMoveForward,
2272 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, 2291 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone,
2273 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, 2292 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled},
2274 {WebEditingCommandType::MoveForwardAndModifySelection, 2293 {WebEditingCommandType::MoveForwardAndModifySelection,
2275 executeMoveForwardAndModifySelection, supportedFromMenuOrKeyBinding, 2294 executeMoveForwardAndModifySelection, supportedFromMenuOrKeyBinding,
2276 enabledVisibleSelection, stateNone, valueNull, notTextInsertion, 2295 enabledVisibleSelection, stateNone, valueNull, notTextInsertion,
2277 doNotAllowExecutionWhenDisabled}, 2296 doNotAllowExecutionWhenDisabled},
2278 {WebEditingCommandType::MoveLeft, executeMoveLeft, 2297 {WebEditingCommandType::MoveLeft, executeMoveLeft,
2279 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, 2298 supportedFromMenuOrKeyBinding, enabledInFocusedEditableText, stateNone,
2280 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, 2299 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled},
2281 {WebEditingCommandType::MoveLeftAndModifySelection, 2300 {WebEditingCommandType::MoveLeftAndModifySelection,
2282 executeMoveLeftAndModifySelection, supportedFromMenuOrKeyBinding, 2301 executeMoveLeftAndModifySelection, supportedFromMenuOrKeyBinding,
2283 enabledVisibleSelection, stateNone, valueNull, notTextInsertion, 2302 enabledVisibleSelection, stateNone, valueNull, notTextInsertion,
2284 doNotAllowExecutionWhenDisabled}, 2303 doNotAllowExecutionWhenDisabled},
2285 {WebEditingCommandType::MovePageDown, executeMovePageDown, 2304 {WebEditingCommandType::MovePageDown, executeMovePageDown,
2286 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, 2305 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone,
2287 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, 2306 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled},
2288 {WebEditingCommandType::MovePageDownAndModifySelection, 2307 {WebEditingCommandType::MovePageDownAndModifySelection,
2289 executeMovePageDownAndModifySelection, supportedFromMenuOrKeyBinding, 2308 executeMovePageDownAndModifySelection, supportedFromMenuOrKeyBinding,
(...skipping 15 matching lines...) Expand all
2305 supportedFromMenuOrKeyBinding, enabledVisibleSelection, stateNone, 2324 supportedFromMenuOrKeyBinding, enabledVisibleSelection, stateNone,
2306 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, 2325 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled},
2307 {WebEditingCommandType::MoveParagraphForward, executeMoveParagraphForward, 2326 {WebEditingCommandType::MoveParagraphForward, executeMoveParagraphForward,
2308 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, 2327 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone,
2309 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, 2328 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled},
2310 {WebEditingCommandType::MoveParagraphForwardAndModifySelection, 2329 {WebEditingCommandType::MoveParagraphForwardAndModifySelection,
2311 executeMoveParagraphForwardAndModifySelection, 2330 executeMoveParagraphForwardAndModifySelection,
2312 supportedFromMenuOrKeyBinding, enabledVisibleSelection, stateNone, 2331 supportedFromMenuOrKeyBinding, enabledVisibleSelection, stateNone,
2313 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, 2332 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled},
2314 {WebEditingCommandType::MoveRight, executeMoveRight, 2333 {WebEditingCommandType::MoveRight, executeMoveRight,
2315 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, 2334 supportedFromMenuOrKeyBinding, enabledInFocusedEditableText, stateNone,
2316 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, 2335 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled},
2317 {WebEditingCommandType::MoveRightAndModifySelection, 2336 {WebEditingCommandType::MoveRightAndModifySelection,
2318 executeMoveRightAndModifySelection, supportedFromMenuOrKeyBinding, 2337 executeMoveRightAndModifySelection, supportedFromMenuOrKeyBinding,
2319 enabledVisibleSelection, stateNone, valueNull, notTextInsertion, 2338 enabledVisibleSelection, stateNone, valueNull, notTextInsertion,
2320 doNotAllowExecutionWhenDisabled}, 2339 doNotAllowExecutionWhenDisabled},
2321 {WebEditingCommandType::MoveToBeginningOfDocument, 2340 {WebEditingCommandType::MoveToBeginningOfDocument,
2322 executeMoveToBeginningOfDocument, supportedFromMenuOrKeyBinding, 2341 executeMoveToBeginningOfDocument, supportedFromMenuOrKeyBinding,
2323 enabledInEditableText, stateNone, valueNull, notTextInsertion, 2342 enabledInEditableText, stateNone, valueNull, notTextInsertion,
2324 doNotAllowExecutionWhenDisabled}, 2343 doNotAllowExecutionWhenDisabled},
2325 {WebEditingCommandType::MoveToBeginningOfDocumentAndModifySelection, 2344 {WebEditingCommandType::MoveToBeginningOfDocumentAndModifySelection,
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
2386 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, 2405 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone,
2387 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, 2406 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled},
2388 {WebEditingCommandType::MoveToRightEndOfLine, executeMoveToRightEndOfLine, 2407 {WebEditingCommandType::MoveToRightEndOfLine, executeMoveToRightEndOfLine,
2389 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, 2408 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone,
2390 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, 2409 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled},
2391 {WebEditingCommandType::MoveToRightEndOfLineAndModifySelection, 2410 {WebEditingCommandType::MoveToRightEndOfLineAndModifySelection,
2392 executeMoveToRightEndOfLineAndModifySelection, 2411 executeMoveToRightEndOfLineAndModifySelection,
2393 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, 2412 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone,
2394 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, 2413 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled},
2395 {WebEditingCommandType::MoveUp, executeMoveUp, 2414 {WebEditingCommandType::MoveUp, executeMoveUp,
2396 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, 2415 supportedFromMenuOrKeyBinding, enabledInFocusedEditableText, stateNone,
2397 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, 2416 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled},
2398 {WebEditingCommandType::MoveUpAndModifySelection, 2417 {WebEditingCommandType::MoveUpAndModifySelection,
2399 executeMoveUpAndModifySelection, supportedFromMenuOrKeyBinding, 2418 executeMoveUpAndModifySelection, supportedFromMenuOrKeyBinding,
2400 enabledVisibleSelection, stateNone, valueNull, notTextInsertion, 2419 enabledVisibleSelection, stateNone, valueNull, notTextInsertion,
2401 doNotAllowExecutionWhenDisabled}, 2420 doNotAllowExecutionWhenDisabled},
2402 {WebEditingCommandType::MoveWordBackward, executeMoveWordBackward, 2421 {WebEditingCommandType::MoveWordBackward, executeMoveWordBackward,
2403 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, 2422 supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone,
2404 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled}, 2423 valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled},
2405 {WebEditingCommandType::MoveWordBackwardAndModifySelection, 2424 {WebEditingCommandType::MoveWordBackwardAndModifySelection,
2406 executeMoveWordBackwardAndModifySelection, supportedFromMenuOrKeyBinding, 2425 executeMoveWordBackwardAndModifySelection, supportedFromMenuOrKeyBinding,
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after
2752 *m_frame, DirectionBackward, WordGranularity); 2771 *m_frame, DirectionBackward, WordGranularity);
2753 case WebEditingCommandType::DeleteWordForward: 2772 case WebEditingCommandType::DeleteWordForward:
2754 return RangesFromCurrentSelectionOrExtendCaret(*m_frame, DirectionForward, 2773 return RangesFromCurrentSelectionOrExtendCaret(*m_frame, DirectionForward,
2755 WordGranularity); 2774 WordGranularity);
2756 default: 2775 default:
2757 return targetRangesForInputEvent(*target); 2776 return targetRangesForInputEvent(*target);
2758 } 2777 }
2759 } 2778 }
2760 2779
2761 } // namespace blink 2780 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698