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