MCPcopy Create free account
hub / github.com/PlotJuggler/PlotJuggler / eventFilter

Method eventFilter

pj_plotting/widget/src/PlotWidgetBase.cpp:674–749  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

672}
673
674bool 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);

Callers

nothing calls this directly

Calls 14

axisWidgetMethod · 0.80
setDefaultModeMethod · 0.80
geometryMethod · 0.80
rectMethod · 0.80
yMethod · 0.80
typeMethod · 0.45
widgetWheelEventMethod · 0.45
canvasMethod · 0.45
isVisibleMethod · 0.45
containsMethod · 0.45
positionMethod · 0.45

Tested by

no test coverage detected