Merge "Keyboard shortcuts for formatting tools in WikiEditor 2010"

This commit is contained in:
jenkins-bot 2024-10-04 11:43:47 +00:00 committed by Gerrit Code Review
commit 0d106ac68a
4 changed files with 31 additions and 6 deletions

View file

@ -246,6 +246,7 @@
], ],
"dependencies": [ "dependencies": [
"mediawiki.cookie", "mediawiki.cookie",
"jquery.client",
"jquery.textSelection", "jquery.textSelection",
"jquery.ui", "jquery.ui",
"mediawiki.api", "mediawiki.api",

View file

@ -42,7 +42,8 @@ module.exports = {
action: { action: {
type: 'dialog', type: 'dialog',
module: 'insert-link' module: 'insert-link'
} },
hotkey: 'KeyK'
}, },
file: { file: {
label: mw.msg( 'wikieditor-toolbar-tool-file' ), label: mw.msg( 'wikieditor-toolbar-tool-file' ),

View file

@ -45,7 +45,8 @@ toolbarConfig = {
peri: mw.msg( 'wikieditor-toolbar-tool-bold-example' ), peri: mw.msg( 'wikieditor-toolbar-tool-bold-example' ),
post: "'''" post: "'''"
} }
} },
hotkey: 'KeyB'
}, },
italic: { italic: {
section: 'main', section: 'main',
@ -61,7 +62,8 @@ toolbarConfig = {
peri: mw.msg( 'wikieditor-toolbar-tool-italic-example' ), peri: mw.msg( 'wikieditor-toolbar-tool-italic-example' ),
post: "''" post: "''"
} }
} },
hotkey: 'KeyI'
} }
} }
}, },
@ -206,7 +208,8 @@ toolbarConfig = {
peri: mw.msg( 'wikieditor-toolbar-tool-nowiki-example' ), peri: mw.msg( 'wikieditor-toolbar-tool-nowiki-example' ),
post: '</nowiki>' post: '</nowiki>'
} }
} },
hotkey: 'Backslash'
}, },
newline: { newline: {
label: mw.msg( 'wikieditor-toolbar-tool-newline' ), label: mw.msg( 'wikieditor-toolbar-tool-newline' ),
@ -260,7 +263,8 @@ toolbarConfig = {
peri: mw.msg( 'wikieditor-toolbar-tool-superscript-example' ), peri: mw.msg( 'wikieditor-toolbar-tool-superscript-example' ),
post: '</sup>' post: '</sup>'
} }
} },
hotkey: 'Period'
}, },
subscript: { subscript: {
label: mw.msg( 'wikieditor-toolbar-tool-subscript' ), label: mw.msg( 'wikieditor-toolbar-tool-subscript' ),
@ -273,7 +277,8 @@ toolbarConfig = {
peri: mw.msg( 'wikieditor-toolbar-tool-subscript-example' ), peri: mw.msg( 'wikieditor-toolbar-tool-subscript-example' ),
post: '</sub>' post: '</sub>'
} }
} },
hotkey: 'Comma'
} }
} }
}, },

View file

@ -359,6 +359,9 @@ var toolbarModule = {
} }
} ); } );
} }
if ( 'hotkey' in tool ) {
toolbarModule.fn.ctrlShortcuts[ tool.hotkey ] = tool;
}
} }
return $button; return $button;
case 'select': case 'select':
@ -786,6 +789,21 @@ var toolbarModule = {
// Use hook for attaching new toolbar tools to avoid race conditions // Use hook for attaching new toolbar tools to avoid race conditions
mw.hook( 'wikiEditor.toolbarReady' ).fire( context.$textarea ); mw.hook( 'wikiEditor.toolbarReady' ).fire( context.$textarea );
} ); } );
toolbarModule.fn.setupShortcuts( context );
},
ctrlShortcuts: {},
setupShortcuts: function ( context ) {
var platform = $.client.profile().platform;
var modifierKey = platform === 'mac' ? 'metaKey' : 'ctrlKey';
context.$textarea.on( 'keydown', function ( e ) {
// Check if modifier key is pressed and hotkey is recognised
var target = e[ modifierKey ] && toolbarModule.fn.ctrlShortcuts[ e.code ];
if ( target ) {
e.preventDefault();
toolbarModule.fn.doAction( context, target.action );
}
} );
}, },
handleKeyDown: function ( $element, event, $parent ) { handleKeyDown: function ( $element, event, $parent ) {
var $currentItem = $element.find( '.wikiEditor-character-highlighted' ), var $currentItem = $element.find( '.wikiEditor-character-highlighted' ),