I have a mometary button which is represented via a plugin parameter which can be automated. When I update the state of the button from receiving automation I set the state by calling "setToggleState" with sendChangeNotification = false so as not to notify of changes and cause a further automation event back to the host. There is a problem here because to receive both the down and up state changes I have to overload the "buttonStateChanged" function, but this is always called from "setToggleState" even though I say don't send a change notification! So this seems fundamentally broken for this basic use case, is there something I'm missing on how to receive both down and up messages from a button while still respecting not sending change notifications?
//============================================================================== void Button::setToggleState (const bool shouldBeOn, const bool sendChangeNotification) { if (shouldBeOn != lastToggleState) { if (getToggleState() != shouldBeOn) // this test means that if the value is void rather than explicitly set to isOn = shouldBeOn; // false, it won't be changed unless the required value is true. lastToggleState = shouldBeOn; repaint(); WeakReference<Component> deletionWatcher (this); if (sendChangeNotification) { sendClickMessage (ModifierKeys()); if (deletionWatcher == nullptr) return; } if (lastToggleState) { turnOffOtherButtonsInGroup (sendChangeNotification); if (deletionWatcher == nullptr) return; } sendStateMessage(); } }