Opened 5 years ago

Last modified 5 years ago

#12260 confirmed Bug

AccessKey works only once

Reported by: Olek Nowodziński Owned by:
Priority: Normal Milestone:
Component: Accessibility Version:
Keywords: Cc:

Description

  1. Open http://ckeditor.dev/samples/replacebycode.html
  2. Click "Checkbox".
  3. CTRL+S to see that focus is moved and "Selected" checkbox is checked.
  4. Click OK to close the dialog.
  5. Re-open the same dialog.
  6. Press CTRL+S.

Expected:

"Selected" checkbox is toggled.

Actual:

AccessKey feature is broken is completely broken in that dialog. Other accessKeystrokes does not work either.

Change History (6)

comment:1 Changed 5 years ago by Artur Delura

What I have debugged for now:

In dialog/plugin.js private property accessKeyProcessors is empty when opening dialog for the second time, but should keep processors for each key.

I think that accessKeyProcessors property should be moved to CKEDITOR.dialog instance, because we store already created dialogs, but we don't store access key processors for each one. We clean calling unregisterAccessKey method in plugin.

Last edited 5 years ago by Artur Delura (previous) (diff)

comment:2 in reply to:  1 ; Changed 5 years ago by Olek Nowodziński

Replying to a.delura:

What I have debugged for now:

In dialog/plugin.js private property accessKeyProcessors is empty when opening dialog for the second time, but should keep processors for each key.

The problem is that unregisterAccessKey() is called for every dialog.hide() while registerAccessKey() is called only once while CKEDITOR.ui.dialog.uiElement is invoked. registerAccessKey() got to be called every time dialog is shown.

comment:3 in reply to:  2 Changed 5 years ago by Artur Delura

Replying to a.nowodzinski:

Replying to a.delura:

What I have debugged for now:

In dialog/plugin.js private property accessKeyProcessors is empty when opening dialog for the second time, but should keep processors for each key.

The problem is that unregisterAccessKey() is called for every dialog.hide() while registerAccessKey() is called only once while CKEDITOR.ui.dialog.uiElement is invoked. registerAccessKey() got to be called every time dialog is shown.

That is also a solution. And easiest one I guess.

comment:4 Changed 5 years ago by Artur Delura

Changes in branch:t/12260. I didn't put on review because of lack of tests.

comment:5 Changed 5 years ago by Jakub Ś

Status: newconfirmed

comment:6 Changed 5 years ago by Piotrek Koszuliński

Milestone: CKEditor 4.4.4

I don't know why this ticket has been added to 4.4.4 milestone. Let's wait for a patch first.

Note: See TracTickets for help on using tickets.
© 2003 – 2019 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy