X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.spreadsheet.ui%2Fsrc%2Forg%2Fsimantics%2Fspreadsheet%2Fui%2FTextTableCellEditor.java;h=24fade56ae6a839b93195f7e723a699c42475256;hb=5915c1bbd6d0c6125aa3c815c7843339190f28e4;hp=b9920415ff31c3b7ef2357633275e60dc439f967;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/TextTableCellEditor.java b/bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/TextTableCellEditor.java index b9920415f..24fade56a 100644 --- a/bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/TextTableCellEditor.java +++ b/bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/TextTableCellEditor.java @@ -136,7 +136,14 @@ class TextTableCellEditor extends DefaultCellEditor implements SpreadsheetCellEd String str = (String)getCellEditorValue(); String cellName = SpreadsheetUtils.cellName(row, column); - String expression = clientModel.getPossiblePropertyAt(cellName, ClientModel.CONTENT_EXPRESSION); + Object expressionO = clientModel.getPossiblePropertyAt(cellName, ClientModel.CONTENT_EXPRESSION); + String expression = null; + if(expressionO instanceof String) { + expression = (String)expressionO; + } else if(expressionO instanceof Variant) { + expression = ((Variant)expressionO).getValue().toString(); + } + if(expression == null) { Variant content = SpreadsheetUtils.getSafeClientVariant(clientModel, cellName, ClientModel.CONTENT); if(content != null) @@ -145,14 +152,19 @@ class TextTableCellEditor extends DefaultCellEditor implements SpreadsheetCellEd expression = ""; } else { expression = "=" + expression; - } + } + //Don't update if the expression hasn't changed if (expression.equals(str)) return; if (str.startsWith("=")) { editor.edit(null, SpreadsheetUtils.cellName(row, column), ClientModel.CONTENT_EXPRESSION, str, Bindings.STRING, null); + //Update cell expression + clientModel.setProperty(cellName, ClientModel.CONTENT_EXPRESSION, str); } else { editor.edit(null, SpreadsheetUtils.cellName(row, column), Variant.ofInstance(str), null); + //Update cell expression + clientModel.setProperty(cellName, ClientModel.CONTENT_EXPRESSION, null); //If not an expression, then the expression property is null } }