@@ -421,7 +421,7 @@ export class KatexInputHelper {
421421 *
422422 * TODO: This is a workaround because of crashs raised otherwise. The hide method
423423 * will be overridden. Left unwanted effect: display of menu at false location,
424- * if main menu was invoked before .
424+ * this can be handled by shifting the menu via CSS .
425425 */
426426 onContextMenu ( selector , event ) {
427427 event . preventDefault ( ) ;
@@ -443,33 +443,38 @@ export class KatexInputHelper {
443443 return false ;
444444 } ;
445445
446+ this . logProperties ( selector ) ;
447+ // this code uses CSS to shift the context menu to the desired location (and its)
448+ // shadow
446449 try {
447- $ ( selector ) . menu ( 'show' , { left : event . pageX , top : event . pageY } ) ;
450+ $ ( selector ) . menu ( 'show' , { left : event . pageX , top : event . pageY } ) ;
451+ $ ( `${ selector } ` ) . css ( {
452+ position : 'absolute' ,
453+ left : `${ event . pageX } px` ,
454+ top : `${ event . pageY } px` ,
455+ display : 'block'
456+ } ) ;
457+
458+ var next = $ ( selector ) . next ( ) ;
459+ if ( next . hasClass ( 'menu-shadow' ) ) {
460+ next . css ( {
461+ position : 'absolute' ,
462+ left : `${ event . pageX } px` ,
463+ top : `${ event . pageY } px` ,
464+ display : 'block'
465+ } ) ;
466+ }
448467 } catch ( e ) {
449468 }
450- return false ;
469+ return false ;
451470 }
452471
453- // TRIAL to overcome contextmenu problem.
454- onMainMenu ( ) {
455-
456- var mbOptions = $ ( '#mbINSERT' ) . menubutton ( 'options' ) ;
457- mbOptions . menu = null ;
458-
459- // There is no reaction on this!
460- $ ( '#mbINSERT' ) . on ( 'mouseover' , function ( event ) {
461- event . preventDefault ( ) ;
462- $ ( 'mINSERT' ) . menu ( 'show' , { left : event . pageX , top : event . pageY } ) ;
463- return false ;
464- } ) ;
465-
466- $ ( '#mbINSERT' ) . on ( 'mouseout' , function ( event ) {
467- event . preventDefault ( ) ;
468- $ ( 'mINSERT' ) . menu ( 'hide' ) ;
469- return false ;
470- } ) ;
471-
472- return false ;
472+ /**
473+ * Logs some properties of the element selected by the selector.
474+ */
475+ logProperties ( selector ) {
476+ console . log ( `Context-menu display : ${ $ ( selector ) . css ( 'display' ) } , ${ $ ( selector ) . css ( 'position' ) } ` ) ;
477+ console . log ( `Context-menu %O` , $ ( selector ) [ 0 ] ) ;
473478 }
474479
475480 /**
@@ -531,14 +536,6 @@ export class KatexInputHelper {
531536 }
532537 }
533538 } ) ;
534- // NO ACTION? :
535- // vme.onMainMenu();
536-
537- /* SEEMS to have no effect
538- $("#mFILE, #mINSERT, #mTOOLS, #mVIEW, #mOPTIONS, #mINFORMATIONS")
539- .addClass('easyui-menu');
540- await this.parser.parseAsync("#mFILE, #mINSERT, #mTOOLS, #mVIEW, #mOPTIONS, #mINFORMATIONS");
541- */
542539
543540 if ( ! window . opener ) {
544541 $ ( "#mQUIT_EDITOR" ) . addClass ( "menu-item-disabled" ) . click ( function ( event ) { } ) ;
@@ -584,7 +581,8 @@ export class KatexInputHelper {
584581 } ) ;
585582 $ ( '#btRESET_WINDOW_POSITIONS' ) . click ( function ( event ) {
586583 event . preventDefault ( ) ;
587- vme . parameters . resetWindowPositions ( ) ;
584+ vme . parameters . resetWindowPositions ( ) ;
585+ vme . messager . show ( 'RESTART' , 'RESTART_REQUIRED' ) ;
588586 } ) ;
589587 $ ( "input[name='codeType']" ) . change ( function ( ) {
590588 vme . codeType = $ ( "input[name='codeType']:checked" ) . val ( ) ;
@@ -1532,10 +1530,10 @@ export class KatexInputHelper {
15321530 . join ( '/' )
15331531 . replace ( / / g, '%20' ) + '/' ;
15341532 }
1533+ // TEST CODE to check path OR mobile detection
15351534 // $('h3').text(bundlePath);
1536- var heading = $ ( 'h3' ) . text ( ) ;
1537- $ ( 'h3' ) . text ( `${ heading } on ${ this . mobile ? 'mobile' : 'desktop' } device` ) ;
1538- // this.mobile ? 'mobile' : 'desktop'
1535+ // var heading = $('h3').text();
1536+ // $('h3').text(`${heading} on ${this.mobile ? 'mobile' : 'desktop'} device`);
15391537
15401538 $ ( 'html > head' ) . append ( $ ( '<base />' ) ) ;
15411539 $ ( 'html > head > base' ) . attr ( 'href' , bundlePath ) ;
0 commit comments