mimgui PopupModal не открывается в окне Child

KyRDa

Участник
Автор темы
88
46
Версия MoonLoader
.026-beta
Привет, у меня проблема с открытием ModalPopup в mimgui, он не открывается в окне Child. Мне нужно чтобы popup открывался и в Child и вне его
Lua:
imgui.OnFrame(function() return MainMenu[0] and not isPauseMenuActive() and not sampIsScoreboardOpen() end, function()
    imgui.SetNextWindowPos(imgui.ImVec2(500, 500), imgui.Cond.FirstUseEver, imgui.ImVec2(1, 1))
    imgui.Begin('Settings', MainMenu, imgui.WindowFlags.NoResize)

    if imgui.BeginPopupModal('Form') then
        imgui.Text('Test')
        if imgui.Button(u8'Pакрыть', imgui.ImVec2(280, 24)) then
            imgui.CloseCurrentPopup()
        end
        imgui.EndPopup()
    end

    if imgui.BeginChild('SettingTwo', imgui.ImVec2(225, 213), true, imgui.WindowFlags.NoScrollbar) then
        if imgui.Button(u8'Открыть', imgui.ImVec2(280, 24)) then
            imgui.OpenPopup('Form') -- Здесь не открывается
        end
        imgui.EndChild()
    end

    if imgui.Button(u8'Открыть2', imgui.ImVec2(280, 24)) then
        imgui.OpenPopup('Form') -- Здесь открывается
    end

    imgui.End()
end)


 
Последнее редактирование:
Решение
Попробуй функцию создать, и туда запихнуть, потом эту функцию вызывать в местах где тебе нужно.
code:
imgui.OnFrame(function() return MainMenu[0] and not isPauseMenuActive() and not sampIsScoreboardOpen() end, function()
    imgui.SetNextWindowPos(imgui.ImVec2(500, 500), imgui.Cond.FirstUseEver, imgui.ImVec2(1, 1))
    imgui.Begin('Settings', MainMenu, imgui.WindowFlags.NoResize)

    if imgui.BeginChild('SettingTwo', imgui.ImVec2(225, 213), true, imgui.WindowFlags.NoScrollbar) then
        if imgui.Button(u8'Открыть', imgui.ImVec2(280, 24)) then
            popOpen(true)
        end
        imgui.EndChild()
    end

    if imgui.Button(u8'Открыть2', imgui.ImVec2(280, 24)) then
        popOpen(true)
    end

    imgui.End()
end)...

ChаtGPT

Активный
388
95
Перемести ниже, под imgui.OpenPopup
Lua:
imgui.OnFrame(function() return MainMenu[0] and not isPauseMenuActive() and not sampIsScoreboardOpen() end, function()
    imgui.SetNextWindowPos(imgui.ImVec2(500, 500), imgui.Cond.FirstUseEver, imgui.ImVec2(1, 1))
    imgui.Begin('Settings', MainMenu, imgui.WindowFlags.NoResize)

    if imgui.BeginChild('SettingTwo', imgui.ImVec2(225, 213), true, imgui.WindowFlags.NoScrollbar) then
        if imgui.Button(u8'Открыть', imgui.ImVec2(280, 24)) then
            imgui.OpenPopup('Form') -- Здесь не открывается
        end
        imgui.EndChild()
    end

    if imgui.Button(u8'Открыть2', imgui.ImVec2(280, 24)) then
        imgui.OpenPopup('Form') -- Здесь открывается
    end

if imgui.BeginPopupModal('Form') then
        imgui.Text('Test')
        if imgui.Button(u8'Pакрыть', imgui.ImVec2(280, 24)) then
            imgui.CloseCurrentPopup()
        end
        imgui.EndPopup()
    end
    imgui.End()
end)
 
  • Грустно
Реакции: KyRDa

KyRDa

Участник
Автор темы
88
46
Перемести ниже, под imgui.OpenPopup
Lua:
imgui.OnFrame(function() return MainMenu[0] and not isPauseMenuActive() and not sampIsScoreboardOpen() end, function()
    imgui.SetNextWindowPos(imgui.ImVec2(500, 500), imgui.Cond.FirstUseEver, imgui.ImVec2(1, 1))
    imgui.Begin('Settings', MainMenu, imgui.WindowFlags.NoResize)

    if imgui.BeginChild('SettingTwo', imgui.ImVec2(225, 213), true, imgui.WindowFlags.NoScrollbar) then
        if imgui.Button(u8'Открыть', imgui.ImVec2(280, 24)) then
            imgui.OpenPopup('Form') -- Здесь не открывается
        end
        imgui.EndChild()
    end

    if imgui.Button(u8'Открыть2', imgui.ImVec2(280, 24)) then
        imgui.OpenPopup('Form') -- Здесь открывается
    end

if imgui.BeginPopupModal('Form') then
        imgui.Text('Test')
        if imgui.Button(u8'Pакрыть', imgui.ImVec2(280, 24)) then
            imgui.CloseCurrentPopup()
        end
        imgui.EndPopup()
    end
    imgui.End()
end)
Всё также не работает(, не открывается в окне Child
 

KyRDa

Участник
Автор темы
88
46
Попробуй функцию создать, и туда запихнуть, потом эту функцию вызывать в местах где тебе нужно.
code:
imgui.OnFrame(function() return MainMenu[0] and not isPauseMenuActive() and not sampIsScoreboardOpen() end, function()
    imgui.SetNextWindowPos(imgui.ImVec2(500, 500), imgui.Cond.FirstUseEver, imgui.ImVec2(1, 1))
    imgui.Begin('Settings', MainMenu, imgui.WindowFlags.NoResize)

    if imgui.BeginChild('SettingTwo', imgui.ImVec2(225, 213), true, imgui.WindowFlags.NoScrollbar) then
        if imgui.Button(u8'Открыть', imgui.ImVec2(280, 24)) then
            popOpen(true)
        end
        imgui.EndChild()
    end

    if imgui.Button(u8'Открыть2', imgui.ImVec2(280, 24)) then
        popOpen(true)
    end

    imgui.End()
end)

function popOpen(flag)
    imgui.OnFrame(function() return flag and not isPauseMenuActive() and not sampIsScoreboardOpen() end, function()
        imgui.OpenPopup('Form')
        if imgui.BeginPopupModal('Form') then
            imgui.Text('Test')

            if imgui.Button(u8'Pакрыть', imgui.ImVec2(280, 24)) then
                imgui.CloseCurrentPopup()
                flag = false
            end
            
            imgui.EndPopup()
        end
    end)
end
Не так всё легко как ты сказал, но получилось, спасибо