Prefer testing the session instead of using a global variable
[ardour.git] / gtk2_ardour / panner_interface.cc
index 0091cf592a1915d6655327efe24db99f02ab00d0..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;
@@ -37,13 +39,13 @@ PannerInterface::PannerInterface (boost::shared_ptr<Panner> p)
        , _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);
 
 }
 
@@ -57,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;
 }
 
@@ -64,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;
 }