arsd icon indicating copy to clipboard operation
arsd copied to clipboard

Unexpectedly huge paddings when wrapping a checkbox inside a blank widget

Open WebFreak001 opened this issue 4 years ago • 5 comments

using wrapped checkbox: grafik

using checkbox: grafik

code:

/+ dub.sdl:
dependency "arsd-official:minigui" version="~>10.1.0"
+/

import arsd.minigui;
import std.conv;
import std.stdio;

void main(string[] args)
{
	auto window = new MainWindow();

	auto layout = new VerticalLayout(window);

	foreach (i; 0 .. 4)
	{
		auto pair = new HorizontalLayout(layout);
		new LineEdit(pair).content = text("Checkbox ", i + 1);
		// new Checkbox("active", pair);
		new WrappedCheckbox(pair, i);
	}

	window.loop();
}

class WrappedCheckbox : Widget
{
	// mixin Padding!"1";

	Checkbox cb;
	int i;

	this(Widget parent, int i)
	{
		super(parent);
		cb = new Checkbox("active", this);
		cb.addEventListener(EventType.change, &this.update);
		this.i = i;
	}

	void update()
	{
		writeln("change ", i, " to ", cb.isChecked);
	}
}

it seems it somehow resizes to fill all space now

WebFreak001 avatar Jun 30 '21 13:06 WebFreak001

The checkbox class has a max height, the widget class does not. so the wrapped one ends up flexing to 25% of the available window.

adamdruppe avatar Jun 30 '21 13:06 adamdruppe

while that's logical I think it might be a bit unreasonable to require people to clone widgets exactly with all their properties properly. Would it be possible to make the paddings and other styles changable? My use-case was that I just wanted to give the checkbox a little bit of padding

WebFreak001 avatar Jun 30 '21 14:06 WebFreak001

it isn't padding, it is maxHeight. change that in your wrapper and you'll see the behavior magically change

class YourWidget { override int maxHeight() { return 30; } }

that kind of thing

(I think. haven't tried)

adamdruppe avatar Jun 30 '21 14:06 adamdruppe

sorry I think you misunderstood, I wanted to say:

I'm making this wrapper class because I want to add padding.

I don't want to reimplement all the specifics of my padded widget (checkbox -> maxHeight, etc.)

Would it be reasonable to allow users to change margin/padding/etc on layouts if not on widgets?

WebFreak001 avatar Jun 30 '21 14:06 WebFreak001

oh yeah i do want to change the spacing from the parent too, i was thinking about adding that pretty soon as a kind of like grid spacing or something

adamdruppe avatar Jun 30 '21 17:06 adamdruppe