@@ -88,9 +88,7 @@ public class Gala.GestureController : Object {
8888
8989 public bool recognizing { get ; private set ; }
9090
91- private ToucheggBackend ? touchegg_backend;
92- private TouchpadBackend ? touchpad_backend;
93- private ScrollBackend ? scroll_backend;
91+ private Gee . List<GestureBackend > backends;
9492
9593 private GestureBackend ? recognizing_backend;
9694 private double gesture_progress;
@@ -106,6 +104,10 @@ public class Gala.GestureController : Object {
106104 Object (action: action, wm: wm, group: group);
107105 }
108106
107+ construct {
108+ backends = new Gee .ArrayList<GestureBackend > ();
109+ }
110+
109111 /**
110112 * Do not call this directly, use {@link RooTarget.add_controller} instead.
111113 */
@@ -121,26 +123,22 @@ public class Gala.GestureController : Object {
121123
122124 public void enable_touchpad (Clutter . Actor actor) {
123125 if (Meta . Util . is_wayland_compositor ()) {
124- touchpad_backend = new TouchpadBackend (actor, group);
125- touchpad_backend. on_gesture_detected. connect (gesture_detected);
126- touchpad_backend. on_begin. connect (gesture_begin);
127- touchpad_backend. on_update. connect (gesture_update);
128- touchpad_backend. on_end. connect (gesture_end);
126+ enable_backend (new TouchpadBackend (actor, group));
129127 }
130128
131- touchegg_backend = ToucheggBackend . get_default (); // Will automatically filter events on wayland
132- touchegg_backend. on_gesture_detected. connect (gesture_detected);
133- touchegg_backend. on_begin. connect (gesture_begin);
134- touchegg_backend. on_update. connect (gesture_update);
135- touchegg_backend. on_end. connect (gesture_end);
129+ enable_backend (ToucheggBackend . get_default ()); // Will automatically filter events on wayland
136130 }
137131
138132 public void enable_scroll (Clutter . Actor actor, Clutter . Orientation orientation) {
139- scroll_backend = new ScrollBackend (actor, orientation, new GestureSettings ());
140- scroll_backend. on_gesture_detected. connect (gesture_detected);
141- scroll_backend. on_begin. connect (gesture_begin);
142- scroll_backend. on_update. connect (gesture_update);
143- scroll_backend. on_end. connect (gesture_end);
133+ enable_backend (new ScrollBackend (actor, orientation, new GestureSettings ()));
134+ }
135+
136+ internal void enable_backend (GestureBackend backend) {
137+ backend. on_gesture_detected. connect (gesture_detected);
138+ backend. on_begin. connect (gesture_begin);
139+ backend. on_update. connect (gesture_update);
140+ backend. on_end. connect (gesture_end);
141+ backends. add (backend);
144142 }
145143
146144 private void prepare () {
0 commit comments