@@ -2857,8 +2857,9 @@ const handleCommandMenu = async () => {
28572857 let anotherShortcut = false ;
28582858 const onHotkey = async ( e : KeyboardEvent ) => {
28592859 // Ctrl+K opens the command menu
2860+ // do not open the menu if shortcut is Ctrl+Shift+K
28602861 // wait for 500ms to allow other shortcuts like Ctrl+K Ctrl+0
2861- if ( ! ctrl ( e ) ) {
2862+ if ( ! ctrl ( e ) || e . shiftKey || e . altKey ) {
28622863 anotherShortcut = false ;
28632864 return ;
28642865 }
@@ -3130,45 +3131,40 @@ const registerMenuButton = (menu: HTMLElement, button: HTMLElement) => {
31303131} ;
31313132
31323133const handleAppMenuProject = ( ) => {
3133- const menuProjectContainer = UI . getAppMenuProjectScroller ( ) ;
3134- const menuProjectButton = UI . getAppMenuProjectButton ( ) ;
3135- if ( ! menuProjectContainer || ! menuProjectButton ) return ;
3136-
3137- const html = isMac ( )
3138- ? menuProjectHTML . replace ( / < k b d > C t r l < \/ k b d > / g, '<kbd>⌘</kbd>' )
3139- : menuProjectHTML ;
3140- menuProjectContainer . innerHTML = html ;
3141- translateElement ( menuProjectContainer ) ;
3142- // adjustFontSize(menuProjectContainer);
3143- registerMenuButton ( menuProjectContainer , menuProjectButton ) ;
3134+ setupAppMenu ( UI . getAppMenuProjectScroller ( ) , UI . getAppMenuProjectButton ( ) , menuProjectHTML ) ;
31443135} ;
31453136
31463137const handleAppMenuSettings = ( ) => {
3147- const menuSettingsContainer = UI . getAppMenuSettingsScroller ( ) ;
3148- const menuSettingsButton = UI . getAppMenuSettingsButton ( ) ;
3149- if ( ! menuSettingsContainer || ! menuSettingsButton ) return ;
3150-
3151- const html = isMac ( )
3152- ? menuSettingsHTML . replace ( / < k b d > C t r l < \/ k b d > / g, '<kbd>⌘</kbd>' )
3153- : menuSettingsHTML ;
3154- menuSettingsContainer . innerHTML = html ;
3155-
3156- translateElement ( menuSettingsContainer ) ;
3157- adjustFontSize ( menuSettingsContainer ) ;
3158- registerMenuButton ( menuSettingsContainer , menuSettingsButton ) ;
3138+ setupAppMenu (
3139+ UI . getAppMenuSettingsScroller ( ) ,
3140+ UI . getAppMenuSettingsButton ( ) ,
3141+ menuSettingsHTML ,
3142+ true ,
3143+ ) ;
31593144} ;
31603145
31613146const handleAppMenuHelp = ( ) => {
3162- const menuHelpContainer = UI . getAppMenuHelpScroller ( ) ;
3163- const menuHelpButton = UI . getAppMenuHelpButton ( ) ;
3164- if ( ! menuHelpContainer || ! menuHelpButton ) return ;
3147+ setupAppMenu ( UI . getAppMenuHelpScroller ( ) , UI . getAppMenuHelpButton ( ) , menuHelpHTML ) ;
3148+ } ;
3149+
3150+ const setupAppMenu = (
3151+ container : HTMLElement | null ,
3152+ button : HTMLElement | null ,
3153+ menuHTML : string ,
3154+ shouldAdjustFontSize = false ,
3155+ ) => {
3156+ if ( ! container || ! button ) return ;
3157+
3158+ const html = isMac ( ) ? menuHTML . replaceAll ( '<kbd>Ctrl</kbd>' , '<kbd>⌘</kbd>' ) : menuHTML ;
3159+
3160+ container . innerHTML = html ;
3161+ translateElement ( container ) ;
31653162
3166- const html = isMac ( ) ? menuHelpHTML . replace ( / < k b d > C t r l < \/ k b d > / g, '<kbd>⌘</kbd>' ) : menuHelpHTML ;
3167- menuHelpContainer . innerHTML = html ;
3168- menuHelpContainer . classList . add ( 'hidden' ) ;
3169- translateElement ( menuHelpContainer ) ;
3170- // adjustFontSize(menuHelpContainer);
3171- registerMenuButton ( menuHelpContainer , menuHelpButton ) ;
3163+ if ( shouldAdjustFontSize ) {
3164+ adjustFontSize ( container ) ;
3165+ }
3166+
3167+ registerMenuButton ( container , button ) ;
31723168} ;
31733169
31743170/**
@@ -4807,14 +4803,23 @@ const handleResultLoading = () => {
48074803 eventsManager . addEventListener ( window , 'message' , showResultModeDrawer ) ;
48084804} ;
48094805
4806+ const createToolButton = ( id : string , title : string , innerHTML : string ) => {
4807+ const btn = document . createElement ( 'div' ) ;
4808+ btn . id = id ;
4809+ btn . classList . add ( 'tool-buttons' ) ;
4810+ btn . title = title ;
4811+ btn . style . pointerEvents = 'all' ; // override setting to 'none' on toolspane bar
4812+ btn . innerHTML = innerHTML ;
4813+ UI . getToolspaneTitles ( ) ?. appendChild ( btn ) ;
4814+ return btn ;
4815+ } ;
4816+
48104817const handleResultPopup = ( ) => {
4811- const popupBtn = document . createElement ( 'div' ) ;
4812- popupBtn . id = 'result-popup-btn' ;
4813- popupBtn . classList . add ( 'tool-buttons' ) ;
4814- popupBtn . title = window . deps . translateString ( 'core.result.hint' , 'Show result in new window' ) ;
4815- popupBtn . style . pointerEvents = 'all' ; // override setting to 'none' on toolspane bar
4816- const iconCSS = '<i class="icon-window-new"></i>' ;
4817- popupBtn . innerHTML = `<button id="show-result">${ iconCSS } </button>` ;
4818+ const popupBtn = createToolButton (
4819+ 'result-popup-btn' ,
4820+ window . deps . translateString ( 'core.result.hint' , 'Show result in new window' ) ,
4821+ `<button id="show-result"><i class="icon-window-new"></i></button>` ,
4822+ ) ;
48184823 let url : string | undefined ;
48194824 const openWindow = async ( ) => {
48204825 if ( resultPopup && ! resultPopup . closed ) {
@@ -4847,17 +4852,14 @@ const handleResultPopup = () => {
48474852} ;
48484853
48494854const handleResultZoom = ( ) => {
4850- const zoomBtn = document . createElement ( 'div' ) ;
4851- zoomBtn . id = 'zoom-button' ;
4852- zoomBtn . classList . add ( 'tool-buttons' ) ;
4853- zoomBtn . title = window . deps . translateString ( 'core.zoom.hint' , 'Zoom' ) + ' (Ctrl/Cmd + Alt + Z)' ;
4854- zoomBtn . style . pointerEvents = 'all' ; // override setting to 'none' on toolspane bar
4855- zoomBtn . innerHTML = `
4856- <button class="text">
4857- <span id="zoom-value">${ String ( Number ( getConfig ( ) . zoom ) ) } </span>
4858- ×
4859- </button>` ;
4860-
4855+ const zoomBtn = createToolButton (
4856+ 'zoom-button' ,
4857+ window . deps . translateString ( 'core.zoom.hint' , 'Zoom' ) + ' (Ctrl/Cmd + Alt + Z)' ,
4858+ `<button class="text">
4859+ <span id="zoom-value">${ String ( Number ( getConfig ( ) . zoom ) ) } </span>
4860+ ×
4861+ </button>` ,
4862+ ) ;
48614863 const toggleZoom = ( ) => {
48624864 const config = getConfig ( ) ;
48634865 const currentZoom = config . zoom ;
@@ -4875,13 +4877,11 @@ const handleResultZoom = () => {
48754877} ;
48764878
48774879const handleBroadcastStatus = ( ) => {
4878- const broadcastStatusBtn = document . createElement ( 'div' ) ;
4879- broadcastStatusBtn . id = 'broadcast-status-btn' ;
4880- broadcastStatusBtn . classList . add ( 'tool-buttons' ) ;
4881- broadcastStatusBtn . title = window . deps . translateString ( 'core.broadcast.heading' , 'Broadcast' ) ;
4882- broadcastStatusBtn . style . pointerEvents = 'all' ; // override setting to 'none' on toolspane bar
4883- const iconCSS = '<i class="icon-broadcast"></i>' ;
4884- broadcastStatusBtn . innerHTML = `<button id="broadcast-status">${ iconCSS } <span class="mark"></span></button>` ;
4880+ const broadcastStatusBtn = createToolButton (
4881+ 'broadcast-status-btn' ,
4882+ window . deps . translateString ( 'core.broadcast.heading' , 'Broadcast' ) ,
4883+ `<button id="broadcast-status"><i class="icon-broadcast"></i><span class="mark"></span></button>` ,
4884+ ) ;
48854885
48864886 const showBroadcast = ( ) => {
48874887 showScreen ( 'broadcast' ) ;
0 commit comments