add 'min-size' ui property

This commit is contained in:
MihailRis 2025-01-18 06:37:27 +03:00
parent 0ce5e23a2a
commit 209490192c
4 changed files with 10 additions and 1 deletions

View File

@ -35,6 +35,7 @@ Examples:
- `margin` - element margin. Type: 4D vector - `margin` - element margin. Type: 4D vector
*left, top, right, bottom* *left, top, right, bottom*
- `visible` - element visibility. Type: boolean (true/false) - `visible` - element visibility. Type: boolean (true/false)
- `min-size` - minimal element size. Type: 2D vector.
- `position-func` - position supplier for an element (two numbers), called on every parent container size update or on element adding on a container. May be called before *on_hud_open* - `position-func` - position supplier for an element (two numbers), called on every parent container size update or on element adding on a container. May be called before *on_hud_open*
- `size-func` - element size provider (two numbers), called when the size of the container in which the element is located changes, or when an element is added to the container. Can be called before on_hud_open is called. - `size-func` - element size provider (two numbers), called when the size of the container in which the element is located changes, or when an element is added to the container. Can be called before on_hud_open is called.
- `onclick` - lua function called when an element is clicked. - `onclick` - lua function called when an element is clicked.

View File

@ -39,6 +39,7 @@
- `margin` - внешний отступ элемента. Тип: 4D вектор. - `margin` - внешний отступ элемента. Тип: 4D вектор.
Порядок: `"left,top,right,bottom"` Порядок: `"left,top,right,bottom"`
- `visible` - видимость элемента. Тип: логический ("true"/"false"). - `visible` - видимость элемента. Тип: логический ("true"/"false").
- `min-size` - минимальный размер элемента. Тип: 2D вектор.
- `position-func` - поставщик позиции элемента (два числа), вызываемый при изменении размера контейнера, в котором находится элемент, либо при добавлении элемента в контейнер. Может быть вызван до вызова on_hud_open. - `position-func` - поставщик позиции элемента (два числа), вызываемый при изменении размера контейнера, в котором находится элемент, либо при добавлении элемента в контейнер. Может быть вызван до вызова on_hud_open.
- `size-func` - поставщик размера элемента (два числа), вызываемый при изменении размера контейнера, в котором находится элемент, либо при добавлении элемента в контейнер. Может быть вызван до вызова on_hud_open. - `size-func` - поставщик размера элемента (два числа), вызываемый при изменении размера контейнера, в котором находится элемент, либо при добавлении элемента в контейнер. Может быть вызван до вызова on_hud_open.
- `onclick` - lua функция вызываемая при нажатии на элемент. - `onclick` - lua функция вызываемая при нажатии на элемент.

View File

@ -290,7 +290,11 @@ const std::string& UINode::getId() const {
void UINode::reposition() { void UINode::reposition() {
if (sizefunc) { if (sizefunc) {
setSize(sizefunc()); auto newSize = sizefunc();
setSize(
{newSize.x < 0 ? size.x : newSize.x,
newSize.y < 0 ? size.y : newSize.y}
);
} }
if (positionfunc) { if (positionfunc) {
setPos(positionfunc()); setPos(positionfunc());

View File

@ -91,6 +91,9 @@ static void _readUINode(
if (element.has("pos")) { if (element.has("pos")) {
node.setPos(element.attr("pos").asVec2()); node.setPos(element.attr("pos").asVec2());
} }
if (element.has("min-size")) {
node.setMinSize(element.attr("min-size").asVec2());
}
if (element.has("size")) { if (element.has("size")) {
node.setSize(element.attr("size").asVec2()); node.setSize(element.attr("size").asVec2());
} }