Prefer testing the session instead of using a global variable
[ardour.git] / gtk2_ardour / panner_interface.cc
index 09cf29dfd62757718e1c54cb3dbc580ed0008a08..e0dfb359196974ad784642ffd3cd15b53985387e 100644 (file)
 #include <gtkmm.h>
 #include "gtkmm2ext/keyboard.h"
 #include "gtkmm2ext/persistent_tooltip.h"
+
+#include "pbd/controllable.h"
+
 #include "panner_interface.h"
 #include "panner_editor.h"
-#include "global_signals.h"
 
-#include "i18n.h"
+#include "pbd/i18n.h"
 
 using namespace std;
 using namespace Gtk;
@@ -34,15 +36,16 @@ using namespace Gtkmm2ext;
 PannerInterface::PannerInterface (boost::shared_ptr<Panner> p)
        : _panner (p)
        , _tooltip (this)
+       , _send_mode (false)
        , _editor (0)
 {
-        set_flags (Gtk::CAN_FOCUS);
+       set_flags (Gtk::CAN_FOCUS);
 
-        add_events (Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK|
-                    Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|
-                    Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|
-                    Gdk::SCROLL_MASK|
-                    Gdk::POINTER_MOTION_MASK);
+       add_events (Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK|
+                   Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|
+                   Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|
+                   Gdk::SCROLL_MASK|
+                   Gdk::POINTER_MOTION_MASK);
 
 }
 
@@ -56,6 +59,10 @@ PannerInterface::on_enter_notify_event (GdkEventCrossing *)
 {
        grab_focus ();
        Keyboard::magic_widget_grab_focus ();
+
+       if (!proxy_controllable ().expired ()) {
+               PBD::Controllable::GUIFocusChanged (proxy_controllable ());
+       }
        return false;
 }
 
@@ -63,6 +70,9 @@ bool
 PannerInterface::on_leave_notify_event (GdkEventCrossing *)
 {
        Keyboard::magic_widget_drop_focus ();
+       if (!proxy_controllable ().expired ()) {
+               PBD::Controllable::GUIFocusChanged (boost::weak_ptr<PBD::Controllable> ());
+       }
        return false;
 }
 
@@ -109,8 +119,16 @@ PannerInterface::edit ()
        _editor->show ();
 }
 
+void
+PannerInterface::set_send_drawing_mode(bool onoff) {
+       if (_send_mode != onoff) {
+               _send_mode = onoff;
+               queue_draw ();
+       }
+}
+
 PannerPersistentTooltip::PannerPersistentTooltip (Gtk::Widget* w)
-       : PersistentTooltip (w)
+       : PersistentTooltip (w, true)
        , _dragging (false)
 {