X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.document.swt.core%2Fsrc%2Forg%2Fsimantics%2Fdocument%2Fswt%2Fcore%2Fbase%2FScrolledCompositeContent.java;fp=bundles%2Forg.simantics.document.swt.core%2Fsrc%2Forg%2Fsimantics%2Fdocument%2Fswt%2Fcore%2Fbase%2FScrolledCompositeContent.java;h=28f6b408a068426d9d45fb099aa661f761693460;hb=969bd23cab98a79ca9101af33334000879fb60c5;hp=0000000000000000000000000000000000000000;hpb=866dba5cd5a3929bbeae85991796acb212338a08;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.document.swt.core/src/org/simantics/document/swt/core/base/ScrolledCompositeContent.java b/bundles/org.simantics.document.swt.core/src/org/simantics/document/swt/core/base/ScrolledCompositeContent.java new file mode 100644 index 000000000..28f6b408a --- /dev/null +++ b/bundles/org.simantics.document.swt.core/src/org/simantics/document/swt/core/base/ScrolledCompositeContent.java @@ -0,0 +1,41 @@ +package org.simantics.document.swt.core.base; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.ScrolledComposite; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.ScrollBar; +import org.simantics.utils.ui.SWTUtils; + +public class ScrolledCompositeContent extends Composite implements Runnable { + + public ScrolledCompositeContent(Composite parent, int style) { + super(parent, style); + } + + public void refreshSize() { + SWTUtils.asyncExec(this, this); + } + + public void run() { + + if(isDisposed()) return; + + ScrolledComposite sc = (ScrolledComposite)getParent(); + int scWidth = sc.getSize().x; + + ScrollBar bar = sc.getVerticalBar(); + if(bar != null && bar.isVisible()) + scWidth -= bar.getSize().x; + + Point current = getSize(); + Point target = computeSize(scWidth, SWT.DEFAULT, true); + + if(!current.equals(target)) { + setSize(target); + sc.getParent().layout(true, true); + } + + } + +}