Fix action offset in button children
This commit is contained in:
parent
e67b3f1fdc
commit
bcba2893bf
2 changed files with 8 additions and 11 deletions
|
|
@ -71,17 +71,9 @@ namespace psemek::ui
|
|||
|
||||
void button::on_state_changed(state_t old)
|
||||
{
|
||||
auto s = merged_style();
|
||||
|
||||
if (state() == state_t::mousedown)
|
||||
if (state() == state_t::mousedown || old == state_t::mousedown)
|
||||
{
|
||||
for (auto c : children())
|
||||
if (c) c->reshape(c->shape().bbox() + geom::cast<float>(*s->action_offset));
|
||||
}
|
||||
else if (old == state_t::mousedown)
|
||||
{
|
||||
for (auto c : children())
|
||||
if (c) c->reshape(c->shape().bbox() - geom::cast<float>(*s->action_offset));
|
||||
post_reshape();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -24,8 +24,13 @@ namespace psemek::ui
|
|||
{
|
||||
shape_.box = bbox;
|
||||
auto st = merged_style();
|
||||
|
||||
geom::vector offset{0.f, 0.f};
|
||||
if (state() == state_t::mousedown)
|
||||
offset = geom::cast<float>(*st->action_offset);
|
||||
|
||||
element * c = label() ? (element *)label() : icon();
|
||||
if (st && c) c->reshape(geom::shrink(bbox, 1.f * (*st->border_width + *st->inner_margin)));
|
||||
if (c) c->reshape(geom::shrink(bbox, 1.f * (*st->border_width + *st->inner_margin)) + offset);
|
||||
}
|
||||
|
||||
void on_state_changed(state_t old) override
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue