GWT KeyPressHandler getCharCode issues

Like hundreds of GWT developers I stepped into the annoying GWT KeyPressEvent.getCharCode() bug problem described here
To turn around this bug i tried using:

event.getNativeEvent().getKeyCode()

the purpose is to access the native event to get the unprocessed code. However if you try the

event.getNativeEvent().getKeyCode()

you will knock your head against browser-specific inconsistencies. For example the getCharCode() from NativeEvent works for me in FireFox 3 but it doesn’t work in Chrome . in Chrome if i press “ENTER” key

 event.getNativeEvent().getKeyCode()=10

But

 KeyCodes.KEY_ENTER=13

in FF3 the two values are equal (’13’).
It appears that a fix for KeyPressHandler was completed and reviewed for this issue . but it is not clear when we could expect it to be released. The fix appears fairly complex, with different browser-specific implementations.
it turns out that this change set is actually exactly what causes the current behavior in Firefox. See the rationale and a workaround/fix (i.e. only use getNativeEvent() when getCharCode returns 0).
the workaround above works but we need to replace ’13’ with ’10’ in the fix code portion below :

} else if (charCode == 13) {

    doOnEnterKeyPressed();
  }

using ’10’ instead of ’13’ in the else if conditional:

} else if (charCode == 10) {

    doOnEnterKeyPressed();
  }

with this new change code works both in chrome and FF3.

Hope this could be helpful for anyone experiencing these GWT keyPress getCharCode() problems.

Advertisements

One comment on “GWT KeyPressHandler getCharCode issues

  1. […] implement Agile software development practices — a move mandated by the Obama administration.Be careful with GWT KeyPressEvent.getCharCode() | Othman – Like hundreds of GWT developers I stepped into the annoying GWT KeyPressEvent.getCharCode() […]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s