minor refactor Button
This commit is contained in:
parent
ead46158d9
commit
f473df33fb
@ -308,7 +308,7 @@ dv::value Parser::parseObject(dv::value&& object, int indent) {
|
|||||||
object[std::string(name)] = parseFullValue(indent);
|
object[std::string(name)] = parseFullValue(indent);
|
||||||
skipEmptyLines();
|
skipEmptyLines();
|
||||||
}
|
}
|
||||||
return object;
|
return std::move(object);
|
||||||
}
|
}
|
||||||
|
|
||||||
dv::value yaml::parse(std::string_view filename, std::string_view source) {
|
dv::value yaml::parse(std::string_view filename, std::string_view source) {
|
||||||
|
|||||||
@ -34,14 +34,12 @@ Button::Button(
|
|||||||
const onaction& action,
|
const onaction& action,
|
||||||
glm::vec2 size
|
glm::vec2 size
|
||||||
)
|
)
|
||||||
: Panel(gui, size, padding, 0) {
|
: Panel(gui, size, padding, 0.0f) {
|
||||||
if (size.y < 0.0f) {
|
if (size.x < 0.0f || size.y < 0.0f) {
|
||||||
size = glm::vec2(
|
setContentSize({text.length() * 8, 16});
|
||||||
glm::max(padding.x + padding.z + text.length() * 8, size.x),
|
} else {
|
||||||
glm::max(padding.y + padding.w + 16, size.y)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
setSize(size);
|
setSize(size);
|
||||||
|
}
|
||||||
|
|
||||||
if (action) {
|
if (action) {
|
||||||
listenAction(action);
|
listenAction(action);
|
||||||
@ -50,13 +48,12 @@ Button::Button(
|
|||||||
|
|
||||||
label = std::make_shared<Label>(gui, text);
|
label = std::make_shared<Label>(gui, text);
|
||||||
label->setAlign(Align::center);
|
label->setAlign(Align::center);
|
||||||
label->setSize(
|
label->setSize(getContentSize());
|
||||||
size - glm::vec2(padding.z + padding.x, padding.w + padding.y)
|
label->setInteractive(true);
|
||||||
);
|
|
||||||
label->setInteractive(false);
|
|
||||||
add(label);
|
add(label);
|
||||||
setHoverColor(glm::vec4(0.05f, 0.1f, 0.15f, 0.75f));
|
|
||||||
setPressedColor(glm::vec4(0.0f, 0.0f, 0.0f, 0.95f));
|
setHoverColor({0.05f, 0.1f, 0.15f, 0.75f});
|
||||||
|
setPressedColor({0.0f, 0.0f, 0.0f, 0.95f});
|
||||||
}
|
}
|
||||||
|
|
||||||
void Button::setText(std::wstring text) {
|
void Button::setText(std::wstring text) {
|
||||||
@ -82,9 +79,7 @@ Button* Button::textSupplier(wstringsupplier supplier) {
|
|||||||
void Button::refresh() {
|
void Button::refresh() {
|
||||||
Panel::refresh();
|
Panel::refresh();
|
||||||
if (label) {
|
if (label) {
|
||||||
label->setSize(
|
label->setSize(getContentSize());
|
||||||
size - glm::vec2(padding.z + padding.x, padding.w + padding.y)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -27,6 +27,17 @@ int Panel::getMinLength() const {
|
|||||||
return minLength;
|
return minLength;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Panel::setContentSize(const glm::ivec2& contentSize) {
|
||||||
|
setSize(glm::vec2(
|
||||||
|
glm::max(padding.x + padding.z + contentSize.x, size.x),
|
||||||
|
glm::max(padding.y + padding.w + contentSize.y, size.y)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
glm::vec2 Panel::getContentSize() const {
|
||||||
|
return size - glm::vec2(padding.z + padding.x, padding.w + padding.y);
|
||||||
|
}
|
||||||
|
|
||||||
void Panel::cropToContent() {
|
void Panel::cropToContent() {
|
||||||
if (maxLength > 0.0f) {
|
if (maxLength > 0.0f) {
|
||||||
setSize(glm::vec2(
|
setSize(glm::vec2(
|
||||||
|
|||||||
@ -27,6 +27,12 @@ namespace gui {
|
|||||||
|
|
||||||
virtual void setMinLength(int value);
|
virtual void setMinLength(int value);
|
||||||
int getMinLength() const;
|
int getMinLength() const;
|
||||||
|
|
||||||
|
/// @brief .setSize wrapper automatically applying padding to size
|
||||||
|
/// @param size element size excluding padding
|
||||||
|
void setContentSize(const glm::ivec2& size);
|
||||||
|
/// @return element size excluding padding
|
||||||
|
glm::vec2 getContentSize() const;
|
||||||
protected:
|
protected:
|
||||||
int minLength = 0;
|
int minLength = 0;
|
||||||
int maxLength = 0;
|
int maxLength = 0;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user