LUA MIMGUI | Как в mimgui получить возможный размер окна по содержимому?

Июнь

Новичок
Автор темы
11
15
Как в mimgui получить возможный размер окна по содержимому?
Есть такой флаг - imgui.WindowFlags.AlwaysAutoResize - он подгоняет размеры окна под его содержимое.
Есть ли способ получить размер, который выдал бы imgui.WindowFlags.AlwaysAutoResize, или другой способ, способный подгонять окно по содержимому?

На примере кода ниже нужен способ, который получил бы размер, не расширяя окно.
К примеру, когда мы откроем вкладку (она по содержанию по ширине явно больше, так как там "Сейчас открыта вторая вкладка! ..............."), но размеры окна остались от предыдущей вкладки, так как у нас не встроен флаг/способ, который расширял бы окно автоматически.

И нужно получить высоту/ширину, которую установил бы autoresize. Нужен именно способ, который определяет размер по содержимому.
Считать (calc'ать) каждый текст вручную - такое решение мне не подойдет, и это только в этом случае дело в тексте; в других это могут быть кнопки, вкладки и т. д.

Интересует решение, если таковое есть, с минималистичным кодом (желательно парой строк :) ).
Прибегал к GetContentRegion, но у меня или лыжи не едут, или он измеряет только видимую область.
Вполне возможно, я делал что-то не так. Мб можно как то с помощью effil?
HELP!!


code::
local imgui = require 'mimgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
local u8 = encoding.UTF8

local WinState = imgui.new.bool()

imgui.OnFrame(function() return WinState[0] end, function(player)
    imgui.SetNextWindowPos(imgui.ImVec2(500, 500), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.Begin(u8'Пример', WinState)
    
    if imgui.BeginTabBar('Tabs') then
        if imgui.BeginTabItem(u8'Первая') then
            imgui.Text(u8'Сейчас открыта первая вкладка')
            imgui.EndTabItem()
        end
        if imgui.BeginTabItem(u8'Вторая') then
            imgui.Text(u8'Сейчас открыта вторая вкладка! ............................................................. ')
            if imgui.Button('Test') then
                sampAddChatMessage('Вы нажали кнопку во второй вкладке',-1)
            end
            imgui.EndTabItem()
        end
        imgui.EndTabBar()
    end
    imgui.End()
end)

function main()
    sampRegisterChatCommand('cmd', function() WinState[0] = not WinState[0] end)
    wait(-1)
end