| 672 | } |
| 673 | |
| 674 | bool PlotWidgetBase::eventFilter(QObject* obj, QEvent* event) { |
| 675 | if (event->type() == QEvent::Destroy) { |
| 676 | return false; |
| 677 | } |
| 678 | |
| 679 | QwtScaleWidget* bottom_axis = plot_->axisWidget(QwtPlot::xBottom); |
| 680 | QwtScaleWidget* left_axis = plot_->axisWidget(QwtPlot::yLeft); |
| 681 | |
| 682 | if ((obj == bottom_axis || obj == left_axis) && !(isXYPlot() && keepRatioXY()) && event->type() == QEvent::Wheel) { |
| 683 | auto* wheel_event = static_cast<QWheelEvent*>(event); |
| 684 | magnifier()->setDefaultMode(obj == bottom_axis ? PlotMagnifier::kXAxis : PlotMagnifier::kYAxis); |
| 685 | magnifier()->widgetWheelEvent(wheel_event); |
| 686 | } |
| 687 | |
| 688 | if (obj != plot_->canvas()) { |
| 689 | return false; |
| 690 | } |
| 691 | |
| 692 | if (event->type() == QEvent::DragEnter) { |
| 693 | emit dragEnterSignal(static_cast<QDragEnterEvent*>(event)); |
| 694 | return false; |
| 695 | } |
| 696 | |
| 697 | if (event->type() == QEvent::DragLeave) { |
| 698 | emit dragLeaveSignal(static_cast<QDragLeaveEvent*>(event)); |
| 699 | return false; |
| 700 | } |
| 701 | |
| 702 | if (event->type() == QEvent::Drop) { |
| 703 | emit dropSignal(static_cast<QDropEvent*>(event)); |
| 704 | return false; |
| 705 | } |
| 706 | |
| 707 | if (event->type() == QEvent::Wheel) { |
| 708 | auto* wheel_event = static_cast<QWheelEvent*>(event); |
| 709 | magnifier()->setDefaultMode(PlotMagnifier::kBothAxes); |
| 710 | |
| 711 | const bool ctrl_modifier = wheel_event->modifiers() == Qt::ControlModifier; |
| 712 | const QRectF legend_rect = legend()->geometry(plot_->canvas()->rect()); |
| 713 | if (ctrl_modifier && legend()->isVisible() && legend_rect.contains(wheel_event->position())) { |
| 714 | const int previous_size = legend()->font().pointSize(); |
| 715 | int new_size = previous_size; |
| 716 | if (wheel_event->angleDelta().y() > 0) { |
| 717 | new_size = std::min(13, previous_size + 1); |
| 718 | } else if (wheel_event->angleDelta().y() < 0) { |
| 719 | new_size = std::max(7, previous_size - 1); |
| 720 | } |
| 721 | if (new_size != previous_size) { |
| 722 | setLegendSize(new_size); |
| 723 | emit legendSizeChanged(new_size); |
| 724 | } |
| 725 | return true; |
| 726 | } |
| 727 | return false; |
| 728 | } |
| 729 | |
| 730 | if (event->type() == QEvent::MouseButtonPress) { |
| 731 | auto* mouse_event = static_cast<QMouseEvent*>(event); |
nothing calls this directly
no test coverage detected