From a165a3cb28170f5943b4c88abc8d304ff59e1c20 Mon Sep 17 00:00:00 2001 From: joshua Date: Tue, 1 Feb 2022 09:53:06 +0100 Subject: [PATCH] When undo an ungroup terminal command, the terminal keep the same level. --- .../TerminalStrip/UndoCommand/groupterminalscommand.cpp | 9 ++++++++- .../TerminalStrip/UndoCommand/groupterminalscommand.h | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/sources/TerminalStrip/UndoCommand/groupterminalscommand.cpp b/sources/TerminalStrip/UndoCommand/groupterminalscommand.cpp index e3a74d0bf..f93176ea3 100644 --- a/sources/TerminalStrip/UndoCommand/groupterminalscommand.cpp +++ b/sources/TerminalStrip/UndoCommand/groupterminalscommand.cpp @@ -62,9 +62,14 @@ void UnGroupTerminalsCommand::undo() { if (m_terminal_strip) { + //First, re-group all terminals for (const auto &key : m_physical_real_H.keys()) { m_terminal_strip->groupTerminals(key, m_physical_real_H.value(key)); } + //Second, set level. + for (const auto &pair : qAsConst(m_real_t_level)) { + m_terminal_strip->setLevel(pair.first, pair.second); + } } } @@ -82,7 +87,7 @@ void UnGroupTerminalsCommand::setUp(const QVector> { for (const auto &rt_ : to_ungroup) { - auto phy_t = m_terminal_strip->physicalTerminal(rt_.toWeakRef()); + auto phy_t = m_terminal_strip->physicalTerminal(rt_); if (phy_t) { //Physical have only one real terminal, no need to ungroup it @@ -93,6 +98,8 @@ void UnGroupTerminalsCommand::setUp(const QVector> auto vector_ = m_physical_real_H.value(phy_t); vector_.append(rt_); m_physical_real_H.insert(phy_t, vector_); + + m_real_t_level.append(qMakePair(rt_, phy_t->levelOf(rt_))); } } } diff --git a/sources/TerminalStrip/UndoCommand/groupterminalscommand.h b/sources/TerminalStrip/UndoCommand/groupterminalscommand.h index 6267d3db6..0b24f8f4a 100644 --- a/sources/TerminalStrip/UndoCommand/groupterminalscommand.h +++ b/sources/TerminalStrip/UndoCommand/groupterminalscommand.h @@ -64,6 +64,7 @@ class UnGroupTerminalsCommand : public QUndoCommand private: QPointer m_terminal_strip; QHash , QVector>> m_physical_real_H; + QVector, int>> m_real_t_level; }; #endif // GROUPTERMINALSCOMMAND_H