ComboBoxの操作において、プログラム的に操作をする場合とユーザーが手動で操作をする場合において、異なるcallback処理をしたい場合は、以下のようにCustomComboBoxクラスのmouseDown()をoverrideするといいと思います。
class CustomComboBox : public juce::ComboBox
{
public:
CustomComboBox() : juce::ComboBox()
{
}
~CustomComboBox() override
{
}
void mouseDown(const juce::MouseEvent &event) override {
DBG("Mouse down");
userInteracted = true;
juce::ComboBox::mouseDown(event);
}
bool getUserInteracted() const {
return userInteracted;
}
void setUserInteractedToFalse() {
userInteracted = false;
}
private:
bool userInteracted = false;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CustomComboBox)
};
void comboBoxChanged(juce::ComboBox *comboBoxThatHasChanged) override {
if (comboBoxThatHasChanged == &selector) {
if(selector.getUserInteracted()) {
DBG("user selected ...");
// do something
selector.setUserInteractedToFalse();
} else {
DBG("program selected ...");
// do something
}
}
}