diff --git a/GUI/coregui/Models/FitParameterProxyModel.cpp b/GUI/coregui/Models/FitParameterProxyModel.cpp index 1d45d83a68e2c0119031ac2cf48a5250e8c56994..fd2b1d4ef64f8d0e51dce3cfe2527607d18ab487 100644 --- a/GUI/coregui/Models/FitParameterProxyModel.cpp +++ b/GUI/coregui/Models/FitParameterProxyModel.cpp @@ -138,7 +138,7 @@ int FitParameterProxyModel::rowCount(const QModelIndex& parent) const return 0; if(parent_item->modelType() == Constants::FitParameterContainerType) { - return parent_item->rowCount(); + return parent_item->numberOfChildren(); } else if(parent_item->modelType() == Constants::FitParameterType) { return parent_item->getItems(FitParameterItem::T_LINK).size(); diff --git a/GUI/coregui/Models/ModelPath.cpp b/GUI/coregui/Models/ModelPath.cpp index 5efce991c7fc1accc00a4da80d977fb53e82344c..fca13b91ea12eb2c289aa0a7ade9022ee3d4766f 100644 --- a/GUI/coregui/Models/ModelPath.cpp +++ b/GUI/coregui/Models/ModelPath.cpp @@ -48,7 +48,7 @@ QModelIndex ModelPath::getIndexFromPath(const SessionModel* model, const QString t = t->getItem(JobItem::T_INSTRUMENT); continue; } - for (int j = 0; j < t->rowCount(); j++) { + for (int j = 0; j < t->numberOfChildren(); j++) { if (t->childAt(j)->itemName() == parts[i]) { t = t->childAt(j); break; diff --git a/GUI/coregui/Models/ParameterTreeUtils.cpp b/GUI/coregui/Models/ParameterTreeUtils.cpp index 2c848233454b8291252757441397aef9996350b7..7ca29686ffe527780b70c50c2b0d3000c43afa14 100644 --- a/GUI/coregui/Models/ParameterTreeUtils.cpp +++ b/GUI/coregui/Models/ParameterTreeUtils.cpp @@ -271,7 +271,7 @@ void handleItem(SessionItem* tree, const SessionItem* source) } else if (child->modelType() == Constants::GroupItemType) { SessionItem* currentItem = dynamic_cast<GroupItem*>(child)->currentItem(); - if (currentItem && currentItem->rowCount() > 0) { + if (currentItem && currentItem->numberOfChildren() > 0) { SessionItem* branch = tree->model()->insertNewItem( Constants::ParameterLabelType, tree->index()); handleItem(branch, currentItem); diff --git a/GUI/coregui/Models/SessionItem.cpp b/GUI/coregui/Models/SessionItem.cpp index e458662d4ae1ec3073d33d959816a1b639795c4f..a842bed5e2ddcc622efedcf7de9b76e41985b826 100644 --- a/GUI/coregui/Models/SessionItem.cpp +++ b/GUI/coregui/Models/SessionItem.cpp @@ -37,7 +37,6 @@ public: const QString SessionItem::P_NAME = "Name"; //! Constructs new item with given model type. The type must be defined. - SessionItem::SessionItem(const QString& modelType) : m_parent(nullptr) , m_model(nullptr) @@ -51,7 +50,6 @@ SessionItem::SessionItem(const QString& modelType) } //! Destructor deletes all its children and request parent to delete this item. - SessionItem::~SessionItem() { if(m_mapper) @@ -72,52 +70,19 @@ SessionItem::~SessionItem() delete translator; } -//! internal -void SessionItem::childDeleted(SessionItem* child) -{ - int index = rowOfChild(child); - Q_ASSERT(index != -1); - m_children.replace(index, nullptr); -} - -//! internal -void SessionItem::setParentAndModel(SessionItem* parent, SessionModel* model) -{ - setModel(model); - m_parent = parent; -} - -//! internal -void SessionItem::setModel(SessionModel* model) -{ - m_model = model; - if (m_mapper) { - m_mapper->setItem(this); - } - // process children as well - for (auto& child : m_children) { - child->setModel(model); - } -} - - - //! Returns model of this item. - SessionModel* SessionItem::model() const { return m_model; } //! Returns parent of this item. - SessionItem* SessionItem::parent() const { return m_parent; } //! Returns model index of this item. - QModelIndex SessionItem::index() const { if (model()) { @@ -126,36 +91,25 @@ QModelIndex SessionItem::index() const return QModelIndex(); } -//! Returns true when item has children. - -bool SessionItem::hasChildren() const -{ - return !m_children.isEmpty(); -} - //! Returns total number of children. - -int SessionItem::rowCount() const +int SessionItem::numberOfChildren() const { - return m_children.count(); + return m_children.size(); } //! Returns vector of all children. - QVector<SessionItem*> SessionItem::children() const { return m_children; } //! Returns the child at the given row. - SessionItem* SessionItem::childAt(int row) const { return m_children.value(row, nullptr); } //! Returns row index of given child. - int SessionItem::rowOfChild(SessionItem* child) const { return m_children.indexOf(child); @@ -171,7 +125,6 @@ SessionItem* SessionItem::getChildByName(const QString& name) const } //! Returns the first child of the given type. - SessionItem* SessionItem::getChildOfType(const QString& type) const { for (auto child : m_children) { @@ -181,7 +134,6 @@ SessionItem* SessionItem::getChildOfType(const QString& type) const } //! Returns a vector of all children of the given type. - QVector<SessionItem*> SessionItem::getChildrenOfType(const QString& model_type) const { QVector<SessionItem*> result; @@ -193,7 +145,6 @@ QVector<SessionItem*> SessionItem::getChildrenOfType(const QString& model_type) } //! Removes row from item and returns the item. - SessionItem* SessionItem::takeRow(int row) { SessionItem* item = childAt(row); @@ -204,7 +155,6 @@ SessionItem* SessionItem::takeRow(int row) //! Add new tag to this item with given name, min, max and types. //! max = -1 -> unlimited, modelTypes empty -> all types allowed - bool SessionItem::registerTag(const QString& name, int min, int max, QStringList modelTypes) { if (min < 0 || (min > max && max >= 0)) @@ -216,14 +166,12 @@ bool SessionItem::registerTag(const QString& name, int min, int max, QStringList } //! Returns true if tag is available. - bool SessionItem::isTag(const QString& name) const { return getTagInfo(name).isValid(); } //! Returns the tag name of given item when existing. - QString SessionItem::tagFromItem(const SessionItem* item) const { int index = m_children.indexOf(const_cast<SessionItem*>(item)); @@ -242,7 +190,6 @@ QString SessionItem::tagFromItem(const SessionItem* item) const } //! Returns corresponding tag info. - SessionTagInfo SessionItem::getTagInfo(const QString& tag) const { QString tagName = tag.isEmpty() ? defaultTag() : tag; @@ -256,37 +203,18 @@ SessionTagInfo SessionItem::getTagInfo(const QString& tag) const } //! Returns true if model type can be added to default tag. - bool SessionItem::acceptsAsDefaultItem(const QString& item_name) const { return getTagInfo(defaultTag()).modelTypes.contains(item_name); } //! Returns vector of acceptable default tag types. - QVector<QString> SessionItem::acceptableDefaultItemTypes() const { return getTagInfo(defaultTag()).modelTypes.toVector(); } -//! internal -int SessionItem::tagStartIndex(const QString& name) const -{ - int index = 0; - QVector<SessionTagInfo>::const_iterator it; - for (it = m_tags.constBegin(); it != m_tags.constEnd(); ++it) { - SessionTagInfo tagInfo = *it; - if (tagInfo.name == name) { - return index; - } else { - index += tagInfo.childCount; - } - } - return -1; -} - //! Returns item in given row of given tag. - SessionItem* SessionItem::getItem(const QString& tag, int row) const { const QString tagName = tag.isEmpty() ? defaultTag() : tag; @@ -303,7 +231,6 @@ SessionItem* SessionItem::getItem(const QString& tag, int row) const } //! Returns vector of all items of given tag. - QVector<SessionItem*> SessionItem::getItems(const QString& tag) const { const QString tagName = tag.isEmpty() ? defaultTag() : tag; @@ -316,7 +243,6 @@ QVector<SessionItem*> SessionItem::getItems(const QString& tag) const } //! Insert item into given tag into given row. - bool SessionItem::insertItem(int row, SessionItem* item, const QString& tag) { if (!item) @@ -355,14 +281,12 @@ bool SessionItem::insertItem(int row, SessionItem* item, const QString& tag) break; } } - if (m_model) m_model->endInsertRows(); return true; } //! Remove item from given row from given tag. - SessionItem* SessionItem::takeItem(int row, const QString& tag) { const QString tagName = tag.isEmpty() ? defaultTag() : tag; @@ -387,14 +311,12 @@ SessionItem* SessionItem::takeItem(int row, const QString& tag) break; } } - if (m_model) m_model->endRemoveRows(); return result; } //! Add new property item and register new tag. - SessionItem* SessionItem::addProperty(const QString& name, const QVariant& variant) { if (isTag(name)) @@ -413,7 +335,6 @@ SessionItem* SessionItem::addProperty(const QString& name, const QVariant& varia } //! Directly access value of item under given tag. - QVariant SessionItem::getItemValue(const QString& tag) const { if (!isTag(tag)) @@ -425,7 +346,6 @@ QVariant SessionItem::getItemValue(const QString& tag) const } //! Directly set value of item under given tag. - void SessionItem::setItemValue(const QString& tag, const QVariant& variant) { if (!isTag(tag)) @@ -435,7 +355,6 @@ void SessionItem::setItemValue(const QString& tag, const QVariant& variant) } //! Creates new group item and register new tag, returns GroupItem. - SessionItem* SessionItem::addGroupProperty(const QString& groupName, const QString& groupType) { SessionItem* result(0); @@ -450,38 +369,32 @@ SessionItem* SessionItem::addGroupProperty(const QString& groupName, const QStri registerTag(groupName, 1, 1, QStringList() << Constants::GroupItemType); result = groupItem; } - else { // create single item registerTag(groupName, 1, 1, QStringList() << groupType); result = ItemFactory::createItem(groupType); } - Q_ASSERT(result); result->setDisplayName(groupName); if(!insertItem(0, result, groupName)) { throw GUIHelpers::Error("SessionItem::addGroupProperty -> Error. Can't insert group item"); } - return result; } -//! Access subitem of group item. - -SessionItem* SessionItem::getGroupItem(const QString& groupName) const -{ - return item<GroupItem>(groupName).currentItem(); -} - //! Set the current type of group item. - SessionItem* SessionItem::setGroupProperty(const QString& groupName, const QString& value) const { return item<GroupItem>(groupName).setCurrentType(value); } -//! Returns corresponding variant under given role, invalid variant when role is not present. +//! Access subitem of group item. +SessionItem* SessionItem::getGroupItem(const QString& groupName) const +{ + return item<GroupItem>(groupName).currentItem(); +} +//! Returns corresponding variant under given role, invalid variant when role is not present. QVariant SessionItem::data(int role) const { role = (role == Qt::EditRole) ? Qt::DisplayRole : role; @@ -494,7 +407,6 @@ QVariant SessionItem::data(int role) const } //! Set variant to role, create role if not present yet. - bool SessionItem::setData(int role, const QVariant& value) { role = (role == Qt::EditRole) ? Qt::DisplayRole : role; @@ -521,7 +433,6 @@ bool SessionItem::setData(int role, const QVariant& value) } //! Returns vector of all present roles. - QVector<int> SessionItem::getRoles() const { QVector<int> result; @@ -533,7 +444,6 @@ QVector<int> SessionItem::getRoles() const } //! Notify model about data changes. - void SessionItem::emitDataChanged(int role) { if (m_model) { @@ -542,44 +452,19 @@ void SessionItem::emitDataChanged(int role) } } -//! internal -int SessionItem::flags() const -{ - QVariant flags = data(SessionModel::FlagRole); - if (!flags.isValid()) - return SessionModel::VISIBLE | SessionModel::EDITABLE | SessionModel::ENABLED; - - return flags.toInt(); -} - -//! internal -void SessionItem::changeFlags(bool enabled, int flag) -{ - int flags = this->flags(); - if (enabled) { - flags |= flag; - } else { - flags &= ~flag; - } - setData(SessionModel::FlagRole, flags); -} - //! Get model type - QString SessionItem::modelType() const { return data(SessionModel::ModelTypeRole).toString(); } //! Get value - QVariant SessionItem::value() const { return data(Qt::DisplayRole); } //! Set value, ensure that variant types match. - bool SessionItem::setValue(QVariant value) { QVariant previous_variant = this->value(); @@ -588,7 +473,6 @@ bool SessionItem::setValue(QVariant value) throw GUIHelpers::Error("ParameterizedItem::setRegisteredProperty() -> Error. Type of " "previous and new variant does not coincide."); } - // TODO If QVariant contains ComboProperty, the comparison will be always true. if(previous_variant == value) return true; @@ -597,21 +481,18 @@ bool SessionItem::setValue(QVariant value) } //! Get default tag - QString SessionItem::defaultTag() const { return data(SessionModel::DefaultTagRole).toString(); } //! Set default tag - void SessionItem::setDefaultTag(const QString& tag) { setData(SessionModel::DefaultTagRole, tag); } //! Get display name of item, append index if ambigue. - QString SessionItem::displayName() const { QString result = data(SessionModel::DisplayNameRole).toString(); @@ -632,42 +513,17 @@ QString SessionItem::displayName() const if(index >= 0) { return result + QString::number(index); } - } - return result; } //! Set display name - void SessionItem::setDisplayName(const QString& display_name) { setData(SessionModel::DisplayNameRole, display_name); } -//! internal -int SessionItem::getCopyNumberOfChild(const SessionItem* item) const -{ - if (!item) return -1; - int result = -1; - int count = 0; - QString model_type = item->modelType(); - // check child items: - for (auto p_child_item : m_children) { - QString child_type = p_child_item->modelType(); - if (p_child_item == item) { - result = count; - } - if (child_type == model_type && !p_child_item->isTag(P_NAME)) { - ++count; - } - } - if (count > 1) return result; - return -1; -} - //! Get item name, return display name if no name is set. - QString SessionItem::itemName() const { if (isTag(P_NAME)) { @@ -678,7 +534,6 @@ QString SessionItem::itemName() const } //! Set item name, add property if necessary. - void SessionItem::setItemName(const QString& name) { if (isTag(P_NAME)) { @@ -695,7 +550,6 @@ void SessionItem::setItemName(const QString& name) } } - // access flags void SessionItem::setVisible(bool enabled) @@ -728,7 +582,6 @@ bool SessionItem::isEditable() const return flags() & SessionModel::EDITABLE; } - // more roles RealLimits SessionItem::limits() const @@ -765,14 +618,12 @@ SessionItem& SessionItem::setToolTip(const QString& tooltip) } //! Returns label of item shown in property editor. - QString SessionItem::itemLabel() const { return QString(""); } //! Returns the current model mapper of this item. Creates new one if necessary. - ModelMapper* SessionItem::mapper() { if (!m_mapper) { @@ -795,3 +646,90 @@ void SessionItem::addTranslator(const IPathTranslator& translator) { m_translators.push_back(translator.clone()); } + +//! internal +void SessionItem::childDeleted(SessionItem* child) +{ + int index = rowOfChild(child); + Q_ASSERT(index != -1); + m_children.replace(index, nullptr); +} + +//! internal +void SessionItem::setParentAndModel(SessionItem* parent, SessionModel* model) +{ + setModel(model); + m_parent = parent; +} + +//! internal +void SessionItem::setModel(SessionModel* model) +{ + m_model = model; + if (m_mapper) { + m_mapper->setItem(this); + } + // process children as well + for (auto& child : m_children) { + child->setModel(model); + } +} + +//! internal +int SessionItem::tagStartIndex(const QString& name) const +{ + int index = 0; + QVector<SessionTagInfo>::const_iterator it; + for (it = m_tags.constBegin(); it != m_tags.constEnd(); ++it) { + SessionTagInfo tagInfo = *it; + if (tagInfo.name == name) { + return index; + } else { + index += tagInfo.childCount; + } + } + return -1; +} + +//! internal +int SessionItem::flags() const +{ + QVariant flags = data(SessionModel::FlagRole); + if (!flags.isValid()) + return SessionModel::VISIBLE | SessionModel::EDITABLE | SessionModel::ENABLED; + + return flags.toInt(); +} + +//! internal +void SessionItem::changeFlags(bool enabled, int flag) +{ + int flags = this->flags(); + if (enabled) { + flags |= flag; + } else { + flags &= ~flag; + } + setData(SessionModel::FlagRole, flags); +} + +//! internal +int SessionItem::getCopyNumberOfChild(const SessionItem* item) const +{ + if (!item) return -1; + int result = -1; + int count = 0; + QString model_type = item->modelType(); + // check child items: + for (auto p_child_item : m_children) { + QString child_type = p_child_item->modelType(); + if (p_child_item == item) { + result = count; + } + if (child_type == model_type && !p_child_item->isTag(P_NAME)) { + ++count; + } + } + if (count > 1) return result; + return -1; +} diff --git a/GUI/coregui/Models/SessionItem.h b/GUI/coregui/Models/SessionItem.h index 8900a6a62973517fce54eb3555daab5a3d928546..7d87a4dcffd7171b7b10263f4a5e473bc1338c44 100644 --- a/GUI/coregui/Models/SessionItem.h +++ b/GUI/coregui/Models/SessionItem.h @@ -58,8 +58,7 @@ public: // these functions work without tags and operate on all children QModelIndex index() const; - bool hasChildren() const; - int rowCount() const; + int numberOfChildren() const; QVector<SessionItem*> children() const; SessionItem* childAt(int row) const; int rowOfChild(SessionItem* child) const; @@ -80,17 +79,17 @@ public: // access tagged items SessionItem* getItem(const QString& tag = QString(), int row = 0) const; template<typename T> T& item(const QString& tag) const; - QVector<SessionItem*> getItems(const QString& tag = QString()) const; bool insertItem(int row, SessionItem* item, const QString& tag = QString()); SessionItem* takeItem(int row, const QString& tag); - // convenience functions for properties and groups + // convenience functions for properties SessionItem* addProperty(const QString& name, const QVariant& variant); QVariant getItemValue(const QString& tag) const; void setItemValue(const QString& tag, const QVariant& variant); - SessionItem* addGroupProperty(const QString& groupName, const QString& groupType); + // convenience functions for groups + SessionItem* addGroupProperty(const QString& groupName, const QString& groupType); SessionItem* setGroupProperty(const QString& name, const QString& value) const; SessionItem* getGroupItem(const QString& groupName) const; template<typename T> T& groupItem(const QString& groupName) const; diff --git a/GUI/coregui/Models/SessionItemUtils.cpp b/GUI/coregui/Models/SessionItemUtils.cpp index 95baba76496e73c28c5a8a6ea92d6a8f741a75a4..a539d63da99678c7fc4ebc955d74ff9ebe4dfaf3 100644 --- a/GUI/coregui/Models/SessionItemUtils.cpp +++ b/GUI/coregui/Models/SessionItemUtils.cpp @@ -25,6 +25,11 @@ int SessionItemUtils::ParentRow(const SessionItem& item) return -1; } +bool SessionItemUtils::HasCHildren(const SessionItem& item) +{ + return item.numberOfChildren() > 0; +} + kvector_t SessionItemUtils::GetVectorItem(const SessionItem& item, const QString& name) { SessionItem* vectorItem = item.getItem(name); diff --git a/GUI/coregui/Models/SessionItemUtils.h b/GUI/coregui/Models/SessionItemUtils.h index 81ef1ce36168b683f5bc19073381bbe87dbfb19b..f0fbd7941e07d040271bb54faedcb11d34140f9c 100644 --- a/GUI/coregui/Models/SessionItemUtils.h +++ b/GUI/coregui/Models/SessionItemUtils.h @@ -28,6 +28,9 @@ namespace SessionItemUtils //! Returns the index of the given item within its parent. Returns -1 when no parent is set. BA_CORE_API_ int ParentRow(const SessionItem& item); +//! Returns true when the item has child items +BA_CORE_API_ bool HasCHildren(const SessionItem& item); + //! Returns a VectorType group property's value as a kvector_t BA_CORE_API_ kvector_t GetVectorItem(const SessionItem& item, const QString& name); diff --git a/GUI/coregui/Models/SessionModel.cpp b/GUI/coregui/Models/SessionModel.cpp index dc43abb45e7b309103eff375e18758b6d7c1c68d..29315f26be55b5ec7ecbe7c427a6409d1e60ed0c 100644 --- a/GUI/coregui/Models/SessionModel.cpp +++ b/GUI/coregui/Models/SessionModel.cpp @@ -105,7 +105,7 @@ int SessionModel::rowCount(const QModelIndex& parent) const if (parent.isValid() && parent.column() != 0) return 0; SessionItem* parent_item = itemForIndex(parent); - return parent_item ? parent_item->rowCount() : 0; + return parent_item ? parent_item->numberOfChildren() : 0; } int SessionModel::columnCount(const QModelIndex& parent) const @@ -227,7 +227,7 @@ bool SessionModel::dropMimeData(const QMimeData* data, Qt::DropAction action, in QByteArray xml_data = qUncompress(data->data(SessionXML::ItemMimeType)); QXmlStreamReader reader(xml_data); if (row == -1) - row = item->rowCount(); + row = item->numberOfChildren(); beginInsertRows(parent, row, row); // this code block is currently not in use. The row parameter of the reader is removed //SessionReader::readItems(&reader, item, row); @@ -252,7 +252,7 @@ SessionItem* SessionModel::insertNewItem(QString model_type, const QModelIndex& SessionItem* parent_item = itemForIndex(parent); if (!parent_item) parent_item = m_root_item; - if (row > parent_item->rowCount()) + if (row > parent_item->numberOfChildren()) return nullptr; if (parent_item != m_root_item) { if (tag.isEmpty()) diff --git a/GUI/coregui/Views/ImportDataWidgets/RealDataSelectorActions.cpp b/GUI/coregui/Views/ImportDataWidgets/RealDataSelectorActions.cpp index b9e07e276be1724906a66c29be6c087d440b4e64..b875691d34fdc73de140a8b926d7c80ff2bb3b82 100644 --- a/GUI/coregui/Views/ImportDataWidgets/RealDataSelectorActions.cpp +++ b/GUI/coregui/Views/ImportDataWidgets/RealDataSelectorActions.cpp @@ -15,20 +15,23 @@ // ************************************************************************** // #include "RealDataSelectorActions.h" +#include "GUIHelpers.h" #include "ImportDataAssistant.h" -#include "RealDataItem.h" -#include "RealDataModel.h" -#include "OutputData.h" +#include "IntensityDataFunctions.h" #include "IntensityDataItem.h" #include "MaskItems.h" -#include "GUIHelpers.h" +#include "OutputData.h" #include "ProjectionItems.h" -#include "IntensityDataFunctions.h" +#include "RealDataItem.h" +#include "RealDataModel.h" +#include "SessionItemUtils.h" #include <QAction> #include <QApplication> #include <QItemSelectionModel> #include <QMenu> +using namespace SessionItemUtils; + namespace { bool openRotateWarningDialog(QWidget* parent) { const QString title("Rotate data"); @@ -46,11 +49,11 @@ bool rotationAffectsSetup(IntensityDataItem& intensityItem) { if (intensityItem.parent()->getItemValue(RealDataItem::P_INSTRUMENT_ID).toBool()) return true; - if (intensityItem.maskContainerItem() && intensityItem.maskContainerItem()->hasChildren()) + if (intensityItem.maskContainerItem() && HasCHildren(*intensityItem.maskContainerItem())) return true; - if (intensityItem.projectionContainerItem() && - intensityItem.projectionContainerItem()->hasChildren()) + if (intensityItem.projectionContainerItem() + && HasCHildren(*intensityItem.projectionContainerItem())) return true; return false; @@ -65,10 +68,10 @@ void resetSetup(IntensityDataItem& intensityItem) { data_parent->setItemValue(RealDataItem::P_INSTRUMENT_ID, QString()); if (auto maskContainer = intensityItem.maskContainerItem()) - maskContainer->model()->removeRows(0, maskContainer->rowCount(), maskContainer->index()); + maskContainer->model()->removeRows(0, maskContainer->numberOfChildren(), maskContainer->index()); if (auto projectionsContainer = intensityItem.projectionContainerItem()) - projectionsContainer->model()->removeRows(0, projectionsContainer->rowCount(), + projectionsContainer->model()->removeRows(0, projectionsContainer->numberOfChildren(), projectionsContainer->index()); } diff --git a/GUI/coregui/Views/MaskWidgets/MaskEditorActions.cpp b/GUI/coregui/Views/MaskWidgets/MaskEditorActions.cpp index 8d580aa7092cd2614893f6349846a7a3ad6de027..69ce32e0d46546202377bf5771e5a9623b4c2082 100644 --- a/GUI/coregui/Views/MaskWidgets/MaskEditorActions.cpp +++ b/GUI/coregui/Views/MaskWidgets/MaskEditorActions.cpp @@ -191,7 +191,7 @@ bool MaskEditorActions::isSendToBackPossible() const QModelIndexList indexes = m_selectionModel->selectedIndexes(); if (indexes.size() == 1) { SessionItem* item = m_maskModel->itemForIndex(indexes.front()); - if (indexes.front().row() != item->parent()->rowCount() - 1) + if (indexes.front().row() != item->parent()->numberOfChildren() - 1) result = true; } return result; diff --git a/GUI/coregui/Views/MaskWidgets/PolygonView.cpp b/GUI/coregui/Views/MaskWidgets/PolygonView.cpp index 3d9e57df20bf870e654f00714fb16c86948c6c2f..2380e7e6948e254f00df0ac5a8e3871e22413ecd 100644 --- a/GUI/coregui/Views/MaskWidgets/PolygonView.cpp +++ b/GUI/coregui/Views/MaskWidgets/PolygonView.cpp @@ -134,7 +134,7 @@ void PolygonView::update_polygon() m_block_on_point_update = true; - if (m_item->rowCount()) { + if (m_item->numberOfChildren()) { m_polygon.clear();