Index: gc_lang/fr/webext/content_scripts/panel.js ================================================================== --- gc_lang/fr/webext/content_scripts/panel.js +++ gc_lang/fr/webext/content_scripts/panel.js @@ -13,10 +13,11 @@ constructor (sId, sTitle, nWidth, nHeight, bFlexible=true) { this.sId = sId; this.nWidth = nWidth; this.nHeight = nHeight; this.bFlexible = bFlexible; + this.bWorking = false; this.bShadow = document.body.createShadowRoot || document.body.attachShadow; if (this.bShadow) { this.xShadowPanel = oGrammalecte.createNode("div", {id: this.sId+"_shadow", style: "width:0;height:0;"}); this.xShadow = this.xShadowPanel.attachShadow({mode: "open"}); @@ -181,14 +182,16 @@ // for debugging console.log(this.xPanel.innerHTML); } startWaitIcon () { + this.bWorking = true; this.xWaitIcon.style.visibility = "visible"; } stopWaitIcon () { + this.bWorking = false; this.xWaitIcon.style.visibility = "hidden"; } openURL (sURL) { xGrammalectePort.postMessage({ Index: gc_lang/fr/webext/content_scripts/panel_gc.js ================================================================== --- gc_lang/fr/webext/content_scripts/panel_gc.js +++ gc_lang/fr/webext/content_scripts/panel_gc.js @@ -78,24 +78,28 @@ this.xEditorButton = oGrammalecte.createNode("div", {className: "grammalecte_menu_button", textContent: "Éditeur"}); this.xLxgButton = oGrammalecte.createNode("div", {className: "grammalecte_menu_button", textContent: "Lexicographe"}); this.xConjButton = oGrammalecte.createNode("div", {className: "grammalecte_menu_button", textContent: "Conjugueur"}); this.xLEButton = oGrammalecte.createNode("div", {className: "grammalecte_menu_button", textContent: "•Éditeur lexical•"}); this.xTFButton.onclick = () => { - if (this.xNode && (this.xNode.tagName == "TEXTAREA" || this.xNode.tagName == "INPUT" || this.xNode.isContentEditable)) { - oGrammalecte.createTFPanel(); - oGrammalecte.oTFPanel.start(this); - oGrammalecte.oTFPanel.show(); - } else { - oGrammalecte.showMessage("Aucune zone de texte éditable sur laquelle appliquer le formatage de texte.") + if (!this.bWorking) { + if (this.xNode && (this.xNode.tagName == "TEXTAREA" || this.xNode.tagName == "INPUT" || this.xNode.isContentEditable)) { + oGrammalecte.createTFPanel(); + oGrammalecte.oTFPanel.start(this); + oGrammalecte.oTFPanel.show(); + } else { + oGrammalecte.showMessage("Aucune zone de texte éditable sur laquelle appliquer le formatage de texte.") + } } }; this.xEditorButton.onclick = () => { - this.showEditor(); + if (!this.bWorking) { + this.showEditor(); + } }; this.xLxgButton.onclick = () => { - this.showLexicographer(); - if (true) { + if (!this.bWorking) { + this.showLexicographer(); this.clearLexicographer(); this.startWaitIcon(); xGrammalectePort.postMessage({ sCommand: "getListOfTokens", dParam: {sText: this.getParsedText()}, @@ -102,11 +106,13 @@ dInfo: ((this.xNode) ? {sTextAreaId: this.xNode.id} : {}) }); } }; this.xConjButton.onclick = () => { - this.showConjugueur(); + if (!this.bWorking) { + this.showConjugueur(); + } }; this.xLEButton.onclick = () => { xGrammalectePort.postMessage({sCommand: "openLexiconEditor", dParam: null, dInfo: null}); }; this.xMenu.appendChild(this.xTFButton) @@ -118,10 +124,11 @@ } start (xNode=null) { this.xNode = xNode; this.oTooltip.hide(); + this.bWorking = false; this.clear(); if (xNode) { this.oNodeControl.setNode(xNode); if (!(xNode.tagName == "TEXTAREA" || xNode.tagName == "INPUT")) { this.addMessage("Note : cette zone de texte n’est pas un champ de formulaire “textarea” mais un node HTML éditable. Une telle zone de texte est susceptible de contenir des éléments non textuels qui seront effacés lors de la correction.");