Close editor popups and prevent popups from opening when GUI hidden

Prevent editor popups (quad point, quad pivot, sound source) from being opened while the editor GUI is hidden. The opened popups would not be visible, which results in multiple identical popups being opened at the same time. This cannot happen while the GUI is shown, as the already opened popup takes focus so no second identical popup can be opened at the same time.

Additionally, all opened popups are now closed when the GUI is hidden. Otherwise this results in crashes, as the already opened popups reference the current layer and quad selection, which can change or become invalidated while the GUI is hidden.

Closes #6383.
This commit is contained in:
Robert Müller 2023-03-07 00:31:28 +01:00
parent 5107b38d04
commit 5c4d5fb571

View file

@ -1331,7 +1331,7 @@ void CEditor::DoSoundSource(CSoundSource *pSource, int Index)
{
if(!UI()->MouseButton(1))
{
if(m_vSelectedLayers.size() == 1)
if(m_vSelectedLayers.size() == 1 && m_GuiActive)
{
static int s_SourcePopupID = 0;
UiInvokePopupMenu(&s_SourcePopupID, 0, UI()->MouseX(), UI()->MouseY(), 120, 200, PopupSource);
@ -1480,7 +1480,7 @@ void CEditor::DoQuad(CQuad *pQuad, int Index)
{
if(!UI()->MouseButton(1))
{
if(m_vSelectedLayers.size() == 1)
if(m_vSelectedLayers.size() == 1 && m_GuiActive)
{
m_SelectedQuadIndex = FindSelectedQuadIndex(Index);
@ -1692,7 +1692,7 @@ void CEditor::DoQuadPoint(CQuad *pQuad, int QuadIndex, int V)
{
if(!UI()->MouseButton(1))
{
if(m_vSelectedLayers.size() == 1)
if(m_vSelectedLayers.size() == 1 && m_GuiActive)
{
m_SelectedQuadPoint = V;
m_SelectedQuadIndex = FindSelectedQuadIndex(QuadIndex);
@ -6496,7 +6496,10 @@ void CEditor::OnRender()
{
m_GuiActive = !m_GuiActive;
if(!m_GuiActive)
{
m_LockMouse = false;
UiClosePopupMenus();
}
}
if(Input()->KeyPress(KEY_F10))