* @brief Resolves a saved window-order array into live windowIds. */
| 669 | * @brief Resolves a saved window-order array into live windowIds. |
| 670 | */ |
| 671 | QVector<int> UI::WindowManager::resolveSavedOrder(const QJsonObject& layout, |
| 672 | const QHash<StableKey, int>& stableLookup) const |
| 673 | { |
| 674 | QVector<int> newOrder; |
| 675 | QSet<int> seen; |
| 676 | const bool typed = layout.contains("windowOrderTyped"); |
| 677 | const QJsonArray src = (typed ? layout["windowOrderTyped"] : layout["windowOrder"]).toArray(); |
| 678 | |
| 679 | for (const auto& val : std::as_const(src)) { |
| 680 | int id = -1; |
| 681 | if (typed) |
| 682 | id = resolveSavedWindowId(val.toObject(), stableLookup, m_windows); |
| 683 | else |
| 684 | id = val.toInt(-1); |
| 685 | |
| 686 | if (id < 0 || seen.contains(id) || !m_windows.contains(id)) |
| 687 | continue; |
| 688 | |
| 689 | newOrder.append(id); |
| 690 | seen.insert(id); |
| 691 | } |
| 692 | |
| 693 | for (int id : std::as_const(m_windowOrder)) { |
| 694 | if (!seen.contains(id)) { |
| 695 | newOrder.append(id); |
| 696 | seen.insert(id); |
| 697 | } |
| 698 | } |
| 699 | |
| 700 | return newOrder; |
| 701 | } |
| 702 | |
| 703 | /** |
| 704 | * @brief Applies saved manual-mode geometries to live windows and stashes the |
nothing calls this directly
no test coverage detected