if (event instanceof TKeypressEvent) {
TKeypressEvent keypress = (TKeypressEvent) event;
- // See if this key matches an accelerator, and if so dispatch the
- // menu event.
- TKeypress keypressLowercase = keypress.getKey().toLowerCase();
- TMenuItem item = null;
- synchronized (accelerators) {
- item = accelerators.get(keypressLowercase);
+ // See if this key matches an accelerator, and is not being
+ // shortcutted by the active window, and if so dispatch the menu
+ // event.
+ boolean windowWillShortcut = false;
+ for (TWindow window: windows) {
+ if (window.isActive()) {
+ if (window.isShortcutKeypress(keypress.getKey())) {
+ // We do not process this key, it will be passed to
+ // the window instead.
+ windowWillShortcut = true;
+ }
+ }
}
- if (item != null) {
- if (item.isEnabled()) {
- // Let the menu item dispatch
- item.dispatch();
- return;
+
+ if (!windowWillShortcut) {
+ TKeypress keypressLowercase = keypress.getKey().toLowerCase();
+ TMenuItem item = null;
+ synchronized (accelerators) {
+ item = accelerators.get(keypressLowercase);
+ }
+ if (item != null) {
+ if (item.isEnabled()) {
+ // Let the menu item dispatch
+ item.dispatch();
+ return;
+ }
}
}
+
// Handle the keypress
if (onKeypress(keypress)) {
return;
*
* @param event new event to add to the queue
*/
- public final void addMenuEvent(final TInputEvent event) {
+ public final void postMenuEvent(final TInputEvent event) {
synchronized (fillEventQueue) {
fillEventQueue.add(event);
}
if (activeMenu != null) {
return;
}
-
- synchronized (windows) {
- for (TWindow window: windows) {
- closeWindow(window);
- }
+ while (windows.size() > 0) {
+ closeWindow(windows.get(0));
}
}