Merge pull request #7978 from Robyt3/Editor-Layer-Selector-UI-Handling

Cleanup select layer UI element handling
This commit is contained in:
Dennis Felsing 2024-02-14 23:21:44 +00:00 committed by GitHub
commit f8c9a11c03
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 10 additions and 16 deletions

View file

@ -3054,7 +3054,6 @@ void CEditor::DoMapEditor(CUIRect View)
View.w = View.h = Max;
}
static void *s_pEditorID = (void *)&s_pEditorID;
const bool Inside = UI()->MouseInside(&View);
// fetch mouse position
@ -3179,7 +3178,7 @@ void CEditor::DoMapEditor(CUIRect View)
}
const bool ShouldPan = (Input()->ModifierIsPressed() && UI()->MouseButton(0)) || UI()->MouseButton(2);
if(m_pContainerPanned == &s_pEditorID)
if(m_pContainerPanned == &m_MapEditorId)
{
// do panning
if(ShouldPan)
@ -3203,7 +3202,7 @@ void CEditor::DoMapEditor(CUIRect View)
if(Inside)
{
UI()->SetHotItem(s_pEditorID);
UI()->SetHotItem(&m_MapEditorId);
// do global operations like pan and zoom
if(UI()->CheckActiveItem(nullptr) && (UI()->MouseButton(0) || UI()->MouseButton(2)))
@ -3212,11 +3211,11 @@ void CEditor::DoMapEditor(CUIRect View)
s_StartWy = wy;
if(ShouldPan && m_pContainerPanned == nullptr)
m_pContainerPanned = &s_pEditorID;
m_pContainerPanned = &m_MapEditorId;
}
// brush editing
if(UI()->HotItem() == s_pEditorID)
if(UI()->HotItem() == &m_MapEditorId)
{
if(m_ShowPicker)
{
@ -3265,7 +3264,7 @@ void CEditor::DoMapEditor(CUIRect View)
else
str_copy(m_aTooltip, "Use left mouse button to paint with the brush. Right button clears the brush.");
if(UI()->CheckActiveItem(s_pEditorID))
if(UI()->CheckActiveItem(&m_MapEditorId))
{
CUIRect r;
r.x = s_StartWx;
@ -3385,7 +3384,7 @@ void CEditor::DoMapEditor(CUIRect View)
if(!Input()->ModifierIsPressed() && UI()->MouseButton(0) && s_Operation == OP_NONE && !m_QuadKnifeActive)
{
UI()->SetActiveItem(s_pEditorID);
UI()->SetActiveItem(&m_MapEditorId);
if(m_pBrush->IsEmpty())
s_Operation = OP_BRUSH_GRAB;
@ -3576,7 +3575,7 @@ void CEditor::DoMapEditor(CUIRect View)
}
}
if(UI()->CheckActiveItem(s_pEditorID))
if(UI()->CheckActiveItem(&m_MapEditorId))
{
// release mouse
if(!UI()->MouseButton(0))
@ -3606,7 +3605,7 @@ void CEditor::DoMapEditor(CUIRect View)
MapView()->OffsetWorld({0, PanSpeed * m_MouseWScale});
}
}
else if(UI()->CheckActiveItem(s_pEditorID))
else if(UI()->CheckActiveItem(&m_MapEditorId))
{
// release mouse
if(!UI()->MouseButton(0))
@ -4390,17 +4389,13 @@ void CEditor::RenderLayers(CUIRect LayersBox)
bool CEditor::SelectLayerByTile()
{
// ctrl+rightclick a map index to select the layer that has a tile there
static bool s_CtrlClick = false;
static int s_Selected = 0;
int MatchedGroup = -1;
int MatchedLayer = -1;
int Matches = 0;
bool IsFound = false;
if(UI()->MouseButton(1) && Input()->ModifierIsPressed())
if(Input()->ModifierIsPressed() && UI()->HotItem() == &m_MapEditorId && UI()->MouseButtonClicked(1))
{
if(s_CtrlClick)
return false;
s_CtrlClick = true;
for(size_t g = 0; g < m_Map.m_vpGroups.size(); g++)
{
for(size_t l = 0; l < m_Map.m_vpGroups[g]->m_vpLayers.size(); l++)
@ -4451,8 +4446,6 @@ bool CEditor::SelectLayerByTile()
return true;
}
}
else
s_CtrlClick = false;
return false;
}

View file

@ -694,6 +694,7 @@ public:
float m_MouseDeltaWy;
const void *m_pContainerPanned;
const void *m_pContainerPannedLast;
char m_MapEditorId; // UI element ID for the main map editor
enum EShowTile
{