From 5c4d5fb571434878c69048f497d393273fd32077 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20M=C3=BCller?= Date: Tue, 7 Mar 2023 00:31:28 +0100 Subject: [PATCH] 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. --- src/game/editor/editor.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/game/editor/editor.cpp b/src/game/editor/editor.cpp index e09c4d40b..12bbaf9f9 100644 --- a/src/game/editor/editor.cpp +++ b/src/game/editor/editor.cpp @@ -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))