QmlDesigner: Use more secure friend declaration

The shorter form is not declaring any class implicitly. The class have
to be declared before. So you avoid the mistake of declaring a new class
instead of make one friend.

Change-Id: Ia035e2f5967c24cdb053ac8b91aa61bbbd5ea20d
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Marco Bubke
2021-04-20 11:03:01 +02:00
parent d66b410adb
commit 12762e5102
30 changed files with 86 additions and 72 deletions

View File

@@ -50,7 +50,7 @@ public:
virtual ~NodeDumperCreatorBase() {} virtual ~NodeDumperCreatorBase() {}
protected: protected:
virtual NodeDumper *instance(const QByteArrayList &, const ModelNode &) const = 0; virtual NodeDumper *instance(const QByteArrayList &, const ModelNode &) const = 0;
friend class QmlDesigner::Component; friend Component;
}; };
template<class T> template<class T>

View File

@@ -44,7 +44,7 @@ class GraphicsView : public QGraphicsView
{ {
Q_OBJECT Q_OBJECT
friend class Playhead; friend Playhead;
signals: signals:
void currentFrameChanged(int frame, bool notify); void currentFrameChanged(int frame, bool notify);

View File

@@ -40,7 +40,8 @@ class FormEditorView;
class QMLDESIGNERCORE_EXPORT AbstractFormEditorTool class QMLDESIGNERCORE_EXPORT AbstractFormEditorTool
{ {
friend class FormEditorView; friend FormEditorView;
public: public:
AbstractFormEditorTool(FormEditorView* view); AbstractFormEditorTool(FormEditorView* view);

View File

@@ -49,7 +49,8 @@ namespace Internal {
class QMLDESIGNERCORE_EXPORT FormEditorItem : public QGraphicsItem class QMLDESIGNERCORE_EXPORT FormEditorItem : public QGraphicsItem
{ {
friend class QmlDesigner::FormEditorScene; friend FormEditorScene;
public: public:
~FormEditorItem() override; ~FormEditorItem() override;
@@ -156,7 +157,8 @@ private: // variables
class FormEditorFlowItem : public FormEditorItem class FormEditorFlowItem : public FormEditorItem
{ {
friend class QmlDesigner::FormEditorScene; friend FormEditorScene;
public: public:
void synchronizeOtherProperty(const QByteArray &propertyName) override; void synchronizeOtherProperty(const QByteArray &propertyName) override;
void setDataModelPosition(const QPointF &position) override; void setDataModelPosition(const QPointF &position) override;
@@ -175,7 +177,8 @@ private:
class FormEditorFlowActionItem : public FormEditorItem class FormEditorFlowActionItem : public FormEditorItem
{ {
friend class QmlDesigner::FormEditorScene; friend FormEditorScene;
public: public:
void setDataModelPosition(const QPointF &position) override; void setDataModelPosition(const QPointF &position) override;
void setDataModelPositionInBaseState(const QPointF &position) override; void setDataModelPositionInBaseState(const QPointF &position) override;
@@ -194,7 +197,8 @@ private:
class FormEditorTransitionItem : public FormEditorItem class FormEditorTransitionItem : public FormEditorItem
{ {
friend class QmlDesigner::FormEditorScene; friend FormEditorScene;
public: public:
void synchronizeOtherProperty(const QByteArray &propertyName) override; void synchronizeOtherProperty(const QByteArray &propertyName) override;
void setDataModelPosition(const QPointF &position) override; void setDataModelPosition(const QPointF &position) override;
@@ -220,7 +224,7 @@ private:
class FormEditorFlowDecisionItem : FormEditorFlowItem class FormEditorFlowDecisionItem : FormEditorFlowItem
{ {
friend class QmlDesigner::FormEditorScene; friend FormEditorScene;
public: public:
void updateGeometry() override; void updateGeometry() override;
@@ -243,7 +247,7 @@ protected:
class FormEditorFlowWildcardItem : FormEditorFlowDecisionItem class FormEditorFlowWildcardItem : FormEditorFlowDecisionItem
{ {
friend class QmlDesigner::FormEditorScene; friend FormEditorScene;
public: public:
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override;

View File

@@ -47,8 +47,8 @@ class QMLDESIGNERCORE_EXPORT FormEditorScene : public QGraphicsScene
{ {
Q_OBJECT Q_OBJECT
friend class QmlDesigner::FormEditorItem; friend FormEditorItem;
friend class QmlDesigner::FormEditorView; friend FormEditorView;
public: public:

View File

@@ -37,7 +37,8 @@ class WeakResizeController;
class ResizeController class ResizeController
{ {
friend class WeakResizeController; friend WeakResizeController;
public: public:
ResizeController(); ResizeController();
ResizeController(LayerItem *layerItem, FormEditorItem *formEditorItem); ResizeController(LayerItem *layerItem, FormEditorItem *formEditorItem);
@@ -76,7 +77,8 @@ private: // variables
class WeakResizeController class WeakResizeController
{ {
friend class ResizeController; friend ResizeController;
public: public:
WeakResizeController(); WeakResizeController();
WeakResizeController(const WeakResizeController &resizeController); WeakResizeController(const WeakResizeController &resizeController);

View File

@@ -37,7 +37,8 @@ class WeakRotationController;
class RotationController class RotationController
{ {
friend class WeakRotationController; friend WeakRotationController;
public: public:
RotationController(); RotationController();
RotationController(LayerItem *layerItem, FormEditorItem *formEditorItem); RotationController(LayerItem *layerItem, FormEditorItem *formEditorItem);
@@ -74,7 +75,8 @@ private:
class WeakRotationController class WeakRotationController
{ {
friend class RotationController; friend RotationController;
public: public:
WeakRotationController(); WeakRotationController();
WeakRotationController(const WeakRotationController &rotationController); WeakRotationController(const WeakRotationController &rotationController);

View File

@@ -133,8 +133,6 @@ private:
QHash<QUrl, QHash<QString, bool>> m_expandMap; QHash<QUrl, QHash<QString, bool>> m_expandMap;
NavigatorModelInterface *m_currentModelInterface = nullptr; NavigatorModelInterface *m_currentModelInterface = nullptr;
friend class TestNavigator;
}; };
} }

View File

@@ -65,7 +65,8 @@ private:
class PathItem : public QGraphicsObject class PathItem : public QGraphicsObject
{ {
Q_OBJECT Q_OBJECT
friend class PathUpdateDisabler; friend PathUpdateDisabler;
public: public:
enum enum
{ {

View File

@@ -61,8 +61,8 @@ namespace Internal {
class QMLDESIGNERCORE_EXPORT AbstractProperty class QMLDESIGNERCORE_EXPORT AbstractProperty
{ {
friend class QmlDesigner::ModelNode; friend ModelNode;
friend class QmlDesigner::Internal::ModelPrivate; friend Internal::ModelPrivate;
friend QMLDESIGNERCORE_EXPORT bool operator ==(const AbstractProperty &property1, const AbstractProperty &property2); friend QMLDESIGNERCORE_EXPORT bool operator ==(const AbstractProperty &property1, const AbstractProperty &property2);
friend QMLDESIGNERCORE_EXPORT bool operator !=(const AbstractProperty &property1, const AbstractProperty &property2); friend QMLDESIGNERCORE_EXPORT bool operator !=(const AbstractProperty &property1, const AbstractProperty &property2);

View File

@@ -32,9 +32,9 @@ namespace QmlDesigner {
class QMLDESIGNERCORE_EXPORT BindingProperty : public QmlDesigner::AbstractProperty class QMLDESIGNERCORE_EXPORT BindingProperty : public QmlDesigner::AbstractProperty
{ {
friend class QmlDesigner::ModelNode; friend ModelNode;
friend class QmlDesigner::Internal::ModelPrivate; friend Internal::ModelPrivate;
friend class QmlDesigner::AbstractProperty; friend AbstractProperty;
public: public:
void setExpression(const QString &expression); void setExpression(const QString &expression);

View File

@@ -48,8 +48,6 @@ QMLDESIGNERCORE_EXPORT QDebug operator<<(QDebug debug, const ItemLibraryEntry &i
class QMLDESIGNERCORE_EXPORT ItemLibraryEntry class QMLDESIGNERCORE_EXPORT ItemLibraryEntry
{ {
//friend class QmlDesigner::MetaInfo;
//friend class QmlDesigner::Internal::MetaInfoParser;
friend QMLDESIGNERCORE_EXPORT QDataStream& operator<<(QDataStream& stream, const ItemLibraryEntry &itemLibraryEntry); friend QMLDESIGNERCORE_EXPORT QDataStream& operator<<(QDataStream& stream, const ItemLibraryEntry &itemLibraryEntry);
friend QMLDESIGNERCORE_EXPORT QDataStream& operator>>(QDataStream& stream, ItemLibraryEntry &itemLibraryEntry); friend QMLDESIGNERCORE_EXPORT QDataStream& operator>>(QDataStream& stream, ItemLibraryEntry &itemLibraryEntry);
friend QMLDESIGNERCORE_EXPORT QDebug operator<<(QDebug debug, const ItemLibraryEntry &itemLibraryEntry); friend QMLDESIGNERCORE_EXPORT QDebug operator<<(QDebug debug, const ItemLibraryEntry &itemLibraryEntry);

View File

@@ -52,10 +52,10 @@ QMLDESIGNERCORE_EXPORT bool operator!=(const MetaInfo &first, const MetaInfo &se
class QMLDESIGNERCORE_EXPORT MetaInfo class QMLDESIGNERCORE_EXPORT MetaInfo
{ {
friend class QmlDesigner::Internal::MetaInfoPrivate; friend Internal::MetaInfoPrivate;
friend class QmlDesigner::Internal::ModelPrivate; friend Internal::ModelPrivate;
friend class QmlDesigner::Internal::MetaInfoReader; friend Internal::MetaInfoReader;
friend class QmlDesigner::Internal::SubComponentManagerPrivate; friend Internal::SubComponentManagerPrivate;
friend QMLDESIGNERCORE_EXPORT bool operator==(const MetaInfo &, const MetaInfo &); friend QMLDESIGNERCORE_EXPORT bool operator==(const MetaInfo &, const MetaInfo &);
public: public:

View File

@@ -64,12 +64,12 @@ using PropertyListType = QList<QPair<PropertyName, QVariant> >;
class QMLDESIGNERCORE_EXPORT Model : public QObject class QMLDESIGNERCORE_EXPORT Model : public QObject
{ {
friend class QmlDesigner::ModelNode; friend ModelNode;
friend class QmlDesigner::AbstractProperty; friend AbstractProperty;
friend class QmlDesigner::AbstractView; friend AbstractView;
friend class Internal::ModelPrivate; friend Internal::ModelPrivate;
friend class Internal::WriteLocker; friend Internal::WriteLocker;
friend class QmlDesigner::Internal::NodeMetaInfoPrivate; friend Internal::NodeMetaInfoPrivate;
Q_OBJECT Q_OBJECT

View File

@@ -75,12 +75,12 @@ class QMLDESIGNERCORE_EXPORT ModelNode
friend QMLDESIGNERCORE_EXPORT QDebug operator<<(QDebug debug, const ModelNode &modelNode); friend QMLDESIGNERCORE_EXPORT QDebug operator<<(QDebug debug, const ModelNode &modelNode);
friend QMLDESIGNERCORE_EXPORT bool operator <(const ModelNode &firstNode, const ModelNode &secondNode); friend QMLDESIGNERCORE_EXPORT bool operator <(const ModelNode &firstNode, const ModelNode &secondNode);
friend QMLDESIGNERCORE_EXPORT QList<Internal::InternalNodePointer> toInternalNodeList(const QList<ModelNode> &nodeList); friend QMLDESIGNERCORE_EXPORT QList<Internal::InternalNodePointer> toInternalNodeList(const QList<ModelNode> &nodeList);
friend class QmlDesigner::Model; friend Model;
friend class QmlDesigner::AbstractView; friend AbstractView;
friend class QmlDesigner::NodeListProperty; friend NodeListProperty;
friend class QmlDesigner::Internal::ModelPrivate; friend Internal::ModelPrivate;
friend class QmlDesigner::NodeAbstractProperty; friend NodeAbstractProperty;
friend class QmlDesigner::NodeProperty; friend NodeProperty;
public: public:
enum NodeSourceType { enum NodeSourceType {

View File

@@ -36,9 +36,9 @@ namespace Internal {
class QMLDESIGNERCORE_EXPORT NodeAbstractProperty : public AbstractProperty class QMLDESIGNERCORE_EXPORT NodeAbstractProperty : public AbstractProperty
{ {
friend class QmlDesigner::ModelNode; friend ModelNode;
friend class QmlDesigner::Internal::ModelPrivate; friend Internal::ModelPrivate;
friend class QmlDesigner::AbstractProperty; friend AbstractProperty;
friend QMLDESIGNERCORE_EXPORT bool operator ==(const NodeAbstractProperty &property1, const NodeAbstractProperty &property2); friend QMLDESIGNERCORE_EXPORT bool operator ==(const NodeAbstractProperty &property1, const NodeAbstractProperty &property2);
friend QMLDESIGNERCORE_EXPORT bool operator !=(const NodeAbstractProperty &property1, const NodeAbstractProperty &property2); friend QMLDESIGNERCORE_EXPORT bool operator !=(const NodeAbstractProperty &property1, const NodeAbstractProperty &property2);

View File

@@ -42,7 +42,8 @@ class ProxyNodeInstanceData;
class NodeInstance class NodeInstance
{ {
friend class NodeInstanceView; friend NodeInstanceView;
public: public:
static NodeInstance create(const ModelNode &node); static NodeInstance create(const ModelNode &node);
NodeInstance(); NodeInstance();

View File

@@ -73,7 +73,7 @@ class QMLDESIGNERCORE_EXPORT NodeInstanceView : public AbstractView, public Node
{ {
Q_OBJECT Q_OBJECT
friend class NodeInstance; friend NodeInstance;
public: public:
using Pointer = QWeakPointer<NodeInstanceView>; using Pointer = QWeakPointer<NodeInstanceView>;

View File

@@ -35,8 +35,6 @@
namespace QmlDesigner { namespace QmlDesigner {
class NodeListProperty;
namespace Internal { namespace Internal {
class ModelPrivate; class ModelPrivate;
class InternalNodeListProperty; class InternalNodeListProperty;
@@ -44,7 +42,7 @@ using InternalNodeListPropertyPointer = QSharedPointer<InternalNodeListProperty>
class NodeListPropertyIterator class NodeListPropertyIterator
{ {
friend class QmlDesigner::NodeListProperty; friend NodeListProperty;
public: public:
using iterator_category = std::random_access_iterator_tag; using iterator_category = std::random_access_iterator_tag;
@@ -177,9 +175,10 @@ private:
class QMLDESIGNERCORE_EXPORT NodeListProperty : public NodeAbstractProperty class QMLDESIGNERCORE_EXPORT NodeListProperty : public NodeAbstractProperty
{ {
friend class QmlDesigner::ModelNode; friend ModelNode;
friend class QmlDesigner::AbstractProperty; friend AbstractProperty;
friend class QmlDesigner::Internal::ModelPrivate; friend Internal::ModelPrivate;
public: public:
using value_type = ModelNode; using value_type = ModelNode;
using iterator = Internal::NodeListPropertyIterator; using iterator = Internal::NodeListPropertyIterator;

View File

@@ -34,9 +34,9 @@ namespace Internal { class ModelPrivate; }
class QMLDESIGNERCORE_EXPORT NodeProperty : public NodeAbstractProperty class QMLDESIGNERCORE_EXPORT NodeProperty : public NodeAbstractProperty
{ {
friend class QmlDesigner::ModelNode; friend ModelNode;
friend class QmlDesigner::Internal::ModelPrivate; friend Internal::ModelPrivate;
friend class QmlDesigner::AbstractProperty; friend AbstractProperty;
public: public:
void setModelNode(const ModelNode &modelNode); void setModelNode(const ModelNode &modelNode);

View File

@@ -32,9 +32,11 @@
namespace QmlDesigner { namespace QmlDesigner {
class StatesEditorView;
class QMLDESIGNERCORE_EXPORT QmlConnections : public QmlModelNodeFacade class QMLDESIGNERCORE_EXPORT QmlConnections : public QmlModelNodeFacade
{ {
friend class StatesEditorView; friend StatesEditorView;
public: public:
QmlConnections(); QmlConnections();

View File

@@ -44,7 +44,8 @@ class ItemLibraryEntry;
class QMLDESIGNERCORE_EXPORT QmlItemNode : public QmlVisualNode class QMLDESIGNERCORE_EXPORT QmlItemNode : public QmlVisualNode
{ {
friend class QmlAnchors; friend QmlAnchors;
public: public:
QmlItemNode() : QmlVisualNode() {} QmlItemNode() : QmlVisualNode() {}
QmlItemNode(const ModelNode &modelNode) : QmlVisualNode(modelNode) {} QmlItemNode(const ModelNode &modelNode) : QmlVisualNode(modelNode) {}

View File

@@ -42,8 +42,9 @@ class QmlVisualNode;
class QMLDESIGNERCORE_EXPORT QmlObjectNode : public QmlModelNodeFacade class QMLDESIGNERCORE_EXPORT QmlObjectNode : public QmlModelNodeFacade
{ {
friend class QmlItemNode; friend QmlItemNode;
friend class MoveManipulator; friend MoveManipulator;
public: public:
QmlObjectNode(); QmlObjectNode();
QmlObjectNode(const ModelNode &modelNode); QmlObjectNode(const ModelNode &modelNode);

View File

@@ -36,10 +36,11 @@ class QmlObjectNode;
class QmlModelStateGroup; class QmlModelStateGroup;
class Annotation; class Annotation;
class AnnotationEditor; class AnnotationEditor;
class StatesEditorView;
class QMLDESIGNERCORE_EXPORT QmlModelState : public QmlModelNodeFacade class QMLDESIGNERCORE_EXPORT QmlModelState : public QmlModelNodeFacade
{ {
friend class StatesEditorView; friend StatesEditorView;
public: public:
QmlModelState(); QmlModelState();

View File

@@ -32,9 +32,9 @@ namespace QmlDesigner {
class QMLDESIGNERCORE_EXPORT SignalHandlerProperty : public QmlDesigner::AbstractProperty class QMLDESIGNERCORE_EXPORT SignalHandlerProperty : public QmlDesigner::AbstractProperty
{ {
friend class QmlDesigner::ModelNode; friend ModelNode;
friend class QmlDesigner::Internal::ModelPrivate; friend Internal::ModelPrivate;
friend class QmlDesigner::AbstractProperty; friend AbstractProperty;
public: public:
void setSource(const QString &source); void setSource(const QString &source);

View File

@@ -42,9 +42,9 @@ namespace Internal { class ModelPrivate; }
class QMLDESIGNERCORE_EXPORT VariantProperty : public AbstractProperty class QMLDESIGNERCORE_EXPORT VariantProperty : public AbstractProperty
{ {
friend class QmlDesigner::ModelNode; friend ModelNode;
friend class QmlDesigner::Internal::ModelPrivate; friend Internal::ModelPrivate;
friend class QmlDesigner::AbstractProperty; friend AbstractProperty;
public: public:
void setValue(const QVariant &value); void setValue(const QVariant &value);

View File

@@ -48,13 +48,15 @@ namespace QmlDesigner {
class NodeInstanceClientInterface; class NodeInstanceClientInterface;
class NodeInstanceView; class NodeInstanceView;
class NodeInstanceClientProxy; class NodeInstanceClientProxy;
class BaseConnectionManager;
class ConnectionManagerInterface; class ConnectionManagerInterface;
class NodeInstanceServerProxy : public NodeInstanceServerInterface class NodeInstanceServerProxy : public NodeInstanceServerInterface
{ {
friend class BaseConnectionManager;
Q_OBJECT Q_OBJECT
friend BaseConnectionManager;
public: public:
explicit NodeInstanceServerProxy(NodeInstanceView *nodeInstanceView, explicit NodeInstanceServerProxy(NodeInstanceView *nodeInstanceView,
ProjectExplorer::Target *target, ProjectExplorer::Target *target,

View File

@@ -52,7 +52,8 @@ using InternalPropertyPointer = QSharedPointer<InternalProperty>;
class InternalNode class InternalNode
{ {
friend class InternalProperty; friend InternalProperty;
public: public:
using Pointer = QSharedPointer<InternalNode>; using Pointer = QSharedPointer<InternalNode>;
using WeakPointer = QWeakPointer<InternalNode>; using WeakPointer = QWeakPointer<InternalNode>;

View File

@@ -33,7 +33,7 @@ namespace Internal {
class InternalNodeAbstractProperty : public InternalProperty class InternalNodeAbstractProperty : public InternalProperty
{ {
friend class InternalNode; friend InternalNode;
public: public:
using Pointer = QSharedPointer<InternalNodeAbstractProperty>; using Pointer = QSharedPointer<InternalNodeAbstractProperty>;

View File

@@ -83,9 +83,9 @@ class ModelPrivate : public QObject {
Q_OBJECT Q_OBJECT
Q_DISABLE_COPY(ModelPrivate) Q_DISABLE_COPY(ModelPrivate)
friend class QmlDesigner::Model; friend Model;
friend class QmlDesigner::Internal::WriteLocker; friend Internal::WriteLocker;
friend class QmlDesigner::Internal::NodeMetaInfoPrivate; friend Internal::NodeMetaInfoPrivate;
public: public:
ModelPrivate(Model *model); ModelPrivate(Model *model);