We have to call close_view(), which calls IPlugView::removed()
before destroying the parent widget.
Previously ~VST3PluginUI() was called after the derived class
destroyed the owned private `_gui_widget`, `_ns_view` or x11 parent.
On windows that may lead to the hwnd of the window becoming invalid
before the call to ::removed().
VST3PluginInfo holds a shared_ptr reference to
VST3PluginModule. In order to cleanly unload a plugin, all
references have to be dropped.
Unloading a plugin cleanly before exit is needed in some
cases (e.g. Waves shell otherwise crashes)
Some fixed size AU, do unset `autoresizesSubviews` (Apple's default
is enabled). This also results in the initial size, and position
below Ardour's toolbar to be set incorrectly.
This fixes e.g. Reason Rack Plug AU (and maybe others).
This affects only windows opened from the mixer window,
in case the mixer is detached and on a different workspace (desktop).
Window::init (and Dialog::init) set transient parent early on,
and it defaults to the main window (with toolbar). It needs to be
unset before presenting the window, in order to show the window
on the same workspace as the eventual transient parent.
This follows 6dc9134 and f3fbf58.
This follows f3fbf58185 which unconditionally set the main window
as transient parent. However when detaching the mixer, plugins should
be transient for the detached parent window.
Resolve ambiguity between Dialog::add_button() and add_button member,
also use clicked signal for ArdourButton.
signal_button_press_event() only works with
ArdourButton::set_fallthrough_to_parent
This restores using the distinct colors for cursor and edited text,
which was lost in the theme overhaul in 7f80883eb1.
Since delta-clocks are not editable, the same color is used for
delta display and the edit cursor (orange in the default theme).
When copying a plugin via drag/drop or copying plugin state, use
the main instance only. Plugins will later be replicated as
needed when configuring processors.