Add shortcut commands for underline & sub/superscript.

Underline is particularly important as CE will apply underline
formatting automatically when you press Ctrl+U but the
SurfaceObserver will not notice it, leading to inconsistency
between the view and the model.

For sub/superscript I've used the Google Docs key mappings as these
appear to have the fewest conflicts with existing browser shortcuts
and there isn't much consistency between desktop clients anyway
(Word and Open/LibreOffice use completely different shortcuts).

Bonus: reordered command lists to be consistent with UI layout.
Change-Id: I92998e42f9bcfb932d44e8f483811efd538e5981
This commit is contained in:
Ed Sanders 2013-11-08 12:44:31 +00:00
parent d3ea3835fd
commit 20063995b2
4 changed files with 25 additions and 11 deletions

View file

@ -50,7 +50,8 @@ ve.ui.MWMediaEditDialog.static.toolbarGroups = [
];
ve.ui.MWMediaEditDialog.static.surfaceCommands = [
'undo', 'redo', 'bold', 'italic', 'link', 'clear'
'undo', 'redo', 'bold', 'italic', 'link', 'clear',
'underline', 'subscript', 'superscript'
];
/* Methods */

View file

@ -43,7 +43,8 @@ ve.ui.MWReferenceDialog.static.toolbarGroups = [
];
ve.ui.MWReferenceDialog.static.surfaceCommands = [
'undo', 'redo', 'bold', 'italic', 'link', 'clear'
'undo', 'redo', 'bold', 'italic', 'link', 'clear',
'underline', 'subscript', 'superscript'
];
/* Methods */

View file

@ -50,6 +50,9 @@ ve.init.Target.static.surfaceCommands = [
'italic',
'link',
'clear',
'underline',
'subscript',
'superscript',
'indent',
'outdent',
'paragraph',

View file

@ -63,30 +63,39 @@ ve.ui.triggerRegistry = new ve.ui.TriggerRegistry();
/* Registrations */
ve.ui.triggerRegistry.register(
'undo', { 'mac': new ve.ui.Trigger( 'cmd+z' ), 'pc': new ve.ui.Trigger( 'ctrl+z' ) }
);
ve.ui.triggerRegistry.register(
'redo', { 'mac': new ve.ui.Trigger( 'cmd+shift+z' ), 'pc': new ve.ui.Trigger( 'ctrl+shift+z' ) }
);
ve.ui.triggerRegistry.register(
'bold', { 'mac': new ve.ui.Trigger( 'cmd+b' ), 'pc': new ve.ui.Trigger( 'ctrl+b' ) }
);
ve.ui.triggerRegistry.register(
'italic', { 'mac': new ve.ui.Trigger( 'cmd+i' ), 'pc': new ve.ui.Trigger( 'ctrl+i' ) }
);
ve.ui.triggerRegistry.register(
'link', { 'mac': new ve.ui.Trigger( 'cmd+k' ), 'pc': new ve.ui.Trigger( 'ctrl+k' ) }
);
ve.ui.triggerRegistry.register(
'clear', { 'mac': new ve.ui.Trigger( 'cmd+\\' ), 'pc': new ve.ui.Trigger( 'ctrl+\\' ) }
);
ve.ui.triggerRegistry.register(
'underline', { 'mac': new ve.ui.Trigger( 'cmd+u' ), 'pc': new ve.ui.Trigger( 'ctrl+u' ) }
);
ve.ui.triggerRegistry.register(
'subscript', { 'mac': new ve.ui.Trigger( 'cmd+,' ), 'pc': new ve.ui.Trigger( 'ctrl+,' ) }
);
ve.ui.triggerRegistry.register(
'superscript', { 'mac': new ve.ui.Trigger( 'cmd+.' ), 'pc': new ve.ui.Trigger( 'ctrl+.' ) }
);
ve.ui.triggerRegistry.register(
'indent', new ve.ui.Trigger( 'tab' )
);
ve.ui.triggerRegistry.register(
'outdent', new ve.ui.Trigger( 'shift+tab' )
);
ve.ui.triggerRegistry.register(
'link', { 'mac': new ve.ui.Trigger( 'cmd+k' ), 'pc': new ve.ui.Trigger( 'ctrl+k' ) }
);
ve.ui.triggerRegistry.register(
'redo', { 'mac': new ve.ui.Trigger( 'cmd+shift+z' ), 'pc': new ve.ui.Trigger( 'ctrl+shift+z' ) }
);
ve.ui.triggerRegistry.register(
'undo', { 'mac': new ve.ui.Trigger( 'cmd+z' ), 'pc': new ve.ui.Trigger( 'ctrl+z' ) }
);
// Ctrl+0-7 below are not mapped to Cmd+0-7 on Mac because Chrome reserves those for switching tabs
ve.ui.triggerRegistry.register(
'paragraph', { 'mac': new ve.ui.Trigger( 'ctrl+0' ), 'pc': new ve.ui.Trigger ( 'ctrl+0' ) }