[DE] For Bug 42393

This commit is contained in:
Julia Radzhabova 2022-06-01 22:49:52 +03:00
parent 03cdfcfe56
commit bb7f081dcf
4 changed files with 90 additions and 14 deletions

View file

@ -36,7 +36,8 @@
return _MAP[x] || x.toUpperCase().charCodeAt(0);
},
_downKeys = [];
var locked;
var locked,
propagate;
for(k=1;k<20;k++) _MAP['f'+k] = 111+k;
@ -116,6 +117,8 @@
// call the handler and stop the event if neccessary
if((handler.mods.length == 0 && !_mods[16] && !_mods[18] && !_mods[17] && !_mods[91]) || modifiersMatch){
if(locked===true || handler.locked || handler.method(event, handler)===false){
if (locked===true && propagate || handler.locked && handler.propagate)
continue;
if(event.preventDefault) event.preventDefault();
else event.returnValue = false;
if(event.stopPropagation) event.stopPropagation();
@ -320,12 +323,23 @@
}
}
function suspend(key, scope) {
key ? setKeyOptions(key, scope, 'locked', true) : (locked = true);
function suspend(key, scope, pass) {
if (key) {
setKeyOptions(key, scope, 'locked', true)
pass && setKeyOptions(key, scope, 'propagate', true)
} else {
locked = true;
pass && (propagate = true);
}
}
function resume(key, scope) {
key ? setKeyOptions(key, scope, 'locked', false) : (locked = false);
function resume(key, scope) {
if (key) {
setKeyOptions(key, scope, 'locked', false)
setKeyOptions(key, scope, 'propagate', false)
} else {
locked = propagate = false;
}
}
// set window.key and window.key.set/get/deleteScope, and the default filter

View file

@ -148,8 +148,8 @@ Common.util = Common.util||{};
}
},
suspendEvents: function(key,scope) {
window.key.suspend(key,scope);
suspendEvents: function(key,scope,propagate) {
window.key.suspend(key,scope,propagate);
},
resumeEvents: function(key,scope) {

View file

@ -143,7 +143,8 @@ define([
me.userTooltip = true;
me.wrapEvents = {
userTipMousover: _.bind(me.userTipMousover, me),
userTipMousout: _.bind(me.userTipMousout, me)
userTipMousout: _.bind(me.userTipMousout, me),
onKeyUp: _.bind(me.onKeyUp, me)
};
var keymap = {};
@ -642,6 +643,9 @@ define([
var me = this;
if (me.api){
var key = event.keyCode;
if (me.hkSpecPaste) {
me._needShowSpecPasteMenu = !event.shiftKey && !event.altKey && event.keyCode == Common.UI.Keys.CTRL;
}
if ((event.ctrlKey || event.metaKey) && !event.shiftKey && !event.altKey){
if (key === Common.UI.Keys.NUM_PLUS || key === Common.UI.Keys.EQUALITY || (Common.Utils.isGecko && key === Common.UI.Keys.EQUALITY_FF) || (Common.Utils.isOpera && key == 43)){
me.api.zoomIn();
@ -1086,8 +1090,10 @@ define([
parentEl: $('#id-document-holder-btn-special-paste'),
cls : 'btn-toolbar',
iconCls : 'toolbar__icon btn-paste',
caption : Common.Utils.String.platformKey('Ctrl', '({0})'),
menu : new Common.UI.Menu({items: []})
});
me.initSpecialPasteEvents();
}
if (pasteItems.length>0) {
@ -1100,20 +1106,18 @@ define([
var group_prev = -1;
_.each(pasteItems, function(menuItem, index) {
var mnu = new Common.UI.MenuItem({
caption: me._arrSpecialPaste[menuItem],
caption: me._arrSpecialPaste[menuItem] + ' (' + me.hkSpecPaste[menuItem] + ')',
value: menuItem,
checkable: true,
toggleGroup : 'specialPasteGroup'
}).on('click', function(item, e) {
me.api.asc_SpecialPaste(item.value);
setTimeout(function(){menu.hide();}, 100);
});
}).on('click', _.bind(me.onSpecialPasteItemClick, me));
menu.addItem(mnu);
});
(menu.items.length>0) && menu.items[0].setChecked(true, true);
}
if (coord.asc_getX()<0 || coord.asc_getY()<0) {
if (pasteContainer.is(':visible')) pasteContainer.hide();
$(document).off('keyup', this.wrapEvents.onKeyUp);
} else {
var showPoint = [coord.asc_getX() + coord.asc_getWidth() + 3, coord.asc_getY() + coord.asc_getHeight() + 3];
if (!Common.Utils.InternalSettings.get("de-hidden-rulers")) {
@ -1121,13 +1125,54 @@ define([
}
pasteContainer.css({left: showPoint[0], top : showPoint[1]});
pasteContainer.show();
setTimeout(function() {
$(document).on('keyup', me.wrapEvents.onKeyUp);
}, 10);
}
},
onHideSpecialPasteOptions: function() {
var pasteContainer = this.documentHolder.cmpEl.find('#special-paste-container');
if (pasteContainer.is(':visible'))
if (pasteContainer.is(':visible')) {
pasteContainer.hide();
$(document).off('keyup', this.wrapEvents.onKeyUp);
}
},
onKeyUp: function (e) {
if (e.keyCode == Common.UI.Keys.CTRL && this._needShowSpecPasteMenu && !this.btnSpecialPaste.menu.isVisible() && /area_id/.test(e.target.id)) {
$('button', this.btnSpecialPaste.cmpEl).click();
e.preventDefault();
}
this._needShowSpecPasteMenu = false;
},
initSpecialPasteEvents: function() {
var me = this;
me.hkSpecPaste = [];
me.hkSpecPaste[Asc.c_oSpecialPasteProps.paste] = 'P';
me.hkSpecPaste[Asc.c_oSpecialPasteProps.sourceformatting] = 'K';
me.hkSpecPaste[Asc.c_oSpecialPasteProps.keepTextOnly] = 'T';
me.hkSpecPaste[Asc.c_oSpecialPasteProps.insertAsNestedTable] = 'N';
me.hkSpecPaste[Asc.c_oSpecialPasteProps.overwriteCells] = 'O';
for(var key in me.hkSpecPaste){
if(me.hkSpecPaste.hasOwnProperty(key)){
var keymap = {};
keymap[me.hkSpecPaste[key]] = _.bind(me.onSpecialPasteItemClick, me, {value: parseInt(key)});
Common.util.Shortcuts.delegateShortcuts({shortcuts:keymap});
Common.util.Shortcuts.suspendEvents(me.hkSpecPaste[key], undefined, true);
}
}
me.btnSpecialPaste.menu.on('show:after', function(menu) {
for (var i = 0; i < menu.items.length; i++) {
me.hkSpecPaste[menu.items[i].value] && Common.util.Shortcuts.resumeEvents(me.hkSpecPaste[menu.items[i].value]);
}
}).on('hide:after', function(menu) {
for (var i = 0; i < menu.items.length; i++) {
me.hkSpecPaste[menu.items[i].value] && Common.util.Shortcuts.suspendEvents(me.hkSpecPaste[menu.items[i].value], undefined, true);
}
});
},
onDoubleClickOnChart: function(chart) {
@ -2232,6 +2277,22 @@ define([
this.documentHolder.fireEvent('links:contents', [item.value, true]);
},
onSpecialPasteItemClick: function(item, e) {
if (this.api) {
this.api.asc_SpecialPaste(item.value);
var menu = this.btnSpecialPaste.menu;
if (!item.cmpEl) {
for (var i = 0; i < menu.items.length; i++) {
menu.items[i].setChecked(menu.items[i].value===item.value, true);
}
}
setTimeout(function(){
menu.hide();
}, 100);
}
return false;
},
editComplete: function() {
this.documentHolder && this.documentHolder.fireEvent('editcomplete', this.documentHolder);
}

View file

@ -715,6 +715,7 @@ define([
case 'replace':
case 'search':
this.leftMenu.btnAbout.toggle(false);
Common.UI.Menu.Manager.hideAll();
var selectedText = this.api.asc_GetSelectedText();
if (this.isSearchPanelVisible()) {
selectedText && this.leftMenu.panelSearch.setFindText(selectedText);