From 5e14fe85815f2c16fe09bdabbad301901a216a01 Mon Sep 17 00:00:00 2001
From: Mikhail Svechnikov <m.svechnikov@fz-juelich.de>
Date: Mon, 9 Dec 2024 15:47:49 +0100
Subject: [PATCH] invert mask order in set

---
 GUI/Model/Type/SetWithModel.h        |  9 +++++----
 GUI/View/Scene/MaskGraphicsScene.cpp | 10 +++++-----
 2 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/GUI/Model/Type/SetWithModel.h b/GUI/Model/Type/SetWithModel.h
index 21a4cd1d620..6671ea3c980 100644
--- a/GUI/Model/Type/SetWithModel.h
+++ b/GUI/Model/Type/SetWithModel.h
@@ -72,15 +72,16 @@ public:
         m_qmodel->endRemoveRows();
         emit AbstractSetModel::setChanged();
     }
-    void add_item(T* t)
+    void insert_item(size_t i, T* t)
     {
-        m_qmodel->beginInsertRows({}, size(), size());
+        m_qmodel->beginInsertRows({}, i, i);
         t->renumber(itemNames());
-        m_vec.push_back(t);
-        m_idx = m_vec.size() - 1;
+        m_vec.insert_at(i, t);
+        m_idx = i;
         m_qmodel->endInsertRows();
         emit AbstractSetModel::setChanged();
     }
+    void add_item(T* t) { insert_item(size(), t); }
     void add_items(const std::vector<T*>& v)
     {
         if (v.empty())
diff --git a/GUI/View/Scene/MaskGraphicsScene.cpp b/GUI/View/Scene/MaskGraphicsScene.cpp
index 4c2968a755c..1d496c9323d 100644
--- a/GUI/View/Scene/MaskGraphicsScene.cpp
+++ b/GUI/View/Scene/MaskGraphicsScene.cpp
@@ -607,7 +607,7 @@ void MaskGraphicsScene::processRectangleOrEllipseItem(QGraphicsSceneMouseEvent*
         else
             ASSERT_NEVER;
 
-        m_masks->add_item(m_active_mask);
+        m_masks->insert_item(0, m_active_mask);
 
         if (m_mode != Canvas2DMode::ROI)
             m_active_mask->setMaskValue(m_mask_value);
@@ -651,7 +651,7 @@ void MaskGraphicsScene::processPolygonItem(QGraphicsSceneMouseEvent* event)
     if (!m_active_mask) {
         setDrawingInProgress(true);
         MaskItem* new_poly = new PolygonItem;
-        m_masks->add_item(new_poly);
+        m_masks->insert_item(0, new_poly);
         new_poly->setMaskValue(m_mask_value);
         m_active_mask = new_poly;
         registerOverlay(new_poly, false);
@@ -687,9 +687,9 @@ void MaskGraphicsScene::processLineItem(QGraphicsSceneMouseEvent* event)
         ASSERT_NEVER;
 
     if (Canvas2DMode::isPrjn(m_mode))
-        m_prjns->add_item(m_active_mask);
+        m_prjns->insert_item(0, m_active_mask);
     else
-        m_masks->add_item(m_active_mask);
+        m_masks->insert_item(0, m_active_mask);
 
     emit m_active_mask->maskGeometryChanged();
 
@@ -707,7 +707,7 @@ void MaskGraphicsScene::processFullframeItem(QGraphicsSceneMouseEvent* event)
     Q_UNUSED(event);
     setDrawingInProgress(true);
     MaskItem* item = new FullframeItem;
-    m_masks->add_item(item);
+    m_masks->insert_item(0, item);
     m_active_mask = item;
     setDrawingInProgress(false);
 }
-- 
GitLab