summaryrefslogtreecommitdiff
path: root/libs/gtkmm2ext
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-07-02 18:18:22 +0200
committerRobin Gareus <robin@gareus.org>2017-07-02 18:19:13 +0200
commitc4fcb12d128857a0eaab7d2093d38fdf4cc641cc (patch)
treeeecea1a71fe0dfa7c93146fcea0191fb98b18333 /libs/gtkmm2ext
parent6f986173f3cfdf043eec34bc360915c94a9b67de (diff)
Add control-focus notifications from bindable widgets.
Diffstat (limited to 'libs/gtkmm2ext')
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/slider_controller.h2
-rw-r--r--libs/gtkmm2ext/slider_controller.cc19
2 files changed, 21 insertions, 0 deletions
diff --git a/libs/gtkmm2ext/gtkmm2ext/slider_controller.h b/libs/gtkmm2ext/gtkmm2ext/slider_controller.h
index e756180eaf..93af41356e 100644
--- a/libs/gtkmm2ext/gtkmm2ext/slider_controller.h
+++ b/libs/gtkmm2ext/gtkmm2ext/slider_controller.h
@@ -54,6 +54,8 @@ class LIBGTKMM2EXT_API SliderController : public Gtkmm2ext::PixFader
protected:
bool on_button_press_event (GdkEventButton *ev);
+ bool on_enter_notify_event (GdkEventCrossing* ev);
+ bool on_leave_notify_event (GdkEventCrossing* ev);
void ctrl_adjusted();
void spin_adjusted();
diff --git a/libs/gtkmm2ext/slider_controller.cc b/libs/gtkmm2ext/slider_controller.cc
index 9b55efbcd1..d70bbcc035 100644
--- a/libs/gtkmm2ext/slider_controller.cc
+++ b/libs/gtkmm2ext/slider_controller.cc
@@ -65,6 +65,25 @@ SliderController::on_button_press_event (GdkEventButton *ev)
return PixFader::on_button_press_event (ev);
}
+bool
+SliderController::on_enter_notify_event (GdkEventCrossing* ev)
+{
+ boost::shared_ptr<PBD::Controllable> c (_binding_proxy.get_controllable ());
+ if (c) {
+ PBD::Controllable::GUIFocusChanged (boost::weak_ptr<PBD::Controllable> (c));
+ }
+ return PixFader::on_enter_notify_event (ev);
+}
+
+bool
+SliderController::on_leave_notify_event (GdkEventCrossing* ev)
+{
+ if (_binding_proxy.get_controllable()) {
+ PBD::Controllable::GUIFocusChanged (boost::weak_ptr<PBD::Controllable> ());
+ }
+ return PixFader::on_leave_notify_event (ev);
+}
+
void
SliderController::ctrl_adjusted ()
{