private void refreshDrawableDisplayDetail() {
        contentTable.pad(5);
        contentTable.defaults().space(3);
        
        DrawableData selectedDrawable = null;
        if (property != null) {
            selectedDrawable = atlasData.getDrawable((String) property.value);
        } else if (customProperty != null) {
            selectedDrawable = atlasData.getDrawable((String) customProperty.getValue());
        }
        
        for (var drawable: drawables) {
            Button drawableButton;
    
            if ((property != null || customProperty != null) && drawable.type != DrawableType.FONT) {
                drawableButton = new Button(getSkin(), selectedDrawable == drawable ? "color-base-selected" : "color-base");
                drawableButton.addListener(new ChangeListener() {
                    @Override
                    public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                        result(drawable);
                        hide();
                    }
                });
                drawableButton.addListener(handListener);
            } else {
                drawableButton = new Button(getSkin(), "color-base-static");
            }
            contentTable.add(drawableButton).fillX();
            contentTable.row();
            
            Table table = new Table();
            drawableButton.add(table).growX();
            
            table.defaults().space(10);
            //preview
            Container bg = new Container();
            bg.setClip(true);
            bg.setBackground(getSkin().getDrawable("white"));
            bg.setColor(drawable.bgColor);
            
            Image image = new Image(atlasData.getDrawablePairs().get(drawable));
            if (MathUtils.isEqual(zoomSlider.getValue(), 1)) {
                image.setScaling(Scaling.fit);
                bg.fill(false);
            } else {
                image.setScaling(Scaling.stretch);
                bg.fill();
            }
            bg.setActor(image);
            table.add(bg).size(sizes[MathUtils.floor(zoomSlider.getValue())]);
            
            //name
            var label = new Label(drawable.name, getSkin());
            label.setAlignment(Align.left);
            label.setEllipsis("...");
            label.setEllipsis(true);
            table.add(label);
    
            image = new Image(getSkin(), drawable.type.iconName);
            table.add(image).right().expandX().spaceLeft(50).spaceRight(5);
            
            label = new Label(drawable.type.formattedName, getSkin());
            table.add(label).spaceLeft(5).width(100);
            
            if (showingOptions && drawable.type != DrawableType.FONT) {
                //more button
                var button = new Button(getSkin(),  "more");
                table.add(button);
                button.addListener(handListener);
                button.addListener(new MoreClickListener(drawable));
                //prevent click from activating parent button.
                button.addListener(new ChangeListener() {
                    @Override
                    public void changed(ChangeEvent event, Actor actor) {
                        event.setBubbles(false);
                    }
                });
            } else {
                table.add().size(22, 22);
            }
            
            //Tooltip
            var toolTip = (Main.makeTooltip(drawable.name, tooltipManager, getSkin()));
            label.addListener(toolTip);
        }
    }
Recreates the drawables array only including visible drawables.
core/src/com/ray3k/skincomposer/dialog/DialogDrawables.java