Как ImGui узнает, каков текущий уровень отступа?

#c #user-interface #scope #imgui

#c #пользовательский интерфейс #область видимости #imgui

Вопрос:

До меня только что дошло, что с ImGui

 if(CollapsingHeader("MyHeader"))
{
    if(Button("B"))
    {
      // Do stuff
    }
}
 

Рендеринг отличается от:

 if(CollapsingHeader("MyHeader"))
{
}
if(Button("B"))
{
      // Do stuff
}
 

В первом случае кнопка вложена в заголовок, во втором — вне заголовка.
Каким образом ImGui может определить, что в первой версии функция button вложена в if, а во второй — нет?

Комментарии:

1. Это не имеет ничего общего с используемой вами библиотекой, а все связано с синтаксисом языка C . Первый фрагмент вызывается Button("B") , только если CollapsingHeader("MyHeader") возвращает true , и выполняется Do stuff , только если оба возвращают true . Второй фрагмент игнорирует результат CollapsingHeader("MyHeader") и выполняется Do stuff , если Button("B") возвращает true , независимо от того, что CollapsingHeader("MyHeader") возвращает. Это две разные программы, выполняющие две разные вещи.

2. Я идиот, вы правы. Сегодня я слишком долго программировал.