Fix hint manager

This commit is contained in:
JuliaSvinareva 2021-07-15 17:20:58 +03:00
parent 7eabfe94af
commit a6134b58a1
5 changed files with 73 additions and 53 deletions

View file

@ -374,11 +374,14 @@ Common.UI.HintManager = new(function() {
_api.asc_enableKeyEvents(true); _api.asc_enableKeyEvents(true);
} }
} }
} else if (_hintVisible) {
e.preventDefault();
} }
_isAlt = false; _isAlt = false;
}); });
$(document).on('keydown', function(e) { $(document).on('keydown', function(e) {
if (_hintVisible) { if (_hintVisible) {
e.preventDefault();
if (e.keyCode == Common.UI.Keys.ESC ) { if (e.keyCode == Common.UI.Keys.ESC ) {
if (_currentLevel === 0) { if (_currentLevel === 0) {
_hideHints(); _hideHints();
@ -389,66 +392,71 @@ Common.UI.HintManager = new(function() {
_showHints(); _showHints();
} }
} else { } else {
var curr; var curLetter = null;
var curLetter = _lang === 'en' ? String.fromCharCode(e.keyCode) : e.key; var keyCode = e.keyCode;
if (_lang !== 'en' && _arrAlphabet.indexOf(curLetter.toLowerCase()) === -1) { if (keyCode !== 16 && keyCode !== 17 && keyCode !== 18 && keyCode !== 91) {
var ind = _arrEnQwerty.indexOf(curLetter.toLowerCase()); curLetter = _lang === 'en' ? ((keyCode > 47 && keyCode < 58 || keyCode > 64 && keyCode < 91) ? String.fromCharCode(e.keyCode) : null) : e.key;
if (ind !== -1) {
curLetter = _arrQwerty[ind];
}
} }
_inputLetters = _inputLetters + curLetter.toUpperCase(); if (curLetter) {
for (var i = 0; i < _currentControls.length; i++) { var curr;
var item = _currentControls[i]; if (_lang !== 'en' && _arrAlphabet.indexOf(curLetter.toLowerCase()) === -1) {
if (!_isItemDisabled(item) && item.attr('data-hint-title') === _inputLetters) { var ind = _arrEnQwerty.indexOf(curLetter.toLowerCase());
curr = item; if (ind !== -1) {
break; curLetter = _arrQwerty[ind];
}
} }
} _inputLetters = _inputLetters + curLetter.toUpperCase();
if (curr) { for (var i = 0; i < _currentControls.length; i++) {
var tag = curr.prop("tagName").toLowerCase(); var item = _currentControls[i];
if (window.SSE && curr.parent().prop('id') === 'statusbar_bottom') { if (!_isItemDisabled(item) && item.attr('data-hint-title') === _inputLetters) {
_hideHints(); curr = item;
curr.contextmenu(); break;
_resetToDefault(); }
} else if (tag === 'input' || tag === 'textarea') { }
_hideHints(); if (curr) {
curr.trigger(jQuery.Event('click', {which: 1})); var tag = curr.prop("tagName").toLowerCase();
curr.focus(); if (window.SSE && curr.parent().prop('id') === 'statusbar_bottom') {
_resetToDefault(); _hideHints();
} else { curr.contextmenu();
_isComplete = false; _resetToDefault();
_hideHints(); } else if (tag === 'input' || tag === 'textarea') {
if (!curr.attr('content-target') || (curr.attr('content-target') && !$(`#${curr.attr('content-target')}`).is(':visible'))) { // need to open panel _hideHints();
if (!($('#file-menu-panel').is(':visible') && (curr.parent().prop('id') === 'fm-btn-info' && $('#panel-info').is(':visible') || curr.trigger(jQuery.Event('click', {which: 1}));
curr.parent().prop('id') === 'fm-btn-settings' && $('#panel-settings').is(':visible')))) { curr.focus();
if (curr.attr('for')) { // to trigger event in checkbox _resetToDefault();
$(`#${curr.attr('for')}`).trigger(jQuery.Event('click', {which: 1})); } else {
} else { _isComplete = false;
curr.trigger(jQuery.Event('click', {which: 1})); _hideHints();
if (!curr.attr('content-target') || (curr.attr('content-target') && !$(`#${curr.attr('content-target')}`).is(':visible'))) { // need to open panel
if (!($('#file-menu-panel').is(':visible') && (curr.parent().prop('id') === 'fm-btn-info' && $('#panel-info').is(':visible') ||
curr.parent().prop('id') === 'fm-btn-settings' && $('#panel-settings').is(':visible')))) {
if (curr.attr('for')) { // to trigger event in checkbox
$(`#${curr.attr('for')}`).trigger(jQuery.Event('click', {which: 1}));
} else {
curr.trigger(jQuery.Event('click', {which: 1}));
}
} }
} }
} if (curr.prop('id') === 'btn-goback' || curr.closest('.btn-slot').prop('id') === 'slot-btn-options' || curr.prop('id') === 'left-btn-thumbs') {
if (curr.prop('id') === 'btn-goback' || curr.closest('.btn-slot').prop('id') === 'slot-btn-options' || curr.prop('id') === 'left-btn-thumbs') { _resetToDefault();
_resetToDefault(); return;
return; }
} if (curr.prop('id') === 'add-comment-doc') {
if (curr.prop('id') === 'add-comment-doc') { _removeHints();
_removeHints(); _currentHints.length = 0;
_currentHints.length = 0; _currentControls.length = 0;
_currentControls.length = 0; _showHints();
_showHints(); return;
return; }
} if (!_isComplete) {
if (!_isComplete) { _nextLevel();
_nextLevel(); _setCurrentSection(curr);
_setCurrentSection(curr); _showHints();
_showHints(); }
} }
} }
} }
} }
e.preventDefault();
} }
_isAlt = (e.keyCode == Common.UI.Keys.ALT); _isAlt = (e.keyCode == Common.UI.Keys.ALT);

View file

@ -71,7 +71,13 @@
var key, handler, k, i, modifiersMatch, scope; var key, handler, k, i, modifiersMatch, scope;
key = event.keyCode; key = event.keyCode;
if (key !== 27 && Common.UI.HintManager.isHintVisible()) return; if (Common.UI.HintManager.isHintVisible()) {
if (key === 112) {
Common.UI.HintManager.clearHints();
} else if (key !== 27) {
return;
}
}
if (index(_downKeys, key) == -1) { if (index(_downKeys, key) == -1) {
_downKeys.push(key); _downKeys.push(key);

View file

@ -229,6 +229,8 @@ define([
}; };
var onContextMenu = function(event){ var onContextMenu = function(event){
if (Common.UI.HintManager.isHintVisible())
Common.UI.HintManager.clearHints();
_.delay(function(){ _.delay(function(){
if (event.get_Type() == 0) { if (event.get_Type() == 0) {
showObjectMenu.call(me, event); showObjectMenu.call(me, event);

View file

@ -219,6 +219,8 @@ define([
}; };
var onContextMenu = function(event){ var onContextMenu = function(event){
if (Common.UI.HintManager.isHintVisible())
Common.UI.HintManager.clearHints();
_.delay(function(){ _.delay(function(){
if (event.get_Type() == Asc.c_oAscContextMenuTypes.Thumbnails) { if (event.get_Type() == Asc.c_oAscContextMenuTypes.Thumbnails) {
showPopupMenu.call(me, (me.mode.isEdit && !me._isDisabled) ? me.slideMenu : me.viewModeMenuSlide, {isSlideSelect: event.get_IsSlideSelect(), isSlideHidden: event.get_IsSlideHidden(), fromThumbs: true}, event); showPopupMenu.call(me, (me.mode.isEdit && !me._isDisabled) ? me.slideMenu : me.viewModeMenuSlide, {isSlideSelect: event.get_IsSlideSelect(), isSlideHidden: event.get_IsSlideHidden(), fromThumbs: true}, event);

View file

@ -1582,6 +1582,8 @@ define([
}, },
onApiContextMenu: function(event) { onApiContextMenu: function(event) {
if (Common.UI.HintManager.isHintVisible())
Common.UI.HintManager.clearHints();
var me = this; var me = this;
_.delay(function(){ _.delay(function(){
me.showObjectMenu.call(me, event); me.showObjectMenu.call(me, event);