Баги GUI API


photo

Recommended Posts

Добрый день.

1. Нельзя ограничить количество вводимых символов, строка либо сдвигается за границы виджета, если он ограничен контейнером, либо двигает границы виджета.

2. Не удалось заставить работать setPosition(). Без ALIGN виджет располагается дефолтно. С ALIGN соответственно его параметру.

3. Контейнер Окно не масштабируется если setSizeable(0). Должна быть возможность установить размеры через setHeight(), setWidth() при любом раскладе.

С Уважением Константин.

 

Edited by Vasara
Link to post

Здравствуйте.

2 hours ago, Vasara said:

1. Контейнер справа не поменял размеры.

Какое именно поведение вы от него хотите?

Встроенной функции для ограничения количества символов нет. Это можно решить при помощи такого коллбека:

int AppWorldLogic::init()
{
  ...
  edittextGridSizeX->addCallback(Gui::CHANGED, MakeCallback(this, &AppWorldLogic::on_text_changed));
  ...
}


void AppWorldLogic::on_text_changed()
{
	const auto LIMIT = 3;
	auto MAX_SYMBOLS = LIMIT + edittextGridSizeX->getNumLines() - 1;

	if (strlen(edittextGridSizeX->getText()) > MAX_SYMBOLS)
	{
		String str(edittextGridSizeX->getText(), MAX_SYMBOLS);
		
		auto num_lines = 1;
		auto last_line_size = 0;
		for (auto it = str.get(), ite = it + str.size(); it != ite; ++it)
		{
			if (*it == '\n')
			{
				++num_lines;
				last_line_size = 0;
			}
			else ++last_line_size;
		}

		edittextGridSizeX->setCallbackEnabled(Gui::CHANGED, false);
		edittextGridSizeX->setText(str);
		edittextGridSizeX->setCallbackEnabled(Gui::CHANGED, true);

		edittextGridSizeX->setCursor(last_line_size, num_lines - 1);
	}
}

 

Link to post
2 hours ago, Vasara said:

2. Не удалось заставить работать setPosition(). Без ALIGN виджет располагается дефолтно. С ALIGN соответственно его параметру.

Попробуйте флаг ALIGN_OVERLAP

Link to post
2 hours ago, Vasara said:

3. Контейнер Окно

Какой виджет вы имеете в виду?

  • Like 1
Link to post
8 hours ago, moroz said:

Какое именно поведение вы от него хотите?

Была моя ошибка, после копипасты недосмотрел имя виджета.

9 hours ago, moroz said:

Попробуйте флаг ALIGN_OVERLAP

Попробовал, работает.

9 hours ago, moroz said:

Какой виджет вы имеете в виду?

Widget Window. 

Спасибо, ваша помощь сэкономила мне кучу времени.

Link to post