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

Side by Side Diff: webkit/glue/editor_client_impl.cc

Issue 99209: Don't insert ASCII character with ctrl(w/o/ alt) or meta is on.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // The Mac interface forwards most of these commands to the application layer, 5 // The Mac interface forwards most of these commands to the application layer,
6 // and I'm not really sure what to do about most of them. 6 // and I'm not really sure what to do about most of them.
7 7
8 #include "config.h" 8 #include "config.h"
9 #include "webkit/glue/editor_client_impl.h" 9 #include "webkit/glue/editor_client_impl.h"
10 10
(...skipping 593 matching lines...) Expand 10 before | Expand all | Expand 10 after
604 } 604 }
605 return false; 605 return false;
606 } 606 }
607 607
608 if (command.execute(evt)) { 608 if (command.execute(evt)) {
609 WebViewDelegate* d = web_view_->delegate(); 609 WebViewDelegate* d = web_view_->delegate();
610 MaybeRecordCommand(d, command_name); 610 MaybeRecordCommand(d, command_name);
611 return true; 611 return true;
612 } 612 }
613 613
614 // Here we need to filter key events.
615 // On Gtk/Linux, it emits key events with ASCII text and ctrl on for ctrl-<x>.
616 // In Webkit, EditorClient::handleKeyboardEvent in
617 // WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp drop such events.
618 // On Mac, it emits key events with ASCII text and meta on for Command-<x>.
619 // These key events should not emit text insert event.
620 // Alt key would be used to insert alternative character, so we should let
621 // through. Also note that Ctrl-Alt combination equals to AltGr key which is
622 // also used to insert alternative character.
623 // http://code.google.com/p/chromium/issues/detail?id=10846
624 // In summary, we can't think of a scenario where you'd use control w/o alt or
625 // meta to do insertion of a ASCII character.
626 // TODO(ukai): investigate more detail for various keyboard layout.
614 if (evt->keyEvent()->text().length() == 1) { 627 if (evt->keyEvent()->text().length() == 1) {
615 UChar ch = evt->keyEvent()->text()[0U]; 628 UChar ch = evt->keyEvent()->text()[0U];
616 629
617 // Don't insert null or control characters as they can result in 630 // Don't insert null or control characters as they can result in
618 // unexpected behaviour 631 // unexpected behaviour
619 if (ch < ' ') 632 if (ch < ' ')
620 return false; 633 return false;
634 // Don't insert ASCII character if ctrl w/o alt or meta is on.
635 if (ch < 0x80 &&
636 ((evt->keyEvent()->ctrlKey() && !evt->keyEvent()->altKey()) ||
637 evt->keyEvent()->metaKey()))
638 return false;
621 } 639 }
622 640
623 if (!frame->editor()->canEdit()) 641 if (!frame->editor()->canEdit())
624 return false; 642 return false;
625 643
626 return frame->editor()->insertText(evt->keyEvent()->text(), evt); 644 return frame->editor()->insertText(evt->keyEvent()->text(), evt);
627 } 645 }
628 646
629 // 647 //
630 // End of code block subject to Apple, Inc. copyright 648 // End of code block subject to Apple, Inc. copyright
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after
929 } 947 }
930 return L"(UNKNOWN AFFINITY)"; 948 return L"(UNKNOWN AFFINITY)";
931 } 949 }
932 950
933 std::wstring EditorClientImpl::Describe(WebCore::CSSStyleDeclaration* style) { 951 std::wstring EditorClientImpl::Describe(WebCore::CSSStyleDeclaration* style) {
934 // TODO(pamg): Implement me. It's not clear what WebKit produces for this 952 // TODO(pamg): Implement me. It's not clear what WebKit produces for this
935 // (their [style description] method), and none of the layout tests provide 953 // (their [style description] method), and none of the layout tests provide
936 // an example. But because none of them use it, it's not yet important. 954 // an example. But because none of them use it, it's not yet important.
937 return std::wstring(); 955 return std::wstring();
938 } 956 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698