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

Side by Side Diff: sky/engine/core/page/EventHandler.cpp

Issue 928393003: Remove the concept of document.documentElement (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 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
« no previous file with comments | « sky/engine/core/page/EventHandler.h ('k') | sky/engine/core/rendering/RenderBlock.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 return; 150 return;
151 if (nodeToBeRemoved.isInShadowTree()) { 151 if (nodeToBeRemoved.isInShadowTree()) {
152 m_clickNode = nodeToBeRemoved.parentOrShadowHostNode(); 152 m_clickNode = nodeToBeRemoved.parentOrShadowHostNode();
153 } else { 153 } else {
154 // We don't dispatch click events if the mousedown node is removed 154 // We don't dispatch click events if the mousedown node is removed
155 // before a mouseup event. It is compatible with IE and Firefox. 155 // before a mouseup event. It is compatible with IE and Firefox.
156 m_clickNode = nullptr; 156 m_clickNode = nullptr;
157 } 157 }
158 } 158 }
159 159
160 void EventHandler::selectClosestWordFromHitTestResult(const HitTestResult& resul t, AppendTrailingWhitespace appendTrailingWhitespace)
161 {
162 Node* innerNode = result.targetNode();
163 VisibleSelection newSelection;
164
165 if (innerNode && innerNode->renderer()) {
166 VisiblePosition pos(innerNode->renderer()->positionForPoint(result.local Point()));
167 if (pos.isNotNull()) {
168 newSelection = VisibleSelection(pos);
169 newSelection.expandUsingGranularity(WordGranularity);
170 }
171
172 if (appendTrailingWhitespace == ShouldAppendTrailingWhitespace && newSel ection.isRange())
173 newSelection.appendTrailingWhitespace();
174 }
175 }
176
177 void EventHandler::selectClosestMisspellingFromHitTestResult(const HitTestResult & result, AppendTrailingWhitespace appendTrailingWhitespace)
178 {
179 Node* innerNode = result.targetNode();
180 VisibleSelection newSelection;
181
182 if (innerNode && innerNode->renderer()) {
183 VisiblePosition pos(innerNode->renderer()->positionForPoint(result.local Point()));
184 Position start = pos.deepEquivalent();
185 Position end = pos.deepEquivalent();
186 if (pos.isNotNull()) {
187 DocumentMarkerVector markers = innerNode->document().markers().marke rsInRange(makeRange(pos, pos).get(), DocumentMarker::MisspellingMarkers());
188 if (markers.size() == 1) {
189 start.moveToOffset(markers[0]->startOffset());
190 end.moveToOffset(markers[0]->endOffset());
191 newSelection = VisibleSelection(start, end);
192 }
193 }
194
195 if (appendTrailingWhitespace == ShouldAppendTrailingWhitespace && newSel ection.isRange())
196 newSelection.appendTrailingWhitespace();
197 }
198 }
199
200 HitTestResult EventHandler::hitTestResultAtPoint(const LayoutPoint& point, HitTe stRequest::HitTestRequestType hitType, const LayoutSize& padding) 160 HitTestResult EventHandler::hitTestResultAtPoint(const LayoutPoint& point, HitTe stRequest::HitTestRequestType hitType, const LayoutSize& padding)
201 { 161 {
202 TRACE_EVENT0("blink", "EventHandler::hitTestResultAtPoint"); 162 TRACE_EVENT0("blink", "EventHandler::hitTestResultAtPoint");
203 163
204 HitTestResult result(point, padding.height(), padding.width(), padding.heigh t(), padding.width()); 164 HitTestResult result(point, padding.height(), padding.width(), padding.heigh t(), padding.width());
205 165
206 // RenderView::hitTest causes a layout, and we don't want to hit that until the first 166 // RenderView::hitTest causes a layout, and we don't want to hit that until the first
207 // layout because until then, there is nothing shown on the screen - the use r can't 167 // layout because until then, there is nothing shown on the screen - the use r can't
208 // have intentionally clicked on something belonging to this page. Furthermo re, 168 // have intentionally clicked on something belonging to this page. Furthermo re,
209 // mousemove events before the first layout should not lead to a premature l ayout() 169 // mousemove events before the first layout should not lead to a premature l ayout()
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 bool EventHandler::dragHysteresisExceeded(const FloatPoint& floatDragViewportLoc ation) const 389 bool EventHandler::dragHysteresisExceeded(const FloatPoint& floatDragViewportLoc ation) const
430 { 390 {
431 return dragHysteresisExceeded(flooredIntPoint(floatDragViewportLocation)); 391 return dragHysteresisExceeded(flooredIntPoint(floatDragViewportLocation));
432 } 392 }
433 393
434 bool EventHandler::dragHysteresisExceeded(const IntPoint& dragViewportLocation) const 394 bool EventHandler::dragHysteresisExceeded(const IntPoint& dragViewportLocation) const
435 { 395 {
436 return false; 396 return false;
437 } 397 }
438 398
399 // TODO(abarth): This should just be targetForKeyboardEvent
400 static Node* eventTargetNodeForDocument(Document* document)
401 {
402 if (Node* node = document->focusedElement())
403 return node;
404 return document;
405 }
406
439 bool EventHandler::handleTextInputEvent(const String& text, Event* underlyingEve nt, TextEventInputType inputType) 407 bool EventHandler::handleTextInputEvent(const String& text, Event* underlyingEve nt, TextEventInputType inputType)
440 { 408 {
441 // Platforms should differentiate real commands like selectAll from text inp ut in disguise (like insertNewline), 409 // Platforms should differentiate real commands like selectAll from text inp ut in disguise (like insertNewline),
442 // and avoid dispatching text input events from keydown default handlers. 410 // and avoid dispatching text input events from keydown default handlers.
443 ASSERT(!underlyingEvent || !underlyingEvent->isKeyboardEvent() || toKeyboard Event(underlyingEvent)->type() == EventTypeNames::keypress); 411 ASSERT(!underlyingEvent || !underlyingEvent->isKeyboardEvent() || toKeyboard Event(underlyingEvent)->type() == EventTypeNames::keypress);
444 412
445 if (!m_frame) 413 if (!m_frame)
446 return false; 414 return false;
447 415
448 EventTarget* target; 416 EventTarget* target;
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
523 491
524 void EventHandler::focusDocumentView() 492 void EventHandler::focusDocumentView()
525 { 493 {
526 Page* page = m_frame->page(); 494 Page* page = m_frame->page();
527 if (!page) 495 if (!page)
528 return; 496 return;
529 page->focusController().focusDocumentView(m_frame); 497 page->focusController().focusDocumentView(m_frame);
530 } 498 }
531 499
532 } // namespace blink 500 } // namespace blink
OLDNEW
« no previous file with comments | « sky/engine/core/page/EventHandler.h ('k') | sky/engine/core/rendering/RenderBlock.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698