feat(scene): add canvas and element context menus
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
730d0fa7a7
commit
3129440e60
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
#include "DiagramScene.h"
|
#include "DiagramScene.h"
|
||||||
|
|
||||||
|
#include <QContextMenuEvent>
|
||||||
|
#include <QMenu>
|
||||||
#include <QMimeData>
|
#include <QMimeData>
|
||||||
#include <QMouseEvent>
|
#include <QMouseEvent>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
@ -153,6 +155,28 @@ void GridView::dropEvent(QDropEvent* event)
|
|||||||
event->acceptProposedAction();
|
event->acceptProposedAction();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GridView::contextMenuEvent(QContextMenuEvent* event)
|
||||||
|
{
|
||||||
|
QGraphicsItem* item = itemAt(event->pos());
|
||||||
|
QMenu menu(this);
|
||||||
|
if (item) {
|
||||||
|
// Right-clicking an unselected element makes it the selection.
|
||||||
|
if (!item->isSelected()) {
|
||||||
|
scene()->clearSelection();
|
||||||
|
item->setSelected(true);
|
||||||
|
}
|
||||||
|
menu.addAction(tr("Copy"), m_scene, &DiagramScene::copySelection);
|
||||||
|
menu.addAction(tr("Cut"), m_scene, &DiagramScene::cutSelection);
|
||||||
|
menu.addAction(tr("Delete"), m_scene, &DiagramScene::deleteSelection);
|
||||||
|
} else {
|
||||||
|
QAction* pasteAct = menu.addAction(tr("Paste"), m_scene, &DiagramScene::paste);
|
||||||
|
pasteAct->setEnabled(m_scene->canPaste());
|
||||||
|
menu.addAction(tr("Select All"), m_scene, &DiagramScene::selectAll);
|
||||||
|
menu.addAction(tr("Zoom to Fit"), this, &GridView::zoomToFit);
|
||||||
|
}
|
||||||
|
menu.exec(event->globalPos());
|
||||||
|
}
|
||||||
|
|
||||||
bool GridView::handleNodeTypeDrop(const QMimeData* mime, QPoint viewportPos)
|
bool GridView::handleNodeTypeDrop(const QMimeData* mime, QPoint viewportPos)
|
||||||
{
|
{
|
||||||
if (!mime || !mime->hasFormat(QLatin1String(kNodeTypeMime)))
|
if (!mime || !mime->hasFormat(QLatin1String(kNodeTypeMime)))
|
||||||
|
|||||||
@ -41,6 +41,7 @@ protected:
|
|||||||
void dragEnterEvent(QDragEnterEvent* event) override;
|
void dragEnterEvent(QDragEnterEvent* event) override;
|
||||||
void dragMoveEvent(QDragMoveEvent* event) override;
|
void dragMoveEvent(QDragMoveEvent* event) override;
|
||||||
void dropEvent(QDropEvent* event) override;
|
void dropEvent(QDropEvent* event) override;
|
||||||
|
void contextMenuEvent(QContextMenuEvent* event) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void applyZoom(double factor);
|
void applyZoom(double factor);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user