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() {}
protected:
virtual NodeDumper *instance(const QByteArrayList &, const ModelNode &) const = 0;
friend class QmlDesigner::Component;
friend Component;
};
template<class T>

View File

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

View File

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

View File

@@ -49,7 +49,8 @@ namespace Internal {
class QMLDESIGNERCORE_EXPORT FormEditorItem : public QGraphicsItem
{
friend class QmlDesigner::FormEditorScene;
friend FormEditorScene;
public:
~FormEditorItem() override;
@@ -156,7 +157,8 @@ private: // variables
class FormEditorFlowItem : public FormEditorItem
{
friend class QmlDesigner::FormEditorScene;
friend FormEditorScene;
public:
void synchronizeOtherProperty(const QByteArray &propertyName) override;
void setDataModelPosition(const QPointF &position) override;
@@ -175,7 +177,8 @@ private:
class FormEditorFlowActionItem : public FormEditorItem
{
friend class QmlDesigner::FormEditorScene;
friend FormEditorScene;
public:
void setDataModelPosition(const QPointF &position) override;
void setDataModelPositionInBaseState(const QPointF &position) override;
@@ -194,7 +197,8 @@ private:
class FormEditorTransitionItem : public FormEditorItem
{
friend class QmlDesigner::FormEditorScene;
friend FormEditorScene;
public:
void synchronizeOtherProperty(const QByteArray &propertyName) override;
void setDataModelPosition(const QPointF &position) override;
@@ -220,7 +224,7 @@ private:
class FormEditorFlowDecisionItem : FormEditorFlowItem
{
friend class QmlDesigner::FormEditorScene;
friend FormEditorScene;
public:
void updateGeometry() override;
@@ -243,7 +247,7 @@ protected:
class FormEditorFlowWildcardItem : FormEditorFlowDecisionItem
{
friend class QmlDesigner::FormEditorScene;
friend FormEditorScene;
public:
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
friend class QmlDesigner::FormEditorItem;
friend class QmlDesigner::FormEditorView;
friend FormEditorItem;
friend FormEditorView;
public:

View File

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

View File

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

View File

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

View File

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

View File

@@ -61,8 +61,8 @@ namespace Internal {
class QMLDESIGNERCORE_EXPORT AbstractProperty
{
friend class QmlDesigner::ModelNode;
friend class QmlDesigner::Internal::ModelPrivate;
friend ModelNode;
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);

View File

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

View File

@@ -48,8 +48,6 @@ QMLDESIGNERCORE_EXPORT QDebug operator<<(QDebug debug, const ItemLibraryEntry &i
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, 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
{
friend class QmlDesigner::Internal::MetaInfoPrivate;
friend class QmlDesigner::Internal::ModelPrivate;
friend class QmlDesigner::Internal::MetaInfoReader;
friend class QmlDesigner::Internal::SubComponentManagerPrivate;
friend Internal::MetaInfoPrivate;
friend Internal::ModelPrivate;
friend Internal::MetaInfoReader;
friend Internal::SubComponentManagerPrivate;
friend QMLDESIGNERCORE_EXPORT bool operator==(const MetaInfo &, const MetaInfo &);
public:

View File

@@ -64,12 +64,12 @@ using PropertyListType = QList<QPair<PropertyName, QVariant> >;
class QMLDESIGNERCORE_EXPORT Model : public QObject
{
friend class QmlDesigner::ModelNode;
friend class QmlDesigner::AbstractProperty;
friend class QmlDesigner::AbstractView;
friend class Internal::ModelPrivate;
friend class Internal::WriteLocker;
friend class QmlDesigner::Internal::NodeMetaInfoPrivate;
friend ModelNode;
friend AbstractProperty;
friend AbstractView;
friend Internal::ModelPrivate;
friend Internal::WriteLocker;
friend Internal::NodeMetaInfoPrivate;
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 bool operator <(const ModelNode &firstNode, const ModelNode &secondNode);
friend QMLDESIGNERCORE_EXPORT QList<Internal::InternalNodePointer> toInternalNodeList(const QList<ModelNode> &nodeList);
friend class QmlDesigner::Model;
friend class QmlDesigner::AbstractView;
friend class QmlDesigner::NodeListProperty;
friend class QmlDesigner::Internal::ModelPrivate;
friend class QmlDesigner::NodeAbstractProperty;
friend class QmlDesigner::NodeProperty;
friend Model;
friend AbstractView;
friend NodeListProperty;
friend Internal::ModelPrivate;
friend NodeAbstractProperty;
friend NodeProperty;
public:
enum NodeSourceType {

View File

@@ -36,9 +36,9 @@ namespace Internal {
class QMLDESIGNERCORE_EXPORT NodeAbstractProperty : public AbstractProperty
{
friend class QmlDesigner::ModelNode;
friend class QmlDesigner::Internal::ModelPrivate;
friend class QmlDesigner::AbstractProperty;
friend ModelNode;
friend Internal::ModelPrivate;
friend AbstractProperty;
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
{
friend class NodeInstanceView;
friend NodeInstanceView;
public:
static NodeInstance create(const ModelNode &node);
NodeInstance();

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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