- fixed : RlvUIEnabler behaviour toggle handlers are called on every RLV_TYPE_ADD
--HG-- branch : RLVameow-7.2.2
parent
7d228559f1
commit
6b0b1c4df7
|
|
@ -1328,6 +1328,8 @@ ERlvCmdRet RlvHandler::processAddRemCommand(const RlvCommand& rlvCmd)
|
|||
}
|
||||
|
||||
m_OnBehaviour(eBhvr, eType);
|
||||
if ( ((RLV_TYPE_ADD == eType) && (1 == m_Behaviours[eBhvr])) || ((RLV_TYPE_REMOVE == eType) && (0 == m_Behaviours[eBhvr])) )
|
||||
m_OnBehaviourToggle(eBhvr, eType);
|
||||
|
||||
// Show an - optional - notification on every global behaviour change
|
||||
#ifdef RLV_EXTENSION_NOTIFY_BEHAVIOUR
|
||||
|
|
|
|||
|
|
@ -132,10 +132,11 @@ protected:
|
|||
public:
|
||||
// The behaviour signal is triggered whenever a command is successfully processed and resulted in adding or removing a behaviour
|
||||
typedef boost::signals2::signal<void (ERlvBehaviour, ERlvParamType)> rlv_behaviour_signal_t;
|
||||
boost::signals2::connection setBehaviourCallback(const rlv_behaviour_signal_t::slot_type& cb ) { return m_OnBehaviour.connect(cb); }
|
||||
boost::signals2::connection setBehaviourCallback(const rlv_behaviour_signal_t::slot_type& cb ) { return m_OnBehaviour.connect(cb); }
|
||||
boost::signals2::connection setBehaviourToggleCallback(const rlv_behaviour_signal_t::slot_type& cb ) { return m_OnBehaviourToggle.connect(cb); }
|
||||
// The command signal is triggered whenever a command is processed
|
||||
typedef boost::signals2::signal<void (const RlvCommand&, ERlvCmdRet, bool)> rlv_command_signal_t;
|
||||
boost::signals2::connection setCommandCallback(const rlv_command_signal_t::slot_type& cb ) { return m_OnCommand.connect(cb); }
|
||||
boost::signals2::connection setCommandCallback(const rlv_command_signal_t::slot_type& cb ) { return m_OnCommand.connect(cb); }
|
||||
|
||||
void addCommandHandler(RlvCommandHandler* pHandler);
|
||||
void removeCommandHandler(RlvCommandHandler* pHandler);
|
||||
|
|
@ -208,6 +209,7 @@ protected:
|
|||
std::stack<LLUUID> m_CurObjectStack; // Convenience (see @tpto)
|
||||
|
||||
rlv_behaviour_signal_t m_OnBehaviour;
|
||||
rlv_behaviour_signal_t m_OnBehaviourToggle;
|
||||
rlv_command_signal_t m_OnCommand;
|
||||
mutable std::list<RlvCommandHandler*> m_CommandHandlers;
|
||||
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@
|
|||
RlvUIEnabler::RlvUIEnabler()
|
||||
{
|
||||
// Connect us to the behaviour toggle signal
|
||||
gRlvHandler.setBehaviourCallback(boost::bind(&RlvUIEnabler::onBehaviour, this, _1, _2));
|
||||
gRlvHandler.setBehaviourToggleCallback(boost::bind(&RlvUIEnabler::onBehaviourToggle, this, _1, _2));
|
||||
|
||||
// onRefreshHoverText()
|
||||
m_Handlers.insert(std::pair<ERlvBehaviour, behaviour_handler_t>(RLV_BHVR_SHOWLOC, boost::bind(&RlvUIEnabler::onRefreshHoverText, this)));
|
||||
|
|
@ -90,19 +90,13 @@ RlvUIEnabler::RlvUIEnabler()
|
|||
}
|
||||
|
||||
// Checked: 2010-02-28 (RLVa-1.2.0b) | Added: RLVa-1.2.0a
|
||||
void RlvUIEnabler::onBehaviour(ERlvBehaviour eBhvr, ERlvParamType eType)
|
||||
void RlvUIEnabler::onBehaviourToggle(ERlvBehaviour eBhvr, ERlvParamType eType)
|
||||
{
|
||||
bool fQuitting = LLApp::isQuitting();
|
||||
|
||||
// We're only interested in behaviour toggles (ie on->off or off->on)
|
||||
if ( ((RLV_TYPE_ADD == eType) && (1 == gRlvHandler.hasBehaviour(eBhvr))) ||
|
||||
((RLV_TYPE_REMOVE == eType) && (0 == gRlvHandler.hasBehaviour(eBhvr))) )
|
||||
for (behaviour_handler_map_t::const_iterator itHandler = m_Handlers.lower_bound(eBhvr), endHandler = m_Handlers.upper_bound(eBhvr);
|
||||
itHandler != endHandler; ++itHandler)
|
||||
{
|
||||
for (behaviour_handler_map_t::const_iterator itHandler = m_Handlers.lower_bound(eBhvr), endHandler = m_Handlers.upper_bound(eBhvr);
|
||||
itHandler != endHandler; ++itHandler)
|
||||
{
|
||||
itHandler->second(fQuitting);
|
||||
}
|
||||
itHandler->second(fQuitting);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ protected:
|
|||
public:
|
||||
typedef boost::function<void(bool)> behaviour_handler_t;
|
||||
void addBehaviourToggleCallback(ERlvBehaviour eBhvr, behaviour_handler_t cb);
|
||||
void onBehaviour(ERlvBehaviour eBhvr, ERlvParamType eType); // RlvHandler::rlv_behaviour_signal_t
|
||||
void onBehaviourToggle(ERlvBehaviour eBhvr, ERlvParamType eType); // RlvHandler::rlv_behaviour_signal_t
|
||||
|
||||
/*
|
||||
* Behaviour handlers
|
||||
|
|
|
|||
Loading…
Reference in New Issue