Bug 573716 - [CDateTime] Exception if using CDateTime widget in NatTable
Change-Id: I0f33bcf267c19cf037977a4b08aa84a11b16877c
Signed-off-by: Dirk Fauth <dirk.fauth@googlemail.com>
diff --git a/org.eclipse.nebula.widgets.nattable.extension.nebula/src/org/eclipse/nebula/widgets/nattable/extension/nebula/cdatetime/CDateTimeCellEditor.java b/org.eclipse.nebula.widgets.nattable.extension.nebula/src/org/eclipse/nebula/widgets/nattable/extension/nebula/cdatetime/CDateTimeCellEditor.java
index cbf094d..c197435 100644
--- a/org.eclipse.nebula.widgets.nattable.extension.nebula/src/org/eclipse/nebula/widgets/nattable/extension/nebula/cdatetime/CDateTimeCellEditor.java
+++ b/org.eclipse.nebula.widgets.nattable.extension.nebula/src/org/eclipse/nebula/widgets/nattable/extension/nebula/cdatetime/CDateTimeCellEditor.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2016, 2020 Dirk Fauth and others.
+ * Copyright (c) 2016, 2021 Dirk Fauth and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -176,8 +176,33 @@ public void shellClosed(ShellEvent e) {
}
@Override
+ protected void postClose(Shell popup) {
+ if (CDateTimeCellEditor.this.focusListener instanceof InlineFocusListener) {
+ ((InlineFocusListener) CDateTimeCellEditor.this.focusListener).handleFocusChanges = true;
+ }
+ super.postClose(popup);
+ }
+
+ @Override
+ public void setOpen(boolean open) {
+ if (CDateTimeCellEditor.this.focusListener instanceof InlineFocusListener) {
+ ((InlineFocusListener) CDateTimeCellEditor.this.focusListener).handleFocusChanges = false;
+ }
+ super.setOpen(open);
+ }
+
+ @Override
+ public void setOpen(boolean open, Runnable callback) {
+ if (CDateTimeCellEditor.this.focusListener instanceof InlineFocusListener) {
+ ((InlineFocusListener) CDateTimeCellEditor.this.focusListener).handleFocusChanges = false;
+ }
+ super.setOpen(open, callback);
+ }
+
+ @Override
protected void addTextListener() {
super.addTextListener();
+
this.text.getControl().addTraverseListener(event -> {
boolean committed = false;
if (event.keyCode == SWT.TAB && event.stateMask == SWT.MOD2) {