Skip to content

Commit

Permalink
Stop catching all command keys, instead set up a blacklist of keys to…
Browse files Browse the repository at this point in the history
… stop.

[#19 state:resolved]
  • Loading branch information
Ross Boucher committed Sep 9, 2008
1 parent d31ddcb commit 1d5b9e6
Showing 1 changed file with 39 additions and 11 deletions.
50 changes: 39 additions & 11 deletions AppKit/Platform/DOM/CPDOMWindowBridge.j
Expand Up @@ -361,13 +361,46 @@ var CPDOMWindowGetFrame = function(_DOMWindow)
//right now we hard code q, w, r and t as keys to propogate
//these aren't normal keycodes, they are with modifier key codes
//might be mac only, we should investigate futher later.
var KeyCodesToPropagate = { '113':1, '119':1, '114':1, '116':1, '108':1, '102':1 };
var KeyCodesWithoutKeyPressEvents = { '8':1, '9':1, '37':1, '38':1, '39':1, '40':1, '46':1 };
var KeyCodesToPrevent = {},
CharacterKeysToPrevent = {},
KeyCodesWithoutKeyPressEvents = { '8':1, '9':1, '37':1, '38':1, '39':1, '40':1, '46':1 };

var CTRL_KEY_CODE = 17;

@implementation CPDOMWindowBridge (Events)

- (void)preventCharacterKeysFromPropagating:(CPArray)characters
{
for(var i=characters.length; i>0; i--)
CharacterKeysToPrevent[""+characters[i-1].toLowerCase()] = YES;
}

- (void)preventCharacterKeyFromPropagating:(CPString)character
{
CharacterKeysToPrevent[character.toLowerCase()] = YES;
}

- (void)clearCharacterKeysToPreventFromPropagating
{
CharacterKeysToPrevent = {};
}

- (void)preventKeyCodesFromPropagating:(CPArray)keyCodes
{
for(var i=keyCodes.length; i>0; i--)
KeyCodesToPrevent[keyCodes[i-1]] = YES;
}

- (void)preventKeyCodeFromPropagating:(CPString)keyCode
{
KeyCodesToPrevent[keyCode] = YES;
}

- (void)clearKeyCodesToPreventFromPropagating
{
KeyCodesToPrevent = {};
}

- (void)_bridgeMouseEvent:(DOMEvent)aDOMEvent
{
var theType = _overriddenEventType || aDOMEvent.type;
Expand Down Expand Up @@ -513,15 +546,10 @@ var CTRL_KEY_CODE = 17;
if (ExcludedDOMElements[sourceElement.tagName] && sourceElement != _DOMFocusElement && sourceElement != _DOMPasteboardElement)
return;

StopDOMEventPropagation = YES;

if(KeyCodesToPropagate[aDOMEvent.keyCode])
StopDOMEventPropagation = !(modifierFlags & (CPControlKeyMask | CPCommandKeyMask));

/*if (aDOMEvent.keyCode == 17)
StopDOMEventPropagation = NO;
if (aDOMEvent.keyCode != 17)
alert("WILL SEND " + modifierFlags + " " + aDOMEvent.type);*/
//We want to stop propagation if this is a command key AND this character or keycode has been added to our blacklist
StopDOMEventPropagation = !(modifierFlags & (CPControlKeyMask | CPCommandKeyMask)) ||
CharacterKeysToPrevent[String.fromCharCode(aDOMEvent.keyCode || aDOMEvent.charCode).toLowerCase()] ||
KeyCodesToPrevent[aDOMEvent.keyCode];

var isNativePasteEvent = NO,
isNativeCopyOrCutEvent = NO;
Expand Down

0 comments on commit 1d5b9e6

Please sign in to comment.