MCPcopy Create free account
hub / github.com/KDE/labplot / setMouseMode

Method setMouseMode

src/backend/worksheet/plots/cartesian/CartesianPlot.cpp:2785–2823  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2783}
2784
2785void CartesianPlot::setMouseMode(MouseMode mouseMode) {
2786 Q_D(CartesianPlot);
2787
2788 d->mouseMode = mouseMode;
2789 d->setHandlesChildEvents(mouseMode != MouseMode::Selection);
2790
2791 QList<QGraphicsItem*> items = d->childItems();
2792 if (mouseMode == MouseMode::Selection) {
2793 d->setZoomSelectionBandShow(false);
2794 d->setCursor(Qt::ArrowCursor);
2795 for (auto* item : items)
2796 item->setFlag(QGraphicsItem::ItemStacksBehindParent, false);
2797 } else {
2798 if (mouseMode == MouseMode::ZoomSelection || mouseMode == MouseMode::Crosshair)
2799 d->setCursor(Qt::CrossCursor);
2800 else if (mouseMode == MouseMode::ZoomXSelection)
2801 d->setCursor(Qt::SizeHorCursor);
2802 else if (mouseMode == MouseMode::ZoomYSelection)
2803 d->setCursor(Qt::SizeVerCursor);
2804
2805 for (auto* item : items)
2806 item->setFlag(QGraphicsItem::ItemStacksBehindParent, true);
2807 }
2808
2809 // when doing zoom selection, prevent the graphics item from being movable
2810 // if it's currently movable (no worksheet layout available)
2811 const auto* worksheet = qobject_cast<const Worksheet*>(parentAspect());
2812 if (worksheet) {
2813 if (mouseMode == MouseMode::Selection) {
2814 if (worksheet->layout() != Worksheet::Layout::NoLayout)
2815 graphicsItem()->setFlag(QGraphicsItem::ItemIsMovable, false);
2816 else
2817 graphicsItem()->setFlag(QGraphicsItem::ItemIsMovable, true);
2818 } else // zoom m_selection
2819 graphicsItem()->setFlag(QGraphicsItem::ItemIsMovable, false);
2820 }
2821
2822 Q_EMIT mouseModeChanged(mouseMode);
2823}
2824
2825BASIC_SHARED_D_ACCESSOR_IMPL(CartesianPlot, bool, isInteractive, Interactive, interactive)
2826

Calls 1

Tested by

no test coverage detected