summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2015-08-04 14:30:41 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2016-02-22 15:31:23 -0500
commit00933950b7f21807fc4edf615876060f85882474 (patch)
tree33544e3960d4b3f6bb05915bac17516d76f9c802
parent2c6799f247afa3b77f0e3d878666409fd7f728bc (diff)
small rationalization of naming and code for managing plugin GUI visibility
-rw-r--r--gtk2_ardour/processor_box.cc13
-rw-r--r--gtk2_ardour/processor_box.h2
-rw-r--r--gtk2_ardour/window_manager.cc16
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/window_proxy.h3
-rw-r--r--libs/gtkmm2ext/window_proxy.cc12
5 files changed, 34 insertions, 12 deletions
diff --git a/gtk2_ardour/processor_box.cc b/gtk2_ardour/processor_box.cc
index abfae95543..b54a7817c8 100644
--- a/gtk2_ardour/processor_box.cc
+++ b/gtk2_ardour/processor_box.cc
@@ -3087,7 +3087,7 @@ ProcessorBox::edit_processor (boost::shared_ptr<Processor> processor)
if (proxy) {
proxy->set_custom_ui_mode (true);
- proxy->toggle ();
+ proxy->show_the_right_window ();
}
}
@@ -3105,7 +3105,7 @@ ProcessorBox::generic_edit_processor (boost::shared_ptr<Processor> processor)
if (proxy) {
proxy->set_custom_ui_mode (false);
- proxy->toggle ();
+ proxy->show_the_right_window ();
}
}
@@ -3371,13 +3371,16 @@ ProcessorWindowProxy::get (bool create)
}
void
-ProcessorWindowProxy::toggle ()
+ProcessorWindowProxy::show_the_right_window ()
{
if (_window && (is_custom != want_custom)) {
/* drop existing window - wrong type */
drop_window ();
+ get (true);
+ setup ();
+ assert (_window);
+ is_custom = want_custom;
}
- is_custom = want_custom;
- WM::ProxyBase::toggle ();
+ toggle ();
}
diff --git a/gtk2_ardour/processor_box.h b/gtk2_ardour/processor_box.h
index a30b05b561..151788ec24 100644
--- a/gtk2_ardour/processor_box.h
+++ b/gtk2_ardour/processor_box.h
@@ -90,7 +90,7 @@ class ProcessorWindowProxy : public WM::ProxyBase
}
ARDOUR::SessionHandlePtr* session_handle();
- void toggle();
+ void show_the_right_window ();
void set_custom_ui_mode(bool use_custom) { want_custom = use_custom; }
int set_state (const XMLNode&, int);
diff --git a/gtk2_ardour/window_manager.cc b/gtk2_ardour/window_manager.cc
index e5913c59e8..eadfc196c3 100644
--- a/gtk2_ardour/window_manager.cc
+++ b/gtk2_ardour/window_manager.cc
@@ -89,8 +89,20 @@ Manager::remove (const ProxyBase* info)
void
Manager::toggle_window (ProxyBase* proxy)
{
- if (proxy) {
- proxy->toggle ();
+
+ Glib::RefPtr<Gtk::Action> act = ARDOUR_UI::instance()->global_actions.find_action (string_compose ("%1/%2", window_actions->get_name(), proxy->action_name()));
+ if (!act) {
+ return;
+ }
+ Glib::RefPtr<Gtk::ToggleAction> tact = Glib::RefPtr<Gtk::ToggleAction>::cast_dynamic (act);
+ if (!tact) {
+ return;
+ }
+
+ if (tact->get_active()) {
+ proxy->present ();
+ } else {
+ proxy->hide ();
}
}
diff --git a/libs/gtkmm2ext/gtkmm2ext/window_proxy.h b/libs/gtkmm2ext/gtkmm2ext/window_proxy.h
index a0026d9f97..e2f4d70951 100644
--- a/libs/gtkmm2ext/gtkmm2ext/window_proxy.h
+++ b/libs/gtkmm2ext/gtkmm2ext/window_proxy.h
@@ -66,8 +66,6 @@ class LIBGTKMM2EXT_API WindowProxy : public PBD::StatefulDestructible, public vi
virtual Gtk::Window* get (bool create = false) = 0;
- virtual void toggle ();
-
virtual int set_state (const XMLNode&, int version);
virtual XMLNode& get_state ();
@@ -93,6 +91,7 @@ class LIBGTKMM2EXT_API WindowProxy : public PBD::StatefulDestructible, public vi
virtual bool delete_event_handler (GdkEventAny *ev);
virtual void setup ();
+ void toggle ();
};
}
diff --git a/libs/gtkmm2ext/window_proxy.cc b/libs/gtkmm2ext/window_proxy.cc
index 6f20eaa8d5..d7670cb89e 100644
--- a/libs/gtkmm2ext/window_proxy.cc
+++ b/libs/gtkmm2ext/window_proxy.cc
@@ -22,6 +22,7 @@
#include "pbd/convert.h"
#include "pbd/xml++.h"
+#include "pbd/stacktrace.h"
#include "gtkmm2ext/window_proxy.h"
#include "gtkmm2ext/visibility_tracker.h"
@@ -139,6 +140,7 @@ WindowProxy::toggle()
{
if (!_window) {
(void) get (true);
+ setup ();
assert (_window);
/* XXX this is a hack - the window object should really
ensure its components are all visible. sigh.
@@ -146,12 +148,13 @@ WindowProxy::toggle()
_window->show_all();
/* we'd like to just call this and nothing else */
_window->present ();
-
} else {
if (_window->is_mapped()) {
save_pos_and_size();
}
+
vistracker->cycle_visibility ();
+
if (_window->is_mapped()) {
if (_width != -1 && _height != -1) {
_window->set_default_size (_width, _height);
@@ -279,7 +282,12 @@ WindowProxy::hide ()
bool
WindowProxy::delete_event_handler (GdkEventAny* /*ev*/)
{
- hide();
+ if (_action) {
+ _action->activate ();
+ } else {
+ hide();
+ }
+
return true;
}