// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #ifndef TOOL_WIDGETEDITOR_H #define TOOL_WIDGETEDITOR_H #include #include #include QT_BEGIN_NAMESPACE class QAction; class QMainWindow; namespace qdesigner_internal { class FormWindow; class QDesignerMimeData; class WidgetEditorTool: public QDesignerFormWindowToolInterface { Q_OBJECT public: explicit WidgetEditorTool(FormWindow *formWindow); ~WidgetEditorTool() override; QDesignerFormEditorInterface *core() const override; QDesignerFormWindowInterface *formWindow() const override; QWidget *editor() const override; QAction *action() const override; void activated() override; void deactivated() override; bool handleEvent(QWidget *widget, QWidget *managedWidget, QEvent *event) override; bool handleContextMenu(QWidget *widget, QWidget *managedWidget, QContextMenuEvent *e); bool handleMouseButtonDblClickEvent(QWidget *widget, QWidget *managedWidget, QMouseEvent *e); bool handleMousePressEvent(QWidget *widget, QWidget *managedWidget, QMouseEvent *e); bool handleMouseMoveEvent(QWidget *widget, QWidget *managedWidget, QMouseEvent *e); bool handleMouseReleaseEvent(QWidget *widget, QWidget *managedWidget, QMouseEvent *e); bool handleKeyPressEvent(QWidget *widget, QWidget *managedWidget, QKeyEvent *e); bool handleKeyReleaseEvent(QWidget *widget, QWidget *managedWidget, QKeyEvent *e); bool handlePaintEvent(QWidget *widget, QWidget *managedWidget, QPaintEvent *e); bool handleDragEnterMoveEvent(QWidget *widget, QWidget *managedWidget, QDragMoveEvent *e, bool isEnter); bool handleDragLeaveEvent(QWidget *widget, QWidget *managedWidget, QDragLeaveEvent *e); bool handleDropEvent(QWidget *widget, QWidget *managedWidget, QDropEvent *e); private: bool restoreDropHighlighting(); void detectDockDrag(const QDesignerMimeData *mimeData); FormWindow *m_formWindow; QAction *m_action; bool mainWindowSeparatorEvent(QWidget *widget, QEvent *event); bool isPassiveInteractor(QWidget *widget, QEvent *event); QPointer m_separator_drag_mw; QPointer m_lastDropTarget; bool m_specialDockDrag; }; } // namespace qdesigner_internal QT_END_NAMESPACE #endif // TOOL_WIDGETEDITOR_H