X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSVTK%2FSVTK_RenderWindowInteractor.cxx;h=3406d70136202bcad7bf040d7a5a3b9b7864e3dc;hb=5d44d2f6ea60a50bbbc593f2b45a6075fe9e5154;hp=4e0db2deeb266947209cb075acfde27cba9d8dc0;hpb=d26f738c9c427a45409bacf3848fd8c224edf6ed;p=modules%2Fgui.git diff --git a/src/SVTK/SVTK_RenderWindowInteractor.cxx b/src/SVTK/SVTK_RenderWindowInteractor.cxx index 4e0db2dee..3406d7013 100644 --- a/src/SVTK/SVTK_RenderWindowInteractor.cxx +++ b/src/SVTK/SVTK_RenderWindowInteractor.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2023 CEA, EDF, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -34,8 +34,9 @@ // QT Includes // Put Qt includes before the X11 includes which #define the symbol None // (see SVTK_SpaceMouse.h) to avoid the compilation error. -#ifndef WIN32 -# include +#if !defined(WIN32) && !defined(__APPLE__) +#include +#include #endif #include @@ -81,7 +82,7 @@ QVTK_RenderWindowInteractor myRenderWindow->Delete(); myRenderWindow->DoubleBufferOn(); -#ifndef WIN32 +#if !defined WIN32 && !defined __APPLE__ myRenderWindow->SetDisplayId((void*)QX11Info::display()); #endif myRenderWindow->SetWindowId((void*)winId()); @@ -109,10 +110,10 @@ QVTK_RenderWindowInteractor QVTK_RenderWindowInteractor ::~QVTK_RenderWindowInteractor() { -#ifndef WIN32 - SVTK_SpaceMouse* aSpaceMouse = SVTK_SpaceMouse::getInstance(); +#if !defined WIN32 && !defined __APPLE__ + SVTK_SpaceMouseXCB* aSpaceMouse = SVTK_SpaceMouseXCB::getInstance(); if ( aSpaceMouse && aSpaceMouse->isSpaceMouseOn() ) - aSpaceMouse->close( QX11Info::display() ); + aSpaceMouse->close( QX11Info::connection() ); #endif } @@ -196,7 +197,7 @@ QVTK_RenderWindowInteractor */ void QVTK_RenderWindowInteractor -::paintEvent( QPaintEvent* theEvent ) +::paintEvent( QPaintEvent* /*theEvent*/ ) { GetDevice()->CreateTimer(VTKI_TIMER_FIRST); } @@ -207,7 +208,7 @@ QVTK_RenderWindowInteractor */ void QVTK_RenderWindowInteractor -::resizeEvent( QResizeEvent* theEvent ) +::resizeEvent( QResizeEvent* /*theEvent*/ ) { int* aSize = getRenderWindow()->GetSize(); int aWidth = aSize[0]; @@ -242,7 +243,7 @@ QVTK_RenderWindowInteractor */ void QVTK_RenderWindowInteractor -::contextMenuEvent( QContextMenuEvent* event ) +::contextMenuEvent( QContextMenuEvent* /*event*/ ) {} /*! @@ -320,7 +321,7 @@ QVTK_RenderWindowInteractor */ void QVTK_RenderWindowInteractor -::mouseDoubleClickEvent( QMouseEvent* event ) +::mouseDoubleClickEvent( QMouseEvent* /*event*/ ) {} @@ -377,7 +378,7 @@ QVTK_RenderWindowInteractor */ void QVTK_RenderWindowInteractor -::enterEvent( QEvent* event ) +::enterEvent( QEvent* /*event*/ ) { if(FOCUS_UNDER_MOUSE){ activateWindow(); @@ -406,17 +407,16 @@ QVTK_RenderWindowInteractor { QWidget::focusInEvent( event ); -#ifndef WIN32 +#if !defined WIN32 && !defined __APPLE__ // register set space mouse events receiver - SVTK_SpaceMouse* aSpaceMouse = SVTK_SpaceMouse::getInstance(); - + SVTK_SpaceMouseXCB* aSpaceMouse = SVTK_SpaceMouseXCB::getInstance(); if ( aSpaceMouse ) { if ( !aSpaceMouse->isSpaceMouseOn() ) - // initialize 3D space mouse driver - aSpaceMouse->initialize( QX11Info::display(), winId() ); + // initialize 3D space mouse driver + aSpaceMouse->initialize( QX11Info::connection(), winId() ); else - aSpaceMouse->setWindow( QX11Info::display(), winId() ); + aSpaceMouse->setWindow( QX11Info::connection(), winId() ); } #endif } @@ -431,61 +431,46 @@ QVTK_RenderWindowInteractor { QWidget::focusOutEvent( event ); -#ifndef WIN32 - // unregister set space mouse events receiver - SVTK_SpaceMouse* aSpaceMouse = SVTK_SpaceMouse::getInstance(); +#if !defined WIN32 && !defined __APPLE__ + SVTK_SpaceMouseXCB* aSpaceMouse = SVTK_SpaceMouseXCB::getInstance(); if ( aSpaceMouse && aSpaceMouse->isSpaceMouseOn() ) - aSpaceMouse->setWindow( QX11Info::display(), 0 ); + aSpaceMouse->setWindow( QX11Info::connection(), 0 ); #endif } - -#ifdef WIN32 - -/*! - To handle native Win32 events (from such devices as SpaceMouse) -*/ -bool QVTK_RenderWindowInteractor::winEvent( MSG* msg, long* result ) +bool QVTK_RenderWindowInteractor +::nativeEvent(const QByteArray& eventType, void* message, long* result) { - // TODO: Implement event handling for SpaceMouse - return QWidget::winEvent( msg, result); -} - -#else - -/*! - To handle native X11 events (from such devices as SpaceMouse) -*/ -bool -QVTK_RenderWindowInteractor -::x11Event( XEvent *xEvent ) -{ - // handle 3d space mouse events - if ( SVTK_SpaceMouse* aSpaceMouse = SVTK_SpaceMouse::getInstance() ) +#if defined(WIN32) + // TODO: WIN32-related implementation +#elif !defined(__APPLE__) + if ( eventType == "xcb_generic_event_t" ) { - if ( aSpaceMouse->isSpaceMouseOn() && xEvent->type == ClientMessage ) + xcb_generic_event_t* ev = static_cast(message); + if ( SVTK_SpaceMouseXCB* aSpaceMouse = SVTK_SpaceMouseXCB::getInstance() ) { - SVTK_SpaceMouse::MoveEvent anEvent; - int type = aSpaceMouse->translateEvent( QX11Info::display(), xEvent, &anEvent, 1.0, 1.0 ); - switch ( type ) + if ( aSpaceMouse->isSpaceMouseOn() && ev->response_type == XCB_CLIENT_MESSAGE ) { - case SVTK_SpaceMouse::SpaceMouseMove: - GetDevice()->InvokeEvent( SVTK::SpaceMouseMoveEvent, anEvent.data ); - break; - case SVTK_SpaceMouse::SpaceButtonPress: - GetDevice()->InvokeEvent( SVTK::SpaceMouseButtonEvent, &anEvent.button ); - break; - case SVTK_SpaceMouse::SpaceButtonRelease: - break; + SVTK_SpaceMouse::MoveEvent anEvent; + int type = aSpaceMouse->translateEvent( QX11Info::connection(), (xcb_client_message_event_t*)ev, &anEvent, 1.0, 1.0 ); + switch ( type ) + { + case SVTK_SpaceMouse::SpaceMouseMove: + GetDevice()->InvokeEvent( SVTK::SpaceMouseMoveEvent, anEvent.data ); + break; + case SVTK_SpaceMouse::SpaceButtonPress: + GetDevice()->InvokeEvent( SVTK::SpaceMouseButtonEvent, &anEvent.button ); + break; + case SVTK_SpaceMouse::SpaceButtonRelease: + break; + } + return true; // stop handling the event } - return true; // stop handling the event } } - - return QWidget::x11Event( xEvent ); -} - #endif + return QWidget::nativeEvent( eventType, message, result ); +} /*! Constructor @@ -532,10 +517,6 @@ SVTK_RenderWindowInteractor aStyle->SetInteractor(NULL); myInteractorStyles.pop(); } - - SetRenderer(NULL); - - GetDevice()->SetRenderWindow(NULL); } /*!