overlays: Consider padding when auto-resizing label elements

- Also make auto_resize return whether it changed the size
This commit is contained in:
VelocityRa 2018-06-17 19:50:27 +03:00 committed by kd-11
parent 84d1cf5065
commit 58f4b26134
1 changed files with 8 additions and 1 deletions

View File

@ -1290,11 +1290,15 @@ namespace rsx
this->text = text; this->text = text;
} }
void auto_resize(bool grow_only = false, u16 limit_w = UINT16_MAX, u16 limit_h = UINT16_MAX) bool auto_resize(bool grow_only = false, u16 limit_w = UINT16_MAX, u16 limit_h = UINT16_MAX)
{ {
u16 new_width, new_height; u16 new_width, new_height;
u16 old_width = w, old_height = h;
measure_text(new_width, new_height, true); measure_text(new_width, new_height, true);
new_width += padding_left + padding_right;
new_height += padding_top + padding_bottom;
if (new_width > limit_w && wrap_text) if (new_width > limit_w && wrap_text)
measure_text(new_width, new_height, false); measure_text(new_width, new_height, false);
@ -1306,6 +1310,9 @@ namespace rsx
w = std::min(new_width, limit_w); w = std::min(new_width, limit_w);
h = std::min(new_height, limit_h); h = std::min(new_height, limit_h);
bool size_changed = old_width != new_width || old_height != new_height;
return size_changed;
} }
}; };