Commit Graph

30 Commits

Author SHA1 Message Date
Robin Gareus 73b44532f1
Allow to override visibility tracker
This is in preparation to keep track of external UI plugin UIs
2023-11-26 20:06:35 +01:00
Robin Gareus ddf894a1dd
Attempted fix for `idle_drop_window` random crashes (2/2) 2022-12-03 19:27:53 +01:00
Robin Gareus f107c063e7 Add conveniece API to set trasient-parent for Proxy Windows
On macOS, a transient parant should only be set for a single child
window. sibling windows to a single parent cannot be re-stacked.
2022-11-15 03:03:49 +01:00
Robin Gareus 03642d3707
Mark window invisible after deleting it
This fixes an issue when destroying VST plugin UIs
rather than hiding them. Even though is hidden before destroying it,
the vistracker is also destroyed in the same function call, before
the event can be processed. The window state remains visible="1"
2022-10-21 18:11:19 +02:00
Robin Gareus f89845e64a
Prevent duplicate signal emission
Re-assigning a sigc::connection does not disconnect
any previously connected signals.

WindowProxy::setup may be called multiple times. Notably plugin
windows can change the managed _window (generic/custom), which
requires a call to setup.
2022-10-08 17:12:10 +02:00
Mads Kiilerich d52c727ec5
gtkmm: use get_mapped instead of deprecated Gtk::Widget::is_mapped() 2022-04-08 20:20:10 +02:00
Paul Davis 7bf89ce109 Constification: make Stateful::get_state() const, with all other required const-ness added (libs) 2022-04-06 21:56:59 -06:00
Paul Davis b258ad792e force provision of "menu-name" for all WindowProxy objects, and thus Tabbables
Actions for hide/show/attach/detach tabbables use hard-coded names which are not
translated. Using Tabbable/WindowProxy::name() to lookup the action will fail,
since the name can be translated. This changes just removes the option to not
provide a menu-name when creating these objects, and uses the name menu-name
when looking up an action by name
2020-05-01 14:33:47 -06:00
Robin Gareus cec5ce8f45
Update canvas/UI lib GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
Robin Gareus 58db958839
Fix crash for external windows
eg. LV2 externalUI windows are not managed by ardour; Ardour cannot
intercept mapped() or delete_event() signals and hence also not
create a visibility-tracker.

First call to WindowProxy::toggle() creates the window, and the 2nd call
crashed since 6ca8ec5141, due to missing vistracker.

e.g. externalUI plugin windows, the processor-box uses WindowProxy
for all plugin-UIs incl. externalUIs.
2018-12-20 19:41:57 +01:00
Robin Gareus 9004a0df7a
Properly keep track of Window Visibility, action state
This fixes inconsistent WM::Proxy state when a window is destroyed
Specifically "session-options-editor" when the session is unloaded;
previously "toggle-session-options-editor" was never unset.
2018-12-08 22:38:03 +01:00
Robin Gareus fc24b9f0b7
Fix uninitialized variable 2018-11-29 02:10:08 +01:00
Paul Davis 6ca8ec5141 remove debug output 2018-09-23 13:48:19 -04:00
Tim Mayberry 9488cb0b69 Use XMLNode::get/set_property API in Gtkmm2ext::WindowProxy class 2017-04-19 09:36:55 +10:00
Robin Gareus ddd0e862ce Properly remember window position.
Querying the position of unmapped windows may or may not return a valid
position. -- the configure handler is also called after hiding a window.
2017-02-01 23:07:57 +01:00
Paul Davis cf52d6e4b4 enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.h 2016-07-14 14:45:23 -04:00
Paul Davis 8d17465016 give WindowProxy its own map/unmap signals so that other things can track map/unmap without accessing the Window 2016-06-12 22:49:15 -04:00
Paul Davis 4963d65206 track geometry via configure events for tabbable own-windows 2016-05-10 09:46:12 -04:00
Paul Davis 17ace643e4 OMNIBUS COMMIT: prefer const XMLNode::property method (and provide a real one) 2016-05-04 23:09:45 -04:00
Paul Davis 9634888bf3 add the concept of a "state mask" that determines what info a WindowProxy will save 2016-04-27 00:03:14 -04:00
Paul Davis e4a7e5a239 improve size and positioning of Tabbable's after being torn off, hidden, reshown, etc 2016-02-26 18:51:32 -05:00
Paul Davis a29fd4542e a bunch of stuff to make tab/window switching work better, and provide Alt-m to toggle between editor+mixer in a sane way 2016-02-22 15:31:25 -05:00
Paul Davis bc487bb4b0 replicate the remove-all-trailing whitespace commit(s) in master 2016-02-22 15:31:24 -05:00
Paul Davis 00933950b7 small rationalization of naming and code for managing plugin GUI visibility 2016-02-22 15:31:23 -05:00
Paul Davis 436706c8d4 remove debug output 2016-02-22 15:31:22 -05:00
Paul Davis e46b518319 classes derived from WindowProxy are responsible for their own window creation in ::set_state().
Fixes a crash reported by A.Prokoudine when opening a session with visible plugin GUIs
2016-02-22 15:31:22 -05:00
Paul Davis 552e995297 save/restore tabbable state 2016-02-22 15:31:21 -05:00
Paul Davis 9010262bed first compilable version of tabbable design.
I would have loved to split this apart, but there are just so many interrelated changes,
it makes little sense and would be a huge effort that would break future git bisect
use because so many intermediate commits would not compile
2016-02-22 15:31:21 -05:00
Paul Davis 85eee3b09d compilable version of WindowProxy 2016-02-22 15:31:21 -05:00
Paul Davis df05e97288 first version of Gtkmm2ext::WindowProxy 2016-02-22 15:31:21 -05:00