/** ** ** @RDE_HEADER@ ** Event Dispatcher for Qt5 to delegate mouse and keyboard event to another event dispatcher ** $Id$ ** $HeadURL$ ** $Author$ ** ** ----------------------------------------------------------------------------------------------- ** ** Hardware-Environment: Intel-PC ** Software-Environment: Windows 7, Qt 5.4. ArcGIS 10.2.5 ** ** Language ........: C++ 11 ** ** ----------------------------------------------------------------------------------------------- ** ** Author ...........: Jörg Turla, SPD G, Tel. 3132 ** ** ----------------------------------------------------------------------------------------------- ** ** Notes .........: ** ** 15.04.2015, JT : First edition ** ** ----------------------------------------------------------------------------------------------- */ #include "event_delegater.h" namespace SituationMap { namespace RB { EventDelegater::EventDelegater(QWidget * getEventsFrom, AbstractEventDispatcher * delegateEventTo) : AbstractEventDispatcher(getEventsFrom), _delegateEventTo(delegateEventTo) { connect( delegateEventTo, &AbstractEventDispatcher::signalKickTheBucket, this , &AbstractEventDispatcher::onDo_kickTheBucket ); connect( this , &AbstractEventDispatcher::signalKickTheBucket, delegateEventTo, &AbstractEventDispatcher::onDo_kickTheBucket ); _restoreMouseTracking = delegateEventTo->_restoreMouseTracking; _whatsThisBackup = delegateEventTo->_whatsThisBackup; } /* EventDispatcher::EventDispatcher */ bool EventDelegater::eventFilter(QObject * watched, QEvent * e) { if (hasFinished()) return true; // don't accept new events if dispatcher is going to finish if (hasActiveEvent()) return true; // don't accept new events before last event has been handled completly if (_delegateEventTo != nullptr) { return _delegateEventTo->eventFilter( watched, e ); } return false; } /* EventDispatcher::eventFilter */ void EventDelegater::KickTheBucket() { if (_delegateEventTo != nullptr) { _delegateEventTo->unlinkEventDispatcher(); } AbstractEventDispatcher::KickTheBucket(); } /* EventDelegater::KickTheBucket */ } } /* namespace SituationMap::RB */