JUCEで作ったAUv3プラグインのUIでComboBoxがクリックできない場合の対処法。ってか、これないとまったくクリックできなくない?
ソースはここ。2020年からずっと続いている問題というか仕様ってことになってるのか?
https://forum.juce.com/t/bug-popup-menu-background-and-logic-silicon/43243/10
LookAndFeel
のgetParentComponentForMenuOptions()
をオーバーライドして、Mac/iOSのAUv3の時のみComboBox
の親コンポーネントを返す。ComboBoxをクリックした時に出るポップアップメニューのTarget Component
はComboBoxなので、そのparentを返せばいい。それ以外の場合はLookAndFeelのデフォルト動作になるように。
// Workaround to make ComboBox clickable for AUv3 on Mac/iOS
juce::Component* getParentComponentForMenuOptions (const juce::PopupMenu::Options& options) override
{
#if JUCE_MAC || JUCE_IOS
if (juce::PluginHostType::getPluginLoadedAs() == juce::AudioProcessor::wrapperType_AudioUnitv3)
{
if (options.getParentComponent() == nullptr && options.getTargetComponent() != nullptr)
return options.getTargetComponent()->getParentComponent();
}
#endif
return juce::LookAndFeel_V4::getParentComponentForMenuOptions (options);
}
このLookAndFeel
をデフォルトにすればOK。