| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2007 Apple, Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007 Apple, Inc. All rights reserved. |
| 3 * Copyright (C) 2012 Google, Inc. All rights reserved. | 3 * Copyright (C) 2012 Google, Inc. All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. 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 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 334 } | 334 } |
| 335 | 335 |
| 336 // | 336 // |
| 337 // The below code was adapted from the WebKit file webview.cpp | 337 // The below code was adapted from the WebKit file webview.cpp |
| 338 // | 338 // |
| 339 | 339 |
| 340 static const unsigned CtrlKey = 1 << 0; | 340 static const unsigned CtrlKey = 1 << 0; |
| 341 static const unsigned AltKey = 1 << 1; | 341 static const unsigned AltKey = 1 << 1; |
| 342 static const unsigned ShiftKey = 1 << 2; | 342 static const unsigned ShiftKey = 1 << 2; |
| 343 static const unsigned MetaKey = 1 << 3; | 343 static const unsigned MetaKey = 1 << 3; |
| 344 #if OS(DARWIN) | 344 #if OS(MACOSX) |
| 345 // Aliases for the generic key defintions to make kbd shortcuts definitions more | 345 // Aliases for the generic key defintions to make kbd shortcuts definitions more |
| 346 // readable on OS X. | 346 // readable on OS X. |
| 347 static const unsigned OptionKey = AltKey; | 347 static const unsigned OptionKey = AltKey; |
| 348 | 348 |
| 349 // Do not use this constant for anything but cursor movement commands. Keys | 349 // Do not use this constant for anything but cursor movement commands. Keys |
| 350 // with cmd set have their |isSystemKey| bit set, so chances are the shortcut | 350 // with cmd set have their |isSystemKey| bit set, so chances are the shortcut |
| 351 // will not be executed. Another, less important, reason is that shortcuts | 351 // will not be executed. Another, less important, reason is that shortcuts |
| 352 // defined in the renderer do not blink the menu item that they triggered. See | 352 // defined in the renderer do not blink the menu item that they triggered. See |
| 353 // http://crbug.com/25856 and the bugs linked from there for details. | 353 // http://crbug.com/25856 and the bugs linked from there for details. |
| 354 static const unsigned CommandKey = MetaKey; | 354 static const unsigned CommandKey = MetaKey; |
| 355 #endif | 355 #endif |
| 356 | 356 |
| 357 // Keys with special meaning. These will be delegated to the editor using | 357 // Keys with special meaning. These will be delegated to the editor using |
| 358 // the execCommand() method | 358 // the execCommand() method |
| 359 struct KeyDownEntry { | 359 struct KeyDownEntry { |
| 360 unsigned virtualKey; | 360 unsigned virtualKey; |
| 361 unsigned modifiers; | 361 unsigned modifiers; |
| 362 const char* name; | 362 const char* name; |
| 363 }; | 363 }; |
| 364 | 364 |
| 365 struct KeyPressEntry { | 365 struct KeyPressEntry { |
| 366 unsigned charCode; | 366 unsigned charCode; |
| 367 unsigned modifiers; | 367 unsigned modifiers; |
| 368 const char* name; | 368 const char* name; |
| 369 }; | 369 }; |
| 370 | 370 |
| 371 static const KeyDownEntry keyDownEntries[] = { | 371 static const KeyDownEntry keyDownEntries[] = { |
| 372 { VKEY_LEFT, 0, "MoveLeft" }, | 372 { VKEY_LEFT, 0, "MoveLeft" }, |
| 373 { VKEY_LEFT, ShiftKey, "MoveLeftAndModifySelection" }, | 373 { VKEY_LEFT, ShiftKey, "MoveLeftAndModifySelection" }, |
| 374 #if OS(DARWIN) | 374 #if OS(MACOSX) |
| 375 { VKEY_LEFT, OptionKey, "MoveWordLeft" }, | 375 { VKEY_LEFT, OptionKey, "MoveWordLeft" }, |
| 376 { VKEY_LEFT, OptionKey | ShiftKey, | 376 { VKEY_LEFT, OptionKey | ShiftKey, |
| 377 "MoveWordLeftAndModifySelection" }, | 377 "MoveWordLeftAndModifySelection" }, |
| 378 #else | 378 #else |
| 379 { VKEY_LEFT, CtrlKey, "MoveWordLeft" }, | 379 { VKEY_LEFT, CtrlKey, "MoveWordLeft" }, |
| 380 { VKEY_LEFT, CtrlKey | ShiftKey, | 380 { VKEY_LEFT, CtrlKey | ShiftKey, |
| 381 "MoveWordLeftAndModifySelection" }, | 381 "MoveWordLeftAndModifySelection" }, |
| 382 #endif | 382 #endif |
| 383 { VKEY_RIGHT, 0, "MoveRight" }, | 383 { VKEY_RIGHT, 0, "MoveRight" }, |
| 384 { VKEY_RIGHT, ShiftKey, "MoveRightAndModifySelection" }, | 384 { VKEY_RIGHT, ShiftKey, "MoveRightAndModifySelection" }, |
| 385 #if OS(DARWIN) | 385 #if OS(MACOSX) |
| 386 { VKEY_RIGHT, OptionKey, "MoveWordRight" }, | 386 { VKEY_RIGHT, OptionKey, "MoveWordRight" }, |
| 387 { VKEY_RIGHT, OptionKey | ShiftKey, | 387 { VKEY_RIGHT, OptionKey | ShiftKey, |
| 388 "MoveWordRightAndModifySelection" }, | 388 "MoveWordRightAndModifySelection" }, |
| 389 #else | 389 #else |
| 390 { VKEY_RIGHT, CtrlKey, "MoveWordRight" }, | 390 { VKEY_RIGHT, CtrlKey, "MoveWordRight" }, |
| 391 { VKEY_RIGHT, CtrlKey | ShiftKey, | 391 { VKEY_RIGHT, CtrlKey | ShiftKey, |
| 392 "MoveWordRightAndModifySelection" }, | 392 "MoveWordRightAndModifySelection" }, |
| 393 #endif | 393 #endif |
| 394 { VKEY_UP, 0, "MoveUp" }, | 394 { VKEY_UP, 0, "MoveUp" }, |
| 395 { VKEY_UP, ShiftKey, "MoveUpAndModifySelection" }, | 395 { VKEY_UP, ShiftKey, "MoveUpAndModifySelection" }, |
| 396 { VKEY_PRIOR, ShiftKey, "MovePageUpAndModifySelection" }, | 396 { VKEY_PRIOR, ShiftKey, "MovePageUpAndModifySelection" }, |
| 397 { VKEY_DOWN, 0, "MoveDown" }, | 397 { VKEY_DOWN, 0, "MoveDown" }, |
| 398 { VKEY_DOWN, ShiftKey, "MoveDownAndModifySelection" }, | 398 { VKEY_DOWN, ShiftKey, "MoveDownAndModifySelection" }, |
| 399 { VKEY_NEXT, ShiftKey, "MovePageDownAndModifySelection" }, | 399 { VKEY_NEXT, ShiftKey, "MovePageDownAndModifySelection" }, |
| 400 #if !OS(DARWIN) | 400 #if !OS(MACOSX) |
| 401 { VKEY_UP, CtrlKey, "MoveParagraphBackward" }, | 401 { VKEY_UP, CtrlKey, "MoveParagraphBackward" }, |
| 402 { VKEY_UP, CtrlKey | ShiftKey, "MoveParagraphBackwardAndModifySelection"
}, | 402 { VKEY_UP, CtrlKey | ShiftKey, "MoveParagraphBackwardAndModifySelection"
}, |
| 403 { VKEY_DOWN, CtrlKey, "MoveParagraphForward" }, | 403 { VKEY_DOWN, CtrlKey, "MoveParagraphForward" }, |
| 404 { VKEY_DOWN, CtrlKey | ShiftKey, "MoveParagraphForwardAndModifySelection"
}, | 404 { VKEY_DOWN, CtrlKey | ShiftKey, "MoveParagraphForwardAndModifySelection"
}, |
| 405 { VKEY_PRIOR, 0, "MovePageUp" }, | 405 { VKEY_PRIOR, 0, "MovePageUp" }, |
| 406 { VKEY_NEXT, 0, "MovePageDown" }, | 406 { VKEY_NEXT, 0, "MovePageDown" }, |
| 407 #endif | 407 #endif |
| 408 { VKEY_HOME, 0, "MoveToBeginningOfLine" }, | 408 { VKEY_HOME, 0, "MoveToBeginningOfLine" }, |
| 409 { VKEY_HOME, ShiftKey, | 409 { VKEY_HOME, ShiftKey, |
| 410 "MoveToBeginningOfLineAndModifySelection" }, | 410 "MoveToBeginningOfLineAndModifySelection" }, |
| 411 #if OS(DARWIN) | 411 #if OS(MACOSX) |
| 412 { VKEY_LEFT, CommandKey, "MoveToBeginningOfLine" }, | 412 { VKEY_LEFT, CommandKey, "MoveToBeginningOfLine" }, |
| 413 { VKEY_LEFT, CommandKey | ShiftKey, | 413 { VKEY_LEFT, CommandKey | ShiftKey, |
| 414 "MoveToBeginningOfLineAndModifySelection" }, | 414 "MoveToBeginningOfLineAndModifySelection" }, |
| 415 { VKEY_PRIOR, OptionKey, "MovePageUp" }, | 415 { VKEY_PRIOR, OptionKey, "MovePageUp" }, |
| 416 { VKEY_NEXT, OptionKey, "MovePageDown" }, | 416 { VKEY_NEXT, OptionKey, "MovePageDown" }, |
| 417 #endif | 417 #endif |
| 418 #if OS(DARWIN) | 418 #if OS(MACOSX) |
| 419 { VKEY_UP, CommandKey, "MoveToBeginningOfDocument" }, | 419 { VKEY_UP, CommandKey, "MoveToBeginningOfDocument" }, |
| 420 { VKEY_UP, CommandKey | ShiftKey, | 420 { VKEY_UP, CommandKey | ShiftKey, |
| 421 "MoveToBeginningOfDocumentAndModifySelection" }, | 421 "MoveToBeginningOfDocumentAndModifySelection" }, |
| 422 #else | 422 #else |
| 423 { VKEY_HOME, CtrlKey, "MoveToBeginningOfDocument" }, | 423 { VKEY_HOME, CtrlKey, "MoveToBeginningOfDocument" }, |
| 424 { VKEY_HOME, CtrlKey | ShiftKey, | 424 { VKEY_HOME, CtrlKey | ShiftKey, |
| 425 "MoveToBeginningOfDocumentAndModifySelection" }, | 425 "MoveToBeginningOfDocumentAndModifySelection" }, |
| 426 #endif | 426 #endif |
| 427 { VKEY_END, 0, "MoveToEndOfLine" }, | 427 { VKEY_END, 0, "MoveToEndOfLine" }, |
| 428 { VKEY_END, ShiftKey, "MoveToEndOfLineAndModifySelection" }, | 428 { VKEY_END, ShiftKey, "MoveToEndOfLineAndModifySelection" }, |
| 429 #if OS(DARWIN) | 429 #if OS(MACOSX) |
| 430 { VKEY_DOWN, CommandKey, "MoveToEndOfDocument" }, | 430 { VKEY_DOWN, CommandKey, "MoveToEndOfDocument" }, |
| 431 { VKEY_DOWN, CommandKey | ShiftKey, | 431 { VKEY_DOWN, CommandKey | ShiftKey, |
| 432 "MoveToEndOfDocumentAndModifySelection" }, | 432 "MoveToEndOfDocumentAndModifySelection" }, |
| 433 #else | 433 #else |
| 434 { VKEY_END, CtrlKey, "MoveToEndOfDocument" }, | 434 { VKEY_END, CtrlKey, "MoveToEndOfDocument" }, |
| 435 { VKEY_END, CtrlKey | ShiftKey, | 435 { VKEY_END, CtrlKey | ShiftKey, |
| 436 "MoveToEndOfDocumentAndModifySelection" }, | 436 "MoveToEndOfDocumentAndModifySelection" }, |
| 437 #endif | 437 #endif |
| 438 #if OS(DARWIN) | 438 #if OS(MACOSX) |
| 439 { VKEY_RIGHT, CommandKey, "MoveToEndOfLine" }, | 439 { VKEY_RIGHT, CommandKey, "MoveToEndOfLine" }, |
| 440 { VKEY_RIGHT, CommandKey | ShiftKey, | 440 { VKEY_RIGHT, CommandKey | ShiftKey, |
| 441 "MoveToEndOfLineAndModifySelection" }, | 441 "MoveToEndOfLineAndModifySelection" }, |
| 442 #endif | 442 #endif |
| 443 { VKEY_BACK, 0, "DeleteBackward" }, | 443 { VKEY_BACK, 0, "DeleteBackward" }, |
| 444 { VKEY_BACK, ShiftKey, "DeleteBackward" }, | 444 { VKEY_BACK, ShiftKey, "DeleteBackward" }, |
| 445 { VKEY_DELETE, 0, "DeleteForward" }, | 445 { VKEY_DELETE, 0, "DeleteForward" }, |
| 446 #if OS(DARWIN) | 446 #if OS(MACOSX) |
| 447 { VKEY_BACK, OptionKey, "DeleteWordBackward" }, | 447 { VKEY_BACK, OptionKey, "DeleteWordBackward" }, |
| 448 { VKEY_DELETE, OptionKey, "DeleteWordForward" }, | 448 { VKEY_DELETE, OptionKey, "DeleteWordForward" }, |
| 449 #else | 449 #else |
| 450 { VKEY_BACK, CtrlKey, "DeleteWordBackward" }, | 450 { VKEY_BACK, CtrlKey, "DeleteWordBackward" }, |
| 451 { VKEY_DELETE, CtrlKey, "DeleteWordForward" }, | 451 { VKEY_DELETE, CtrlKey, "DeleteWordForward" }, |
| 452 #endif | 452 #endif |
| 453 { 'B', CtrlKey, "ToggleBold" }, | 453 { 'B', CtrlKey, "ToggleBold" }, |
| 454 { 'I', CtrlKey, "ToggleItalic" }, | 454 { 'I', CtrlKey, "ToggleItalic" }, |
| 455 { 'U', CtrlKey, "ToggleUnderline" }, | 455 { 'U', CtrlKey, "ToggleUnderline" }, |
| 456 { VKEY_ESCAPE, 0, "Cancel" }, | 456 { VKEY_ESCAPE, 0, "Cancel" }, |
| 457 { VKEY_OEM_PERIOD, CtrlKey, "Cancel" }, | 457 { VKEY_OEM_PERIOD, CtrlKey, "Cancel" }, |
| 458 { VKEY_TAB, 0, "InsertTab" }, | 458 { VKEY_TAB, 0, "InsertTab" }, |
| 459 { VKEY_TAB, ShiftKey, "InsertBacktab" }, | 459 { VKEY_TAB, ShiftKey, "InsertBacktab" }, |
| 460 { VKEY_RETURN, 0, "InsertNewline" }, | 460 { VKEY_RETURN, 0, "InsertNewline" }, |
| 461 { VKEY_RETURN, CtrlKey, "InsertNewline" }, | 461 { VKEY_RETURN, CtrlKey, "InsertNewline" }, |
| 462 { VKEY_RETURN, AltKey, "InsertNewline" }, | 462 { VKEY_RETURN, AltKey, "InsertNewline" }, |
| 463 { VKEY_RETURN, AltKey | ShiftKey, "InsertNewline" }, | 463 { VKEY_RETURN, AltKey | ShiftKey, "InsertNewline" }, |
| 464 { VKEY_RETURN, ShiftKey, "InsertLineBreak" }, | 464 { VKEY_RETURN, ShiftKey, "InsertLineBreak" }, |
| 465 { VKEY_INSERT, CtrlKey, "Copy" }, | 465 { VKEY_INSERT, CtrlKey, "Copy" }, |
| 466 { VKEY_INSERT, ShiftKey, "Paste" }, | 466 { VKEY_INSERT, ShiftKey, "Paste" }, |
| 467 { VKEY_DELETE, ShiftKey, "Cut" }, | 467 { VKEY_DELETE, ShiftKey, "Cut" }, |
| 468 #if !OS(DARWIN) | 468 #if !OS(MACOSX) |
| 469 // On OS X, we pipe these back to the browser, so that it can do menu item | 469 // On OS X, we pipe these back to the browser, so that it can do menu item |
| 470 // blinking. | 470 // blinking. |
| 471 { 'C', CtrlKey, "Copy" }, | 471 { 'C', CtrlKey, "Copy" }, |
| 472 { 'V', CtrlKey, "Paste" }, | 472 { 'V', CtrlKey, "Paste" }, |
| 473 { 'V', CtrlKey | ShiftKey, "PasteAndMatchStyle" }, | 473 { 'V', CtrlKey | ShiftKey, "PasteAndMatchStyle" }, |
| 474 { 'X', CtrlKey, "Cut" }, | 474 { 'X', CtrlKey, "Cut" }, |
| 475 { 'A', CtrlKey, "SelectAll" }, | 475 { 'A', CtrlKey, "SelectAll" }, |
| 476 { 'Z', CtrlKey, "Undo" }, | 476 { 'Z', CtrlKey, "Undo" }, |
| 477 { 'Z', CtrlKey | ShiftKey, "Redo" }, | 477 { 'Z', CtrlKey | ShiftKey, "Redo" }, |
| 478 { 'Y', CtrlKey, "Redo" }, | 478 { 'Y', CtrlKey, "Redo" }, |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 592 // Don't insert null or control characters as they can result in | 592 // Don't insert null or control characters as they can result in |
| 593 // unexpected behaviour | 593 // unexpected behaviour |
| 594 if (ch < ' ') | 594 if (ch < ' ') |
| 595 return false; | 595 return false; |
| 596 #if !OS(WINDOWS) | 596 #if !OS(WINDOWS) |
| 597 // Don't insert ASCII character if ctrl w/o alt or meta is on. | 597 // Don't insert ASCII character if ctrl w/o alt or meta is on. |
| 598 // On Mac, we should ignore events when meta is on (Command-<x>). | 598 // On Mac, we should ignore events when meta is on (Command-<x>). |
| 599 if (ch < 0x80) { | 599 if (ch < 0x80) { |
| 600 if (evt->keyEvent()->ctrlKey() && !evt->keyEvent()->altKey()) | 600 if (evt->keyEvent()->ctrlKey() && !evt->keyEvent()->altKey()) |
| 601 return false; | 601 return false; |
| 602 #if OS(DARWIN) | 602 #if OS(MACOSX) |
| 603 if (evt->keyEvent()->metaKey()) | 603 if (evt->keyEvent()->metaKey()) |
| 604 return false; | 604 return false; |
| 605 #endif | 605 #endif |
| 606 } | 606 } |
| 607 #endif | 607 #endif |
| 608 } | 608 } |
| 609 | 609 |
| 610 if (!frame->editor().canEdit()) | 610 if (!frame->editor().canEdit()) |
| 611 return false; | 611 return false; |
| 612 | 612 |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 762 | 762 |
| 763 bool EditorClientImpl::spellingUIIsShowing() | 763 bool EditorClientImpl::spellingUIIsShowing() |
| 764 { | 764 { |
| 765 if (m_webView->spellCheckClient()) | 765 if (m_webView->spellCheckClient()) |
| 766 return m_webView->spellCheckClient()->isShowingSpellingUI(); | 766 return m_webView->spellCheckClient()->isShowingSpellingUI(); |
| 767 return false; | 767 return false; |
| 768 } | 768 } |
| 769 | 769 |
| 770 bool EditorClientImpl::supportsGlobalSelection() | 770 bool EditorClientImpl::supportsGlobalSelection() |
| 771 { | 771 { |
| 772 #if OS(UNIX) && !OS(DARWIN) | 772 #if OS(UNIX) && !OS(MACOSX) |
| 773 return true; | 773 return true; |
| 774 #else | 774 #else |
| 775 return false; | 775 return false; |
| 776 #endif | 776 #endif |
| 777 } | 777 } |
| 778 | 778 |
| 779 void EditorClientImpl::willSetInputMethodState() | 779 void EditorClientImpl::willSetInputMethodState() |
| 780 { | 780 { |
| 781 if (m_webView->client()) | 781 if (m_webView->client()) |
| 782 m_webView->client()->resetInputMethod(); | 782 m_webView->client()->resetInputMethod(); |
| 783 } | 783 } |
| 784 | 784 |
| 785 } // namesace WebKit | 785 } // namesace WebKit |
| OLD | NEW |