73 lines
2.3 KiB
C++
Executable File
73 lines
2.3 KiB
C++
Executable File
/**
|
|
**
|
|
** @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 */
|