| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 535 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 546 } | 546 } |
| 547 | 547 |
| 548 if (m_pagePopup && pagePopup && m_pagePopup->hasSamePopupClient(pagePopup.ge
t())) { | 548 if (m_pagePopup && pagePopup && m_pagePopup->hasSamePopupClient(pagePopup.ge
t())) { |
| 549 // That click triggered a page popup that is the same as the one we just
closed. | 549 // That click triggered a page popup that is the same as the one we just
closed. |
| 550 // It needs to be closed. | 550 // It needs to be closed. |
| 551 closePagePopup(m_pagePopup.get()); | 551 closePagePopup(m_pagePopup.get()); |
| 552 } | 552 } |
| 553 | 553 |
| 554 // Dispatch the contextmenu event regardless of if the click was swallowed. | 554 // Dispatch the contextmenu event regardless of if the click was swallowed. |
| 555 // On Windows, we handle it on mouse up, not down. | 555 // On Windows, we handle it on mouse up, not down. |
| 556 #if OS(DARWIN) | 556 #if OS(MACOSX) |
| 557 if (event.button == WebMouseEvent::ButtonRight | 557 if (event.button == WebMouseEvent::ButtonRight |
| 558 || (event.button == WebMouseEvent::ButtonLeft | 558 || (event.button == WebMouseEvent::ButtonLeft |
| 559 && event.modifiers & WebMouseEvent::ControlKey)) | 559 && event.modifiers & WebMouseEvent::ControlKey)) |
| 560 mouseContextMenu(event); | 560 mouseContextMenu(event); |
| 561 #elif OS(UNIX) | 561 #elif OS(UNIX) |
| 562 if (event.button == WebMouseEvent::ButtonRight) | 562 if (event.button == WebMouseEvent::ButtonRight) |
| 563 mouseContextMenu(event); | 563 mouseContextMenu(event); |
| 564 #endif | 564 #endif |
| 565 } | 565 } |
| 566 | 566 |
| (...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 926 return true; | 926 return true; |
| 927 | 927 |
| 928 RefPtr<Frame> frame = focusedWebCoreFrame(); | 928 RefPtr<Frame> frame = focusedWebCoreFrame(); |
| 929 if (!frame) | 929 if (!frame) |
| 930 return false; | 930 return false; |
| 931 | 931 |
| 932 EventHandler* handler = frame->eventHandler(); | 932 EventHandler* handler = frame->eventHandler(); |
| 933 if (!handler) | 933 if (!handler) |
| 934 return keyEventDefault(event); | 934 return keyEventDefault(event); |
| 935 | 935 |
| 936 #if !OS(DARWIN) | 936 #if !OS(MACOSX) |
| 937 const WebInputEvent::Type contextMenuTriggeringEventType = | 937 const WebInputEvent::Type contextMenuTriggeringEventType = |
| 938 #if OS(WINDOWS) | 938 #if OS(WINDOWS) |
| 939 WebInputEvent::KeyUp; | 939 WebInputEvent::KeyUp; |
| 940 #elif OS(UNIX) | 940 #elif OS(UNIX) |
| 941 WebInputEvent::RawKeyDown; | 941 WebInputEvent::RawKeyDown; |
| 942 #endif | 942 #endif |
| 943 | 943 |
| 944 bool isUnmodifiedMenuKey = !(event.modifiers & WebInputEvent::InputModifiers
) && event.windowsKeyCode == VKEY_APPS; | 944 bool isUnmodifiedMenuKey = !(event.modifiers & WebInputEvent::InputModifiers
) && event.windowsKeyCode == VKEY_APPS; |
| 945 bool isShiftF10 = event.modifiers == WebInputEvent::ShiftKey && event.window
sKeyCode == VKEY_F10; | 945 bool isShiftF10 = event.modifiers == WebInputEvent::ShiftKey && event.window
sKeyCode == VKEY_F10; |
| 946 if ((isUnmodifiedMenuKey || isShiftF10) && event.type == contextMenuTriggeri
ngEventType) { | 946 if ((isUnmodifiedMenuKey || isShiftF10) && event.type == contextMenuTriggeri
ngEventType) { |
| 947 sendContextMenuEvent(event); | 947 sendContextMenuEvent(event); |
| 948 return true; | 948 return true; |
| 949 } | 949 } |
| 950 #endif // !OS(DARWIN) | 950 #endif // !OS(MACOSX) |
| 951 | 951 |
| 952 PlatformKeyboardEventBuilder evt(event); | 952 PlatformKeyboardEventBuilder evt(event); |
| 953 | 953 |
| 954 if (handler->keyEvent(evt)) { | 954 if (handler->keyEvent(evt)) { |
| 955 if (WebInputEvent::RawKeyDown == event.type) { | 955 if (WebInputEvent::RawKeyDown == event.type) { |
| 956 // Suppress the next keypress event unless the focused node is a plu
g-in node. | 956 // Suppress the next keypress event unless the focused node is a plu
g-in node. |
| 957 // (Flash needs these keypress events to handle non-US keyboards.) | 957 // (Flash needs these keypress events to handle non-US keyboards.) |
| 958 Element* element = focusedElement(); | 958 Element* element = focusedElement(); |
| 959 if (!element || !element->renderer() || !element->renderer()->isEmbe
ddedObject()) | 959 if (!element || !element->renderer() || !element->renderer()->isEmbe
ddedObject()) |
| 960 m_suppressNextKeypressEvent = true; | 960 m_suppressNextKeypressEvent = true; |
| (...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1334 if (m_client) | 1334 if (m_client) |
| 1335 m_client->hasTouchEventHandlers(hasTouchHandlers); | 1335 m_client->hasTouchEventHandlers(hasTouchHandlers); |
| 1336 } | 1336 } |
| 1337 | 1337 |
| 1338 bool WebViewImpl::hasTouchEventHandlersAt(const WebPoint& point) | 1338 bool WebViewImpl::hasTouchEventHandlersAt(const WebPoint& point) |
| 1339 { | 1339 { |
| 1340 // FIXME: Implement this. Note that the point must be divided by pageScaleFa
ctor. | 1340 // FIXME: Implement this. Note that the point must be divided by pageScaleFa
ctor. |
| 1341 return true; | 1341 return true; |
| 1342 } | 1342 } |
| 1343 | 1343 |
| 1344 #if !OS(DARWIN) | 1344 #if !OS(MACOSX) |
| 1345 // Mac has no way to open a context menu based on a keyboard event. | 1345 // Mac has no way to open a context menu based on a keyboard event. |
| 1346 bool WebViewImpl::sendContextMenuEvent(const WebKeyboardEvent& event) | 1346 bool WebViewImpl::sendContextMenuEvent(const WebKeyboardEvent& event) |
| 1347 { | 1347 { |
| 1348 // The contextMenuController() holds onto the last context menu that was | 1348 // The contextMenuController() holds onto the last context menu that was |
| 1349 // popped up on the page until a new one is created. We need to clear | 1349 // popped up on the page until a new one is created. We need to clear |
| 1350 // this menu before propagating the event through the DOM so that we can | 1350 // this menu before propagating the event through the DOM so that we can |
| 1351 // detect if we create a new menu for this event, since we won't create | 1351 // detect if we create a new menu for this event, since we won't create |
| 1352 // a new menu if the DOM swallows the event and the defaultEventHandler does | 1352 // a new menu if the DOM swallows the event and the defaultEventHandler does |
| 1353 // not run. | 1353 // not run. |
| 1354 page()->contextMenuController().clearContextMenu(); | 1354 page()->contextMenuController().clearContextMenu(); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 1370 switch (event.type) { | 1370 switch (event.type) { |
| 1371 case WebInputEvent::Char: | 1371 case WebInputEvent::Char: |
| 1372 if (event.windowsKeyCode == VKEY_SPACE) { | 1372 if (event.windowsKeyCode == VKEY_SPACE) { |
| 1373 int keyCode = ((event.modifiers & WebInputEvent::ShiftKey) ? VKEY_PR
IOR : VKEY_NEXT); | 1373 int keyCode = ((event.modifiers & WebInputEvent::ShiftKey) ? VKEY_PR
IOR : VKEY_NEXT); |
| 1374 return scrollViewWithKeyboard(keyCode, event.modifiers); | 1374 return scrollViewWithKeyboard(keyCode, event.modifiers); |
| 1375 } | 1375 } |
| 1376 break; | 1376 break; |
| 1377 case WebInputEvent::RawKeyDown: | 1377 case WebInputEvent::RawKeyDown: |
| 1378 if (event.modifiers == WebInputEvent::ControlKey) { | 1378 if (event.modifiers == WebInputEvent::ControlKey) { |
| 1379 switch (event.windowsKeyCode) { | 1379 switch (event.windowsKeyCode) { |
| 1380 #if !OS(DARWIN) | 1380 #if !OS(MACOSX) |
| 1381 case 'A': | 1381 case 'A': |
| 1382 focusedFrame()->executeCommand(WebString::fromUTF8("SelectAll"))
; | 1382 focusedFrame()->executeCommand(WebString::fromUTF8("SelectAll"))
; |
| 1383 return true; | 1383 return true; |
| 1384 case VKEY_INSERT: | 1384 case VKEY_INSERT: |
| 1385 case 'C': | 1385 case 'C': |
| 1386 focusedFrame()->executeCommand(WebString::fromUTF8("Copy")); | 1386 focusedFrame()->executeCommand(WebString::fromUTF8("Copy")); |
| 1387 return true; | 1387 return true; |
| 1388 #endif | 1388 #endif |
| 1389 // Match FF behavior in the sense that Ctrl+home/end are the only Ct
rl | 1389 // Match FF behavior in the sense that Ctrl+home/end are the only Ct
rl |
| 1390 // key combinations which affect scrolling. Safari is buggy in the | 1390 // key combinations which affect scrolling. Safari is buggy in the |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1403 default: | 1403 default: |
| 1404 break; | 1404 break; |
| 1405 } | 1405 } |
| 1406 return false; | 1406 return false; |
| 1407 } | 1407 } |
| 1408 | 1408 |
| 1409 bool WebViewImpl::scrollViewWithKeyboard(int keyCode, int modifiers) | 1409 bool WebViewImpl::scrollViewWithKeyboard(int keyCode, int modifiers) |
| 1410 { | 1410 { |
| 1411 ScrollDirection scrollDirection; | 1411 ScrollDirection scrollDirection; |
| 1412 ScrollGranularity scrollGranularity; | 1412 ScrollGranularity scrollGranularity; |
| 1413 #if OS(DARWIN) | 1413 #if OS(MACOSX) |
| 1414 // Control-Up/Down should be PageUp/Down on Mac. | 1414 // Control-Up/Down should be PageUp/Down on Mac. |
| 1415 if (modifiers & WebMouseEvent::ControlKey) { | 1415 if (modifiers & WebMouseEvent::ControlKey) { |
| 1416 if (keyCode == VKEY_UP) | 1416 if (keyCode == VKEY_UP) |
| 1417 keyCode = VKEY_PRIOR; | 1417 keyCode = VKEY_PRIOR; |
| 1418 else if (keyCode == VKEY_DOWN) | 1418 else if (keyCode == VKEY_DOWN) |
| 1419 keyCode = VKEY_NEXT; | 1419 keyCode = VKEY_NEXT; |
| 1420 } | 1420 } |
| 1421 #endif | 1421 #endif |
| 1422 if (!mapKeyCodeForScroll(keyCode, &scrollDirection, &scrollGranularity)) | 1422 if (!mapKeyCodeForScroll(keyCode, &scrollDirection, &scrollGranularity)) |
| 1423 return false; | 1423 return false; |
| (...skipping 2690 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4114 // the initial viewport width. | 4114 // the initial viewport width. |
| 4115 // 2. The author has disabled viewport zoom. | 4115 // 2. The author has disabled viewport zoom. |
| 4116 | 4116 |
| 4117 const PageScaleConstraints& constraints = m_pageScaleConstraintsSet.pageDefi
nedConstraints(); | 4117 const PageScaleConstraints& constraints = m_pageScaleConstraintsSet.pageDefi
nedConstraints(); |
| 4118 | 4118 |
| 4119 return fixedLayoutSize().width == m_size.width | 4119 return fixedLayoutSize().width == m_size.width |
| 4120 || (constraints.minimumScale == constraints.maximumScale && constraints.
minimumScale != -1); | 4120 || (constraints.minimumScale == constraints.maximumScale && constraints.
minimumScale != -1); |
| 4121 } | 4121 } |
| 4122 | 4122 |
| 4123 } // namespace WebKit | 4123 } // namespace WebKit |
| OLD | NEW |