Accelerators - odd behavior

Scott Palmer swpalmer at gmail.com
Fri Sep 26 17:28:42 UTC 2014


While we are on the subject... Why does a Scene accelerator Map take
runnables instead of EventHandlers ?

Scott

On Fri, Sep 26, 2014 at 1:27 PM, Scott Palmer <swpalmer at gmail.com> wrote:

> Forgot to include the list.
>
> (I'm testing with 8u20 btw)
>
> ---------- Forwarded message ----------
> From: Scott Palmer <swpalmer at gmail.com>
> Date: Fri, Sep 26, 2014 at 1:25 PM
> Subject: Re: Accelerators - odd behavior
> To: Kevin Rushforth <kevin.rushforth at oracle.com>
>
>
> Yes, for CTRL+a I do see it fire twice.
>
> On Fri, Sep 26, 2014 at 1:21 PM, Kevin Rushforth <
> kevin.rushforth at oracle.com> wrote:
>
>> This does seem somewhat strange. Do you get multiple calls to your
>> runnable if you use a KeyCharacter combination and KeyCode combination for
>> CTRL-a or other key that generates a key char without needing a shift?
>>
>> -- Kevin
>>
>>
>> Scott Palmer wrote:
>>
>>> What is very interesting about this is that I can't duplicate it with the
>>> "+" character.
>>> I've added all of the following to the scene accelerators and it still
>>> only
>>> fires my "plus" action once for each press.
>>>
>>> KeyCombination cmdPlus = new KeyCodeCombination(KeyCode.PLUS,
>>> KeyCombination.CONTROL_DOWN);
>>> KeyCombination cmdAdd = new KeyCodeCombination(KeyCode.ADD,
>>> KeyCombination.CONTROL_DOWN);
>>> KeyCombination cmdPlusAsShiftEquals = new
>>> KeyCodeCombination(KeyCode.EQUALS, KeyCombination.CONTROL_DOWN,
>>> KeyCodeCombination.SHIFT_DOWN);
>>> KeyCombination cmdPlusFromCharacter = new KeyCharacterCombination("+",
>>> KeyCombination.CONTROL_DOWN);
>>>
>>> This is weird.
>>>
>>> On Fri, Sep 26, 2014 at 1:01 PM, Scott Palmer <swpalmer at gmail.com>
>>> wrote:
>>>
>>>
>>>
>>>> KeyCombination cmdMinus = new Key*Code*Combination(KeyCode.MINUS,
>>>> KeyCombination.CONTROL_DOWN);
>>>> KeyCombination cmdMinusFromCharacter = new
>>>> Key*Character*Combination("-",
>>>> KeyCombination.CONTROL_DOWN);
>>>>
>>>> Using the above like this:
>>>> scene.getAccelerators().put(cmdMinus, runnable);
>>>> scene.getAccelerators().put(cmdMinusFromCharacter, runnable);
>>>>
>>>> Will result in the runnable being fired twice from the same keypress.
>>>>
>>>> I propose changing the accelerator processing logic so that only one
>>>> runnable gets called as the intention appears to be that a
>>>> KeyCombination
>>>> can only have one runnable associated with it, but the logic in Map
>>>> doesn't
>>>> see the above two KeyCombinations as the same key in the Map.
>>>>
>>>> Note: With the second combination above I really wanted something that
>>>> worked for both MINUS and SUBTRACT simultaneously - since they both type
>>>> the same Character and only one accelerator can be set on a MenuItem.
>>>>
>>>> Scott
>>>>
>>>>
>>>>
>>>>
>>>
>
>


More information about the openjfx-dev mailing list