| 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 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 304 , m_mouseDownTimestamp(0) | 304 , m_mouseDownTimestamp(0) |
| 305 , m_widgetIsLatched(false) | 305 , m_widgetIsLatched(false) |
| 306 , m_originatingTouchPointTargetKey(0) | 306 , m_originatingTouchPointTargetKey(0) |
| 307 , m_touchPressed(false) | 307 , m_touchPressed(false) |
| 308 , m_scrollGestureHandlingNode(0) | 308 , m_scrollGestureHandlingNode(0) |
| 309 , m_lastHitTestResultOverWidget(false) | 309 , m_lastHitTestResultOverWidget(false) |
| 310 , m_maxMouseMovedDuration(0) | 310 , m_maxMouseMovedDuration(0) |
| 311 , m_baseEventType(PlatformEvent::NoType) | 311 , m_baseEventType(PlatformEvent::NoType) |
| 312 , m_didStartDrag(false) | 312 , m_didStartDrag(false) |
| 313 , m_didLongPressInvokeContextMenu(false) | 313 , m_didLongPressInvokeContextMenu(false) |
| 314 #if ENABLE(CURSOR_VISIBILITY) | |
| 315 , m_autoHideCursorTimer(this, &EventHandler::autoHideCursorTimerFired) | |
| 316 #endif | |
| 317 { | 314 { |
| 318 } | 315 } |
| 319 | 316 |
| 320 EventHandler::~EventHandler() | 317 EventHandler::~EventHandler() |
| 321 { | 318 { |
| 322 ASSERT(!m_fakeMouseMoveEventTimer.isActive()); | 319 ASSERT(!m_fakeMouseMoveEventTimer.isActive()); |
| 323 #if ENABLE(CURSOR_VISIBILITY) | |
| 324 ASSERT(!m_autoHideCursorTimer.isActive()); | |
| 325 #endif | |
| 326 } | 320 } |
| 327 | 321 |
| 328 DragState& EventHandler::dragState() | 322 DragState& EventHandler::dragState() |
| 329 { | 323 { |
| 330 DEFINE_STATIC_LOCAL(DragState, state, ()); | 324 DEFINE_STATIC_LOCAL(DragState, state, ()); |
| 331 return state; | 325 return state; |
| 332 } | 326 } |
| 333 | 327 |
| 334 void EventHandler::clear() | 328 void EventHandler::clear() |
| 335 { | 329 { |
| 336 m_hoverTimer.stop(); | 330 m_hoverTimer.stop(); |
| 337 m_fakeMouseMoveEventTimer.stop(); | 331 m_fakeMouseMoveEventTimer.stop(); |
| 338 #if ENABLE(CURSOR_VISIBILITY) | |
| 339 cancelAutoHideCursorTimer(); | |
| 340 #endif | |
| 341 m_resizeLayer = 0; | 332 m_resizeLayer = 0; |
| 342 m_nodeUnderMouse = 0; | 333 m_nodeUnderMouse = 0; |
| 343 m_lastNodeUnderMouse = 0; | 334 m_lastNodeUnderMouse = 0; |
| 344 #if ENABLE(SVG) | 335 #if ENABLE(SVG) |
| 345 m_instanceUnderMouse = 0; | 336 m_instanceUnderMouse = 0; |
| 346 m_lastInstanceUnderMouse = 0; | 337 m_lastInstanceUnderMouse = 0; |
| 347 #endif | 338 #endif |
| 348 m_lastMouseMoveEventSubframe = 0; | 339 m_lastMouseMoveEventSubframe = 0; |
| 349 m_lastScrollbarUnderMouse = 0; | 340 m_lastScrollbarUnderMouse = 0; |
| 350 m_clickCount = 0; | 341 m_clickCount = 0; |
| (...skipping 801 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1152 if (panScrollInProgress()) | 1143 if (panScrollInProgress()) |
| 1153 return NoCursorChange; | 1144 return NoCursorChange; |
| 1154 #endif | 1145 #endif |
| 1155 | 1146 |
| 1156 Node* node = event.targetNode(); | 1147 Node* node = event.targetNode(); |
| 1157 RenderObject* renderer = node ? node->renderer() : 0; | 1148 RenderObject* renderer = node ? node->renderer() : 0; |
| 1158 RenderStyle* style = renderer ? renderer->style() : 0; | 1149 RenderStyle* style = renderer ? renderer->style() : 0; |
| 1159 bool horizontalText = !style || style->isHorizontalWritingMode(); | 1150 bool horizontalText = !style || style->isHorizontalWritingMode(); |
| 1160 const Cursor& iBeam = horizontalText ? iBeamCursor() : verticalTextCursor(); | 1151 const Cursor& iBeam = horizontalText ? iBeamCursor() : verticalTextCursor(); |
| 1161 | 1152 |
| 1162 #if ENABLE(CURSOR_VISIBILITY) | |
| 1163 if (style && style->cursorVisibility() == CursorVisibilityAutoHide) { | |
| 1164 UseCounter::count(m_frame->document(), UseCounter::CursorVisibility); | |
| 1165 startAutoHideCursorTimer(); | |
| 1166 } else | |
| 1167 cancelAutoHideCursorTimer(); | |
| 1168 #endif | |
| 1169 | |
| 1170 // During selection, use an I-beam no matter what we're over. | 1153 // During selection, use an I-beam no matter what we're over. |
| 1171 // If a drag may be starting or we're capturing mouse events for a particula
r node, don't treat this as a selection. | 1154 // If a drag may be starting or we're capturing mouse events for a particula
r node, don't treat this as a selection. |
| 1172 if (m_mousePressed && m_mouseDownMayStartSelect | 1155 if (m_mousePressed && m_mouseDownMayStartSelect |
| 1173 && !m_mouseDownMayStartDrag | 1156 && !m_mouseDownMayStartDrag |
| 1174 && m_frame->selection()->isCaretOrRange() && !m_capturingMouseEventsNode
) | 1157 && m_frame->selection()->isCaretOrRange() && !m_capturingMouseEventsNode
) |
| 1175 return iBeam; | 1158 return iBeam; |
| 1176 | 1159 |
| 1177 if (renderer) { | 1160 if (renderer) { |
| 1178 Cursor overrideCursor; | 1161 Cursor overrideCursor; |
| 1179 switch (renderer->getCursor(roundedIntPoint(event.localPoint()), overrid
eCursor)) { | 1162 switch (renderer->getCursor(roundedIntPoint(event.localPoint()), overrid
eCursor)) { |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1301 case CURSOR_WEBKIT_ZOOM_OUT: | 1284 case CURSOR_WEBKIT_ZOOM_OUT: |
| 1302 return zoomOutCursor(); | 1285 return zoomOutCursor(); |
| 1303 case CURSOR_WEBKIT_GRAB: | 1286 case CURSOR_WEBKIT_GRAB: |
| 1304 return grabCursor(); | 1287 return grabCursor(); |
| 1305 case CURSOR_WEBKIT_GRABBING: | 1288 case CURSOR_WEBKIT_GRABBING: |
| 1306 return grabbingCursor(); | 1289 return grabbingCursor(); |
| 1307 } | 1290 } |
| 1308 return pointerCursor(); | 1291 return pointerCursor(); |
| 1309 } | 1292 } |
| 1310 | 1293 |
| 1311 #if ENABLE(CURSOR_VISIBILITY) | |
| 1312 static const double timeWithoutMouseMovementBeforeHidingControls = 3; | |
| 1313 | |
| 1314 void EventHandler::startAutoHideCursorTimer() | |
| 1315 { | |
| 1316 Page* page = m_frame->page(); | |
| 1317 if (!page) | |
| 1318 return; | |
| 1319 | |
| 1320 m_autoHideCursorTimer.startOneShot(timeWithoutMouseMovementBeforeHidingContr
ols); | |
| 1321 | |
| 1322 // The fake mouse move event screws up the auto-hide feature (by resetting t
he auto-hide timer) | |
| 1323 // so cancel any pending fake mouse moves. | |
| 1324 if (m_fakeMouseMoveEventTimer.isActive()) | |
| 1325 m_fakeMouseMoveEventTimer.stop(); | |
| 1326 } | |
| 1327 | |
| 1328 void EventHandler::cancelAutoHideCursorTimer() | |
| 1329 { | |
| 1330 if (m_autoHideCursorTimer.isActive()) | |
| 1331 m_autoHideCursorTimer.stop(); | |
| 1332 } | |
| 1333 | |
| 1334 void EventHandler::autoHideCursorTimerFired(Timer<EventHandler>* timer) | |
| 1335 { | |
| 1336 ASSERT_UNUSED(timer, timer == &m_autoHideCursorTimer); | |
| 1337 m_currentMouseCursor = noneCursor(); | |
| 1338 FrameView* view = m_frame->view(); | |
| 1339 if (view && view->isActive()) | |
| 1340 view->setCursor(m_currentMouseCursor); | |
| 1341 } | |
| 1342 #endif | |
| 1343 | |
| 1344 static LayoutPoint documentPointForWindowPoint(Frame* frame, const IntPoint& win
dowPoint) | 1294 static LayoutPoint documentPointForWindowPoint(Frame* frame, const IntPoint& win
dowPoint) |
| 1345 { | 1295 { |
| 1346 FrameView* view = frame->view(); | 1296 FrameView* view = frame->view(); |
| 1347 // FIXME: Is it really OK to use the wrong coordinates here when view is 0? | 1297 // FIXME: Is it really OK to use the wrong coordinates here when view is 0? |
| 1348 // Historically the code would just crash; this is clearly no worse than tha
t. | 1298 // Historically the code would just crash; this is clearly no worse than tha
t. |
| 1349 return view ? view->windowToContents(windowPoint) : windowPoint; | 1299 return view ? view->windowToContents(windowPoint) : windowPoint; |
| 1350 } | 1300 } |
| 1351 | 1301 |
| 1352 bool EventHandler::handleMousePressEvent(const PlatformMouseEvent& mouseEvent) | 1302 bool EventHandler::handleMousePressEvent(const PlatformMouseEvent& mouseEvent) |
| 1353 { | 1303 { |
| (...skipping 2601 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3955 unsigned EventHandler::accessKeyModifiers() | 3905 unsigned EventHandler::accessKeyModifiers() |
| 3956 { | 3906 { |
| 3957 #if OS(DARWIN) | 3907 #if OS(DARWIN) |
| 3958 return PlatformEvent::CtrlKey | PlatformEvent::AltKey; | 3908 return PlatformEvent::CtrlKey | PlatformEvent::AltKey; |
| 3959 #else | 3909 #else |
| 3960 return PlatformEvent::AltKey; | 3910 return PlatformEvent::AltKey; |
| 3961 #endif | 3911 #endif |
| 3962 } | 3912 } |
| 3963 | 3913 |
| 3964 } // namespace WebCore | 3914 } // namespace WebCore |
| OLD | NEW |