kit/ChildSession.cpp | 8 ++++++ loleaflet/src/control/Control.ContextMenu.js | 31 ++++++++++++++++++++++----- loleaflet/src/unocommands.js | 8 ++++++ scripts/unocommands.py | 6 +++++ 4 files changed, 48 insertions(+), 5 deletions(-)
New commits: commit 19e576772aceb4fab4178677b6774055a8e0cdfc Author: Tamás Zolnai <[email protected]> AuthorDate: Tue Nov 19 17:13:10 2019 +0100 Commit: Tamás Zolnai <[email protected]> CommitDate: Sun Nov 24 14:12:42 2019 +0100 SpellingPopup: Handle sapces in suggestion. Change-Id: I09db2cd1db67797a50bc2943200f97aabb004fc6 Reviewed-on: https://gerrit.libreoffice.org/83607 Reviewed-by: Tamás Zolnai <[email protected]> Tested-by: Tamás Zolnai <[email protected]> diff --git a/kit/ChildSession.cpp b/kit/ChildSession.cpp index 98101b6b1..677505ad9 100644 --- a/kit/ChildSession.cpp +++ b/kit/ChildSession.cpp @@ -364,6 +364,14 @@ bool ChildSession::_handleInput(const char *buffer, int length) } else if (tokens[0] == "uno") { + // SpellCheckApplySuggestion might contain non separator spaces + if (tokens[1].find(".uno:SpellCheckApplySuggestion") != std::string::npos) + { + std::vector<std::string> newTokens; + newTokens.push_back(tokens[0]); + newTokens.push_back(firstLine.substr(4)); // Copy the remaining part. + return unoCommand(buffer, length, newTokens); + } return unoCommand(buffer, length, tokens); } else if (tokens[0] == "selecttext") diff --git a/loleaflet/src/control/Control.ContextMenu.js b/loleaflet/src/control/Control.ContextMenu.js index 00f5f959d..6a28637bc 100644 --- a/loleaflet/src/control/Control.ContextMenu.js +++ b/loleaflet/src/control/Control.ContextMenu.js @@ -164,6 +164,7 @@ L.Control.ContextMenu = L.Control.extend({ if (hasParam || commandName === 'None' || commandName === 'FontDialogForParagraph') { itemName = window.removeAccessKey(item.text); + itemName = itemName.replace(' ', '\u00a0'); } else { // Get the translated text associated with the command itemName = _UNO(item.command, docType, true); commit 7041d5c5b035007f09f092d15b40aae4731803a6 Author: Tamás Zolnai <[email protected]> AuthorDate: Sun Nov 17 15:38:05 2019 +0100 Commit: Tamás Zolnai <[email protected]> CommitDate: Sun Nov 24 14:12:30 2019 +0100 Update conext menu code to handle Spelling Popup * Use unique IDs for sub menus. * Handle uno command's parameter. * When there is any parameter, we use the menu text. * Avoid to enable FontDialog on other conext menus * Introduce the command ".uno:None" to indicate that the menu item can't be executed. * Whitelisted spelling context menu's uno commands. * Add a black list in unocommands.py to list those uno commands which have no text in xcu file. In this case, we can use the text sent in the menu structure. Change-Id: Ie84fcb7d6c7a2f4cd50c666dbcd8c77cf42731de Reviewed-on: https://gerrit.libreoffice.org/83606 Reviewed-by: Tamás Zolnai <[email protected]> Tested-by: Tamás Zolnai <[email protected]> diff --git a/loleaflet/src/control/Control.ContextMenu.js b/loleaflet/src/control/Control.ContextMenu.js index bd5e3c400..00f5f959d 100644 --- a/loleaflet/src/control/Control.ContextMenu.js +++ b/loleaflet/src/control/Control.ContextMenu.js @@ -36,7 +36,9 @@ L.Control.ContextMenu = L.Control.extend({ 'DeleteRows', 'DeleteColumns', 'DeleteTable', 'MergeCells', 'SetOptimalColumnWidth', 'SetOptimalRowHeight', 'UpdateCurIndex','RemoveTableOf', - 'ReplyComment', 'DeleteComment', 'DeleteAuthor', 'DeleteAllNotes'], + 'ReplyComment', 'DeleteComment', 'DeleteAuthor', 'DeleteAllNotes', + 'SpellingAndGrammarDialog', 'LanguageStatus', 'FontDialog', 'FontDialogForParagraph', + 'SpellCheckIgnore', 'SpellCheckIgnoreAll', 'SpellCheckApplySuggestion'], spreadsheet: ['MergeCells', 'SplitCell', 'RecalcPivotTable', 'FormatCellDialog', 'ShowNote', 'DeleteNote'], @@ -116,6 +118,7 @@ L.Control.ContextMenu = L.Control.extend({ var docType = this._map.getDocType(); var contextMenu = {}; var sepIdx = 1, itemName; + var subMenuIdx = 1; var isLastItemText = false; for (var idx in obj.menu) { var item = obj.menu[idx]; @@ -133,7 +136,20 @@ L.Control.ContextMenu = L.Control.extend({ // Only show whitelisted items // Command name (excluding '.uno:') starts from index = 5 var commandName = item.command.substring(5); - if (this.options.whitelist.general.indexOf(commandName) === -1 && + + // Command might have paramateres (e.g. .uno:SpellCheckIgnore?Type:string=Grammar) + var hasParam = false; + if (commandName.indexOf('?')!== -1) { + commandName = commandName.substring(0, commandName.indexOf('?')); + hasParam = true; + } + + // We use a special character dialog in spelling context menu with a parameter + if (commandName === 'FontDialog' && !hasParam) + continue; + + if (commandName !== 'None' && + this.options.whitelist.general.indexOf(commandName) === -1 && !(docType === 'text' && this.options.whitelist.text.indexOf(commandName) !== -1) && !(docType === 'spreadsheet' && this.options.whitelist.spreadsheet.indexOf(commandName) !== -1) && !(docType === 'presentation' && this.options.whitelist.presentation.indexOf(commandName) !== -1) && @@ -146,8 +162,12 @@ L.Control.ContextMenu = L.Control.extend({ item.command = '.uno:HideNote'; } - // Get the translated text associated with the command - itemName = _UNO(item.command, docType, true); + if (hasParam || commandName === 'None' || commandName === 'FontDialogForParagraph') { + itemName = window.removeAccessKey(item.text); + } else { + // Get the translated text associated with the command + itemName = _UNO(item.command, docType, true); + } contextMenu[item.command] = { // Using 'click' and <a href='#' is vital for copy/paste security context. @@ -178,7 +198,7 @@ L.Control.ContextMenu = L.Control.extend({ continue; } - contextMenu[item.command] = { + contextMenu['submenu' + subMenuIdx++] = { name: _(itemName).replace(/\(~[A-Za-z]\)/, '').replace('~', ''), items: submenu }; diff --git a/loleaflet/src/unocommands.js b/loleaflet/src/unocommands.js index f6fcc3e6c..deb7e70b0 100644 --- a/loleaflet/src/unocommands.js +++ b/loleaflet/src/unocommands.js @@ -154,6 +154,7 @@ var unoCommandsArray = { JumpUpThisLevel:{text:{menu:_('To Previous Paragraph in Level'),},}, JustifyPara:{global:{menu:_('Justified'),},}, LanguageMenu:{global:{menu:_('Language'),},}, + LanguageStatus:{global:{menu:_('Language Status'),},}, LayoutStatus:{presentation:{menu:_('Layout'),},}, LeftPara:{global:{context:_('Align Left'),menu:_('Left'),},}, MergeCells:{presentation:{menu:_('Merge Cells'),},spreadsheet:{menu:_('Merge Cells'),},text:{menu:_('Merge Cells'),},}, @@ -241,6 +242,9 @@ var unoCommandsArray = { SpacePara1:{global:{menu:_('Line Spacing: 1'),},}, SpacePara15:{global:{menu:_('Line Spacing: 1.5'),},}, SpacePara2:{global:{menu:_('Line Spacing: 2'),},}, + SpellCheckApplySuggestion:{global:{menu:_('Apply Suggestion'),},}, + SpellCheckIgnore:{global:{menu:_('Ignore'),},}, + SpellCheckIgnoreAll:{global:{menu:_('IgnoreAll'),},}, SpellDialog:{global:{menu:_('~Spelling...'),},}, SpellOnline:{global:{menu:_('~Automatic Spell Checking'),},}, SpellingAndGrammarDialog:{global:{menu:_('~Spelling...'),},}, @@ -311,6 +315,10 @@ window._UNO = function(string, component, isContext) { } } + return this.removeAccessKey(text); +} + +window.removeAccessKey = function(text) { // Remove access key markers from translated strings // 1. access key in parenthesis in case of non-latin scripts text = text.replace(/\(~[A-Za-z]\)/, ''); diff --git a/scripts/unocommands.py b/scripts/unocommands.py index e4dc45ef4..59aa19d84 100755 --- a/scripts/unocommands.py +++ b/scripts/unocommands.py @@ -86,6 +86,7 @@ def extractMenuCommands(path): # Extract all the uno commands we are using in the Online context menu def extractContextCommands(path): + commandsToIgnore = ["FontDialogForParagraph"] commands = [] # extract from the comments whitelist @@ -114,6 +115,7 @@ def extractContextCommands(path): if line.find("_UNO(") >= 0: commands += commandFromMenuLine(line) + commands = [command for command in commands if command not in commandsToIgnore] # may the list unique return set(commands) @@ -242,6 +244,10 @@ window._UNO = function(string, component, isContext) { \t\t} \t} +\treturn this.removeAccessKey(text); +} + +window.removeAccessKey = function(text) { \t// Remove access key markers from translated strings \t// 1. access key in parenthesis in case of non-latin scripts \ttext = text.replace(/\(~[A-Za-z]\)/, ''); _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
