diff options
author | David Robillard <d@drobilla.net> | 2008-01-19 05:06:33 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2008-01-19 05:06:33 +0000 |
commit | 7295d8e9f675f4441ab626c0655b2d2e6663e47e (patch) | |
tree | 50a1bf7d6b736c02591de3904909dda5cdd625d4 /libs/gtkmm2ext/binding_proxy.cc | |
parent | 4ca1fe7993adf63ea3f35958f63dd20ee546e7ae (diff) |
Merge with 2.0-ongoing R2943.
git-svn-id: svn://localhost/ardour2/branches/3.0@2944 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/gtkmm2ext/binding_proxy.cc')
-rw-r--r-- | libs/gtkmm2ext/binding_proxy.cc | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/libs/gtkmm2ext/binding_proxy.cc b/libs/gtkmm2ext/binding_proxy.cc index 3a2f5bbbc8..90f95f82ef 100644 --- a/libs/gtkmm2ext/binding_proxy.cc +++ b/libs/gtkmm2ext/binding_proxy.cc @@ -32,13 +32,19 @@ using namespace std; using namespace PBD; BindingProxy::BindingProxy (Controllable& c) - : prompter (Gtk::WIN_POS_MOUSE, 30000, false), + : prompter (0), controllable (c), bind_button (2), bind_statemask (Gdk::CONTROL_MASK) { - prompter.signal_unmap_event().connect (mem_fun (*this, &BindingProxy::prompter_hiding)); +} + +BindingProxy::~BindingProxy () +{ + if (prompter) { + delete prompter; + } } void @@ -61,8 +67,12 @@ BindingProxy::button_press_handler (GdkEventButton *ev) if ((ev->state & bind_statemask) && ev->button == bind_button) { if (Controllable::StartLearning (&controllable)) { string prompt = _("operate controller now"); - prompter.set_text (prompt); - prompter.touch (); // shows popup + if (prompter == 0) { + prompter = new PopUp (Gtk::WIN_POS_MOUSE, 30000, false); + prompter->signal_unmap_event().connect (mem_fun (*this, &BindingProxy::prompter_hiding)); + } + prompter->set_text (prompt); + prompter->touch (); // shows popup learning_connection = controllable.LearningFinished.connect (mem_fun (*this, &BindingProxy::learning_finished)); } return true; @@ -75,7 +85,9 @@ void BindingProxy::learning_finished () { learning_connection.disconnect (); - prompter.touch (); // hides popup + if (prompter) { + prompter->touch (); // hides popup + } } |