EDIT: see below
I want to close all open popup menus from a plugin, when the plugin window gets closed, currently they only will closed when the editor is deleted.
EDIT: see below
I want to close all open popup menus from a plugin, when the plugin window gets closed, currently they only will closed when the editor is deleted.
PopupMenu::dismissAllActiveMenus
yes i do that (the wrapper also do it), this was not my question
arghh to complicated to explain it all, getting crazy right now
But (for example) when you close the plugin-window in a older version of juce plugin-host (in the meantime you changed the behavior of it) an open plugin-window-popup stays open ( there can be many reasons for it, maybe because the editor class doesn't gets deleted and only the window gets closed ) ( the plugin-has the latest wrapper-code.)
Because parts of the plugin-hosting code is specific to the Juce Plugin Host Demo, i had to fork this code and baking my own solution.
Things like PluginWindow (GraphEditorPanel.cpp) etc, should be part of the modul-repository, so that anybody gets automatically new innovations.
Can that be the reason for my trouble, i only build a 32bit version of my host, and then JUCE_SUPPORT_CARBON is 1, and it seems effEditClose doesn't gets called ?
void closePluginWindow()
{
if (isOpen)
{
#if ! (JUCE_MAC && JUCE_SUPPORT_CARBON)
JUCE_VST_LOG ("Closing VST UI: " + plugin.getName());
isOpen = false;
dispatch (effEditClose, 0, 0, 0, 0);
stopTimer();
#if JUCE_WINDOWS
#pragma warning (push)
#pragma warning (disable: 4244)
if (pluginHWND != 0 && IsWindow (pluginHWND))
SetWindowLongPtr (pluginHWND, GWLP_WNDPROC, (LONG_PTR) originalWndProc);
#pragma warning (pop)
pluginHWND = 0;
#elif JUCE_LINUX
pluginWindow = 0;
pluginProc = 0;
#endif
#endif
}
}
It should get called at line 2541 instead
But if its a 32bit cocoa plugin, its not called.
closePluginWindow() will call nothing because of the if-directive, and the cocoa-wrapper is just a AutoResizingNSViewComponentWithParent, with does not call any implicit effEditClose
bump, it seems 32bit cocoa plugins don't recieve effEditClose when JUCE_SUPPORT_CARBON == 1
Ok.. looking at this, I think that I should just remove that #if and let that bit of code be run on all platforms. But I'm a bit worried about why I would have added it in the first place - hopefully it was just an oversight and not because of some subtle problem that causes failure in some obscure situation..
well the current behavior causes subtle a problem, popups don't get closed when the editor is closed and whats even more bad, they don't get destroyed when the editor is deleted (32bit cocoa)
I already changed this yesterday - let me know if you see any problems with it.
um, seems to be the old version? (last change 2 months ago)
https://github.com/julianstorer/JUCE/blob/master/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp
Sorry - I must have forgotten to push. It's there now.