| 2783 | } |
| 2784 | |
| 2785 | void 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 | |
| 2825 | BASIC_SHARED_D_ACCESSOR_IMPL(CartesianPlot, bool, isInteractive, Interactive, interactive) |
| 2826 |
no test coverage detected