diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/ConnectionPageSettings.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/ConnectionPageSettings.java index 3186033d37f8..05f97872ca83 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/ConnectionPageSettings.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/ConnectionPageSettings.java @@ -421,8 +421,10 @@ private CTabItem createPageTab(@NotNull IDialogPage page, int index) { item.setToolTipText(page.getDescription()); if (page.getControl() == null) { - // TODO: We should respect pages that might not want to be scrollable (e.g. if they have their own scrollable controls) - item.setControl(UIUtils.createScrolledComposite(tabFolder)); + final ScrolledComposite sc = new ScrolledComposite(tabFolder, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); + sc.setExpandHorizontal(true); + sc.setExpandVertical(true); + item.setControl(sc); } else { item.setControl(page.getControl().getParent()); } @@ -440,6 +442,17 @@ private void activateCurrentItem() { ScrolledComposite panel = (ScrolledComposite) selection.getControl(); panel.setRedraw(false); try { + if (panel instanceof ScrolledComposite sc) { + page.createControl(sc); + Dialog.applyDialogFont(sc); + sc.setContent(page.getControl()); + sc.setMinSize(page.getControl().computeSize(SWT.DEFAULT, SWT.DEFAULT)); + sc.layout(); + } else { + page.createControl(panel); + Dialog.applyDialogFont(panel); + panel.layout(true, true); + } page.createControl(panel); Dialog.applyDialogFont(panel); UIUtils.configureScrolledComposite(panel, page.getControl());