diff --git a/src/app/3d/qgs3dmapcanvaswidget.cpp b/src/app/3d/qgs3dmapcanvaswidget.cpp index 3fd6728c3ab2..8ccf416e6d9d 100644 --- a/src/app/3d/qgs3dmapcanvaswidget.cpp +++ b/src/app/3d/qgs3dmapcanvaswidget.cpp @@ -642,3 +642,29 @@ void Qgs3DMapCanvasWidget::onExtentChanged() mViewExtentHighlight->closePoints(); } } + +Qgs3dMapCanvasInputBridge::Qgs3dMapCanvasInputBridge( QObject *parent ) + : QObject( parent ) +{ + +} + +bool Qgs3dMapCanvasInputBridge::eventFilter( QObject *watched, QEvent *event ) +{ + if ( Qgs3DMapCanvasWidget *widget = qobject_cast< Qgs3DMapCanvasWidget *>( watched ) ) + { + if ( event->type() == QEvent::WindowActivate ) + { + QgsDebugError( QStringLiteral( "activated %1" ).arg( widget->canvasName() ) ); + } + else if ( event->type() == QEvent::FocusIn ) + { + QgsDebugError( QStringLiteral( "focused %1" ).arg( widget->canvasName() ) ); + } + else if ( event->type() == QEvent::MouseButtonPress ) + { + QgsDebugError( QStringLiteral( "pressed %1" ).arg( widget->canvasName() ) ); + } + } + return QObject::eventFilter( watched, event ); +} diff --git a/src/app/3d/qgs3dmapcanvaswidget.h b/src/app/3d/qgs3dmapcanvaswidget.h index a0413b8340aa..bcb2c046bcc4 100644 --- a/src/app/3d/qgs3dmapcanvaswidget.h +++ b/src/app/3d/qgs3dmapcanvaswidget.h @@ -39,6 +39,16 @@ class QgsMapCanvas; class QgsDockableWidgetHelper; class QgsRubberBand; +class Qgs3dMapCanvasInputBridge : public QObject +{ +public: + Qgs3dMapCanvasInputBridge( QObject* parent ); + + bool eventFilter(QObject *watched, QEvent *event) override; + + +}; + class APP_EXPORT Qgs3DMapCanvasWidget : public QWidget { Q_OBJECT diff --git a/src/app/qgisapp.cpp b/src/app/qgisapp.cpp index c0d63b0b55e0..4e4d1494891f 100644 --- a/src/app/qgisapp.cpp +++ b/src/app/qgisapp.cpp @@ -13124,6 +13124,12 @@ Qgs3DMapCanvasWidget *QgisApp::createNew3DMapCanvasDock( const QString &name, bo Qgs3DMapCanvasWidget *widget = new Qgs3DMapCanvasWidget( name, isDocked ); + if ( !m3dMapCanvasInputBridge ) + { + m3dMapCanvasInputBridge = new Qgs3dMapCanvasInputBridge( this ); + } + widget->installEventFilter( m3dMapCanvasInputBridge ); + mOpen3DMapViews.insert( widget ); widget->setMainCanvas( mMapCanvas ); widget->mapCanvas3D()->setTemporalController( mTemporalControllerWidget->temporalController() ); diff --git a/src/app/qgisapp.h b/src/app/qgisapp.h index 362a1cd06d89..864c8fb1af6f 100644 --- a/src/app/qgisapp.h +++ b/src/app/qgisapp.h @@ -159,6 +159,7 @@ class QgsAppGpsConnection; class QgsGpsToolBar; class QgsAppGpsSettingsMenu; class Qgs3DMapScene; +class Qgs3dMapCanvasInputBridge; #include #include @@ -2732,6 +2733,7 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow #ifdef HAVE_3D QSet mOpen3DMapViews; + Qgs3dMapCanvasInputBridge* m3dMapCanvasInputBridge = nullptr; #endif //! True if the autoSelectAddedLayer() slot should not be doing anything (performance optimization when adding a lot of layers)