| Index: webkit/glue/webinputevent_mac.mm
|
| ===================================================================
|
| --- webkit/glue/webinputevent_mac.mm (revision 10468)
|
| +++ webkit/glue/webinputevent_mac.mm (working copy)
|
| @@ -141,7 +141,7 @@
|
| // that. As a result we have to use NSString here exclusively and thus tweak
|
| // the code so it's not re-usable as-is. One possiblity would be to make the
|
| // upstream code only use NSString, but I'm not certain how far that change
|
| -// would propagate.
|
| +// would propageage
|
|
|
| namespace WebCore {
|
|
|
| @@ -923,8 +923,18 @@
|
| // End Apple code.
|
| // ---------------------------------------------------------------------
|
|
|
| +// Helper that copies the unichar characters of a NSString into a suitably
|
| +// resized vector. The vector will be null terminated and thus even if the
|
| +// string is empty or nil, it array will have a NUL.
|
| +static void FillVectorFromNSString(std::vector<unsigned short>* v,
|
| + NSString* str) {
|
| + const unsigned int length = [str length];
|
| + v->reserve(length + 1);
|
| + [str getCharacters:&(*v)[0]];
|
| + (*v)[length] = '\0';
|
| +}
|
| +
|
| WebKeyboardEvent::WebKeyboardEvent(NSEvent *event) {
|
| - system_key = false;
|
| type = WebCore::isKeyUpEvent(event) ? KEY_UP : KEY_DOWN;
|
|
|
| if ([event modifierFlags] & NSControlKeyMask)
|
| @@ -942,50 +952,12 @@
|
| if (([event type] != NSFlagsChanged) && [event isARepeat])
|
| modifiers |= IS_AUTO_REPEAT;
|
|
|
| - windows_key_code = WebCore::windowsKeyCodeForKeyEvent(event);
|
| - native_key_code = [event keyCode];
|
| -
|
| NSString* textString = WebCore::textFromEvent(event);
|
| NSString* unmodifiedStr = WebCore::unmodifiedTextFromEvent(event);
|
| NSString* identStr = WebCore::keyIdentifierForKeyEvent(event);
|
| -
|
| - // Begin Apple code, copied from KeyEventMac.mm
|
| -
|
| - // Always use 13 for Enter/Return -- we don't want to use AppKit's
|
| - // different character for Enter.
|
| - if (windows_key_code == '\r') {
|
| - textString = @"\r";
|
| - unmodifiedStr = @"\r";
|
| - }
|
| -
|
| - // The adjustments below are only needed in backward compatibility mode,
|
| - // but we cannot tell what mode we are in from here.
|
| -
|
| - // Turn 0x7F into 8, because backspace needs to always be 8.
|
| - if ([textString isEqualToString:@"\x7F"])
|
| - textString = @"\x8";
|
| - if ([unmodifiedStr isEqualToString:@"\x7F"])
|
| - unmodifiedStr = @"\x8";
|
| - // Always use 9 for tab -- we don't want to use AppKit's different character for shift-tab.
|
| - if (windows_key_code == 9) {
|
| - textString = @"\x9";
|
| - unmodifiedStr = @"\x9";
|
| - }
|
| -
|
| - // End Apple code.
|
| -
|
| - memset(&text, 0, sizeof(text));
|
| - memset(&unmodified_text, 0, sizeof(unmodified_text));
|
| - memset(&key_identifier, 0, sizeof(key_identifier));
|
| -
|
| - if ([textString length] < kTextLengthCap &&
|
| - [unmodifiedStr length] < kTextLengthCap) {
|
| - [textString getCharacters:&text[0]];
|
| - [unmodifiedStr getCharacters:&unmodified_text[0]];
|
| - } else {
|
| - LOG(ERROR) << "Event had text too long; dropped";
|
| - }
|
| - [identStr getCString:&key_identifier[0]
|
| - maxLength:kIdentifierLengthCap
|
| - encoding:NSASCIIStringEncoding];
|
| + FillVectorFromNSString(&text, textString);
|
| + FillVectorFromNSString(&unmodified_text, unmodifiedStr);
|
| + FillVectorFromNSString(&key_identifier, identStr);
|
| +
|
| + key_code = WebCore::windowsKeyCodeForKeyEvent(event);
|
| }
|
|
|