diff --git a/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java b/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java index 419df49bde8a9833dc8fa33a17b75d5713633b4a..527dfb4c183f611695372d8998d6379331f94f98 100644 --- a/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java +++ b/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java @@ -1828,7 +1828,7 @@ public class ResultSetViewer extends Viewer } setStatus(statusMessage, hasWarnings ? DBPMessageType.WARNING : DBPMessageType.INFORMATION); - if (rowCountLabel != null) { + if (rowCountLabel != null && !rowCountLabel.isDisposed()) { // Update row count label if (!hasData()) { rowCountLabel.setMessage("No Data"); diff --git a/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/spreadsheet/SpreadsheetPresentation.java b/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/spreadsheet/SpreadsheetPresentation.java index 5bb3649e28f2f9ee741f70cdab515de6550cf38c..f16b388967ba634585182759e7f1f4a2f49afeaf 100644 --- a/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/spreadsheet/SpreadsheetPresentation.java +++ b/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/spreadsheet/SpreadsheetPresentation.java @@ -900,8 +900,8 @@ public class SpreadsheetPresentation extends AbstractPresentation implements IRe Composite placeholder = null; if (inline) { - if (controller.isReadOnly()) { - return null; + if (controller.isAttributeReadOnly(attr)) { + controller.setStatus("Column " + DBUtils.getObjectFullName(attr, DBPEvaluationContext.UI) + " is read-only", DBPMessageType.ERROR); } spreadsheet.cancelInlineEditor(); activeInlineEditor = null; @@ -917,6 +917,8 @@ public class SpreadsheetPresentation extends AbstractPresentation implements IRe gd.grabExcessVerticalSpace = true; placeholder.setLayoutData(gd); + placeholder.addDisposeListener(e -> controller.updateStatusMessage()); + controller.lockActionsByControl(placeholder); }