diff options
author | Thomas Hartmann <Thomas.Hartmann@nokia.com> | 2011-07-25 10:35:50 +0200 |
---|---|---|
committer | Thomas Hartmann <Thomas.Hartmann@nokia.com> | 2011-07-25 10:36:31 +0200 |
commit | 3aa8f94ed5c436654a5794020bda8ecc1862760a (patch) | |
tree | d0055523e9d83aa1479eed8409d6b5ec3b797e7e /src/plugins/qmldesigner/designercore/model/modelnodecontextmenu.cpp | |
parent | 94055458ad9ba26882dc50cc634096c3f53d70fd (diff) |
QmlDesigner.contextMenu: disable reset if properties are not defined
Reset Size is now disabled if the item(s) has no property "width" and "height".
The same for Reset Position and "x" and "y".
I added const QList<ModelNode> &selectedModelNodes = m_view->selectedModelNodes();
to clean up the code.
Task-number: QTCREATORBUG-5573
Change-Id: I7383e28a7b304bcfa27a5687e84d9f489dfc8a02
Reviewed-on: http://codereview.qt.nokia.com/2094
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@nokia.com>
Diffstat (limited to 'src/plugins/qmldesigner/designercore/model/modelnodecontextmenu.cpp')
-rw-r--r-- | src/plugins/qmldesigner/designercore/model/modelnodecontextmenu.cpp | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/src/plugins/qmldesigner/designercore/model/modelnodecontextmenu.cpp b/src/plugins/qmldesigner/designercore/model/modelnodecontextmenu.cpp index 6afda48068..279c9aae06 100644 --- a/src/plugins/qmldesigner/designercore/model/modelnodecontextmenu.cpp +++ b/src/plugins/qmldesigner/designercore/model/modelnodecontextmenu.cpp @@ -172,6 +172,15 @@ static inline void openInlineComponent(const ModelNode &node) } } +static inline bool modelNodesHaveProperty(const QList<ModelNode> &modelNodeList, const QString &propertyName) +{ + foreach (const ModelNode &modelNode, modelNodeList) + if (modelNode.hasProperty(propertyName)) + return true; + + return false; +} + ModelNodeContextMenu::ModelNodeContextMenu(QmlModelView *view) : m_view(view) { } @@ -183,9 +192,10 @@ void ModelNodeContextMenu::execute(const QPoint &pos, bool selectionMenuBool) bool singleSelected = false; bool selectionIsEmpty = m_view->selectedModelNodes().isEmpty(); ModelNode currentSingleNode; - if (m_view->selectedModelNodes().count()== 1) { + const QList<ModelNode> &selectedModelNodes = m_view->selectedModelNodes(); + if (selectedModelNodes.count()== 1) { singleSelected = true; - currentSingleNode = m_view->selectedModelNodes().first(); + currentSingleNode = selectedModelNodes.first(); } if (selectionMenuBool) { @@ -215,17 +225,23 @@ void ModelNodeContextMenu::execute(const QPoint &pos, bool selectionMenuBool) stackMenu->addAction(createModelNodeAction(tr("To Front"), stackMenu, QList<ModelNode>() << currentSingleNode, ModelNodeAction::ToFront, singleSelected)); stackMenu->addAction(createModelNodeAction(tr("To Back"), stackMenu, QList<ModelNode>() << currentSingleNode, ModelNodeAction::ToBack, singleSelected)); - stackMenu->addAction(createModelNodeAction(tr("Raise"), stackMenu, QList<ModelNode>() << m_view->selectedModelNodes(), ModelNodeAction::Raise)); - stackMenu->addAction(createModelNodeAction(tr("Lower"), stackMenu, QList<ModelNode>() << m_view->selectedModelNodes(), ModelNodeAction::Lower)); + stackMenu->addAction(createModelNodeAction(tr("Raise"), stackMenu, QList<ModelNode>() << selectedModelNodes, ModelNodeAction::Raise)); + stackMenu->addAction(createModelNodeAction(tr("Lower"), stackMenu, QList<ModelNode>() << selectedModelNodes, ModelNodeAction::Lower)); stackMenu->addSeparator(); - stackMenu->addAction(createModelNodeAction(tr("Reset z property"), stackMenu, QList<ModelNode>() << m_view->selectedModelNodes(), ModelNodeAction::ResetZ)); + stackMenu->addAction(createModelNodeAction(tr("Reset z property"), stackMenu, QList<ModelNode>() << selectedModelNodes, ModelNodeAction::ResetZ)); QMenu *editMenu = new QMenu(tr("Edit"), menu); menu->addMenu(editMenu); if (!selectionIsEmpty) { //editMenu->addAction(createModelNodeAction(tr("Change Id"), editMenu, QList<ModelNode>() << currentSingleNode, ModelNodeAction::SetId, singleSelected)); - editMenu->addAction(createModelNodeAction(tr("Reset Position"), editMenu, m_view->selectedModelNodes(), ModelNodeAction::ResetPosition)); - editMenu->addAction(createModelNodeAction(tr("Reset Size"), editMenu, m_view->selectedModelNodes(), ModelNodeAction::ResetSize)); + ModelNodeAction* action = createModelNodeAction(tr("Reset Position"), editMenu, selectedModelNodes, ModelNodeAction::ResetPosition); + if (!modelNodesHaveProperty(selectedModelNodes, QLatin1String("x")) && !modelNodesHaveProperty(selectedModelNodes, QLatin1String("y"))) + action->setDisabled(true); + editMenu->addAction(action); + action = createModelNodeAction(tr("Reset Size"), editMenu, selectedModelNodes, ModelNodeAction::ResetSize); + if (!modelNodesHaveProperty(selectedModelNodes, QLatin1String("width")) && !modelNodesHaveProperty(selectedModelNodes, QLatin1String("height"))) + action->setDisabled(true); + editMenu->addAction(action); editMenu->addAction(createModelNodeAction(tr("Visibility"), editMenu, QList<ModelNode>() << currentSingleNode, ModelNodeAction::ModelNodeVisibility, singleSelected)); } else { |