diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java index dcf62443bb0e9293503151b10b8c697e741eea2c..d8b7bbfe2193d73a39afbdb73dbae974d5128250 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java @@ -1007,17 +1007,19 @@ public class ResultSetViewer extends Viewer @Override public T getAdapter(Class adapter) { - if (UIUtils.hasFocus(filtersPanel)) { - T result = filtersPanel.getAdapter(adapter); - if (result != null) { - return result; - } - } else if (UIUtils.hasFocus(panelFolder)) { - IResultSetPanel visiblePanel = getVisiblePanel(); - if (visiblePanel instanceof IAdaptable) { - T adapted = ((IAdaptable) visiblePanel).getAdapter(adapter); - if (adapted != null) { - return adapted; + if (UIUtils.isUIThread()) { + if (UIUtils.hasFocus(filtersPanel)) { + T result = filtersPanel.getAdapter(adapter); + if (result != null) { + return result; + } + } else if (UIUtils.hasFocus(panelFolder)) { + IResultSetPanel visiblePanel = getVisiblePanel(); + if (visiblePanel instanceof IAdaptable) { + T adapted = ((IAdaptable) visiblePanel).getAdapter(adapter); + if (adapted != null) { + return adapted; + } } } } diff --git a/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/UIUtils.java b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/UIUtils.java index 38244c148df225bf3209d9e4efc39315023955f1..85e1fada0a6c0036295a1ab13447d9ecfd5d1e93 100644 --- a/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/UIUtils.java +++ b/plugins/org.jkiss.dbeaver.ui/src/org/jkiss/dbeaver/ui/UIUtils.java @@ -1100,6 +1100,10 @@ public class UIUtils { } } + public static boolean isUIThread() { + return Display.getDefault().getThread() == Thread.currentThread(); + } + /** * Determine whether this control or any of it's child has focus *