Resizing scroll panel does not work

Hey,
I’m trying to create an effect which resizes all elements on the screen so they expand/shrink to their target size. When I set the width and height of a scroll panel or any control that has a scroll panel within it, nothing changes in the look like. Same issue with buttons, but for example panels resize properly.

What can be the cause of it?

Thanks,
Adam

Are you using nifty-gui ? In this case you need to call layoutElements on the parent of the element you are resizing.

Yes, I do use nifty GUI.

Thanks, I’ll try it.

Adam

Actually I tried it and layoutElements() does not work, the elements do not get resized, but the animation/effect becomes a whole lot laggier…

Any other idea?

Could you post the code of your resizing effect? yes calling layoutElements() it’s a bit heavy …

Yeah, here it is and thanks for your help:
[java]public class ExpandShrink implements EffectImpl {
private Nifty nifty;
private float sizePercentage = 0.5f;
private Element element;

private boolean inherit;
private boolean expand;
private List<Element> targetElements;
private Map<Element, Integer> widthsMap;
private Map<Element, Integer> heightsMap;


@Override
public void activate(Nifty nifty, Element element, EffectProperties parameter) {
    this.nifty = nifty;
    sizePercentage = Float.parseFloat(parameter.getProperty("sizePercentage"));
    inherit = parameter.getProperty("inherit")==null?false:Boolean.parseBoolean(parameter.getProperty("inherit"));
    expand = parameter.getProperty("expand")==null?true:Boolean.parseBoolean(parameter.getProperty("expand"));
    this.element = element;

    targetElements = new LinkedList<>();

    if (inherit)
    {
        addAllChildrenOfElement(element,targetElements);
    }
    else
    {
        targetElements.add(element);
    }

    widthsMap = new HashMap<>();
    heightsMap = new HashMap<>();

    targetElements.stream().forEach(currentElement->{
        widthsMap.put(currentElement,currentElement.getWidth());
        heightsMap.put(currentElement,currentElement.getHeight());
    });
}
private void addAllChildrenOfElement(Element element,List elementsList)
{
    if (element.getElements().isEmpty())
    {
        elementsList.add(element);
    }
    else
    {
        element.getElements().stream().forEach(currentChildElement->addAllChildrenOfElement(currentChildElement,elementsList));
    }
}
@Override
public void execute(Element element, float effectTime, Falloff falloff, NiftyRenderEngine r) {

    targetElements.stream().forEach(targetElement -> {
        int currentElementWidth = widthsMap.get(targetElement);
        int currentElementHeight = heightsMap.get(targetElement);

        if (expand) {
            targetElement.setWidth((int) ((1 - sizePercentage) * effectTime * currentElementWidth + sizePercentage * currentElementWidth));
            targetElement.setHeight((int) ((1 - sizePercentage) * effectTime * currentElementHeight + sizePercentage * currentElementHeight));
            r.setRenderTextSize((1 - sizePercentage) * effectTime * 1 + sizePercentage * 1);
            //targetElement.setConstraintWidth(new SizeValue(targetElement.getWidth()+"px"));
            //targetElement.setConstraintHeight(new SizeValue(targetElement.getHeight() + "px"));
        } else {
            targetElement.setWidth((int) ((sizePercentage - 1) * effectTime * currentElementWidth + currentElementWidth));
            targetElement.setHeight((int) ((sizePercentage - 1) * effectTime * currentElementHeight + currentElementHeight));
            r.setRenderTextSize((sizePercentage - 1) * effectTime * 1 + 1);
            //targetElement.setConstraintWidth(new SizeValue(targetElement.getWidth()+"px"));
            //targetElement.setConstraintHeight(new SizeValue(targetElement.getHeight()+"px"));
        }
        targetElement.getParent().layoutElements();
    });
}

@Override
public void deactivate() {

}

}[/java]