Fix: next and prev tabs incorrectly implemented (#6208)

Signed-off-by: T.J. McGrath-Daly <tj.mcgrath.daly@huawei.com>

Co-authored-by: Tobias Alexander Franke <tobias.alexander.franke@huawei.com>
This commit is contained in:
tjmgd
2021-12-22 19:31:49 +00:00
committed by GitHub
parent 38bbf9659e
commit 7b99b6a1e2
@@ -2141,24 +2141,7 @@ namespace LUAEditor
if (event->type() == QEvent::KeyPress)
{
QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
if (keyEvent->key() == Qt::Key_Control)
{
TrackedLUACtrlTabOrder::iterator tabIter = m_CtrlTabOrder.begin();
while (tabIter != m_CtrlTabOrder.end())
{
if (*tabIter == m_lastFocusedAssetId)
{
// store the visible top window and make it the list's topmost
m_StoredTabAssetId = m_lastFocusedAssetId;
m_CtrlTabOrder.erase(tabIter);
m_CtrlTabOrder.push_front(m_lastFocusedAssetId);
break;
}
++tabIter;
}
}
else if (keyEvent->key() == Qt::Key_C && (keyEvent->modifiers() & Qt::ControlModifier))
if (keyEvent->key() == Qt::Key_C && (keyEvent->modifiers() & Qt::ControlModifier))
{
OnEditMenuCopy();
return true;
@@ -2174,32 +2157,6 @@ namespace LUAEditor
QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
if (keyEvent->key() == Qt::Key_Control)
{
// reconfigure the ctrl+tab stack to set the next document to be the stored guid
// which was recorded when Ctrl was first pressed
TrackedLUACtrlTabOrder::iterator tabIter = m_CtrlTabOrder.begin();
while (tabIter != m_CtrlTabOrder.end())
{
if (*tabIter == m_StoredTabAssetId)
{
m_CtrlTabOrder.erase(tabIter);
tabIter = m_CtrlTabOrder.begin();
++tabIter;
if (tabIter != m_CtrlTabOrder.end())
{
m_CtrlTabOrder.insert(tabIter, m_StoredTabAssetId);
}
else
{
m_CtrlTabOrder.push_back(m_StoredTabAssetId);
}
break;
}
++tabIter;
}
m_StoredTabAssetId = "";
}
}
@@ -2210,46 +2167,67 @@ namespace LUAEditor
void LUAEditorMainWindow::OnTabForwards()
{
// pop the first entry and push it to the last spot
TrackedLUACtrlTabOrder::iterator tabIter = m_CtrlTabOrder.begin();
if (tabIter != m_CtrlTabOrder.end())
{
AZStd::string assetId = *tabIter;
m_CtrlTabOrder.pop_front();
m_CtrlTabOrder.push_back(assetId);
// then grab the new first entry and pass it on to the widgetry
tabIter = m_CtrlTabOrder.begin();
TrackedLUAViewMap::iterator viewInfoIter = m_dOpenLUAView.find(*tabIter);
if (viewInfoIter != m_dOpenLUAView.end())
while (tabIter != m_CtrlTabOrder.end())
{
if (*tabIter == m_lastFocusedAssetId)
{
viewInfoIter->second.luaDockWidget()->show();
viewInfoIter->second.luaDockWidget()->raise();
viewInfoIter->second.luaViewWidget()->setFocus();
break;
}
tabIter++;
}
if (tabIter == m_CtrlTabOrder.begin())
{
tabIter = m_CtrlTabOrder.end();
--tabIter;
}
else
{
--tabIter;
}
TrackedLUAViewMap::iterator viewInfoIter = m_dOpenLUAView.find(*tabIter);
if (viewInfoIter != m_dOpenLUAView.end())
{
viewInfoIter->second.luaDockWidget()->show();
viewInfoIter->second.luaDockWidget()->raise();
viewInfoIter->second.luaViewWidget()->setFocus();
m_lastFocusedAssetId = *tabIter;
}
}
void LUAEditorMainWindow::OnTabBackwards()
{
// pop the last entry and push it to the first spot
TrackedLUACtrlTabOrder::iterator tabIter = m_CtrlTabOrder.end();
--tabIter;
if (tabIter != m_CtrlTabOrder.end())
{
TrackedLUACtrlTabOrder::iterator tabIter = m_CtrlTabOrder.begin();
while (tabIter != m_CtrlTabOrder.end())
{
AZStd::string assetId = *tabIter;
m_CtrlTabOrder.pop_back();
m_CtrlTabOrder.push_front(assetId);
// then grab the new first entry and pass it on to the widgetry
tabIter = m_CtrlTabOrder.begin();
TrackedLUAViewMap::iterator viewInfoIter = m_dOpenLUAView.find(*tabIter);
if (viewInfoIter != m_dOpenLUAView.end())
if (*tabIter == m_lastFocusedAssetId)
{
viewInfoIter->second.luaDockWidget()->show();
viewInfoIter->second.luaDockWidget()->raise();
viewInfoIter->second.luaViewWidget()->setFocus();
break;
}
tabIter++;
}
if (tabIter == m_CtrlTabOrder.end())
{
return;
}
tabIter++;
if (tabIter == m_CtrlTabOrder.end())
{
tabIter = m_CtrlTabOrder.begin();
}
TrackedLUAViewMap::iterator viewInfoIter = m_dOpenLUAView.find(*tabIter);
if (viewInfoIter != m_dOpenLUAView.end())
{
viewInfoIter->second.luaDockWidget()->show();
viewInfoIter->second.luaDockWidget()->raise();
viewInfoIter->second.luaViewWidget()->setFocus();
m_lastFocusedAssetId = *tabIter;
}
}