cleanup: Replace signal connections with virtual functions
Inheriting from actors allows to use virtual functions instead of signal connections for multiple cases, so just use them when possible. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/559
This commit is contained in:

committed by
Florian Müllner

parent
320df13b65
commit
55b57421dc
@ -22,12 +22,7 @@ var Slider = GObject.registerClass({
|
||||
accessible_role: Atk.Role.SLIDER
|
||||
});
|
||||
|
||||
this.connect('button-press-event', this._startDragging.bind(this));
|
||||
this.connect('touch-event', this._touchDragging.bind(this));
|
||||
this.connect('scroll-event', this._onScrollEvent.bind(this));
|
||||
this.connect('key-press-event', this.onKeyPressEvent.bind(this));
|
||||
|
||||
this._releaseId = this._motionId = 0;
|
||||
this._releaseId = 0;
|
||||
this._dragging = false;
|
||||
|
||||
this._customAccessible.connect('get-minimum-increment', this._getMinimumIncrement.bind(this));
|
||||
@ -62,8 +57,8 @@ var Slider = GObject.registerClass({
|
||||
cr.$dispose();
|
||||
}
|
||||
|
||||
_startDragging(actor, event) {
|
||||
return this.startDragging(event);
|
||||
vfunc_button_press_event() {
|
||||
return this.startDragging(Clutter.get_current_event());
|
||||
}
|
||||
|
||||
startDragging(event) {
|
||||
@ -83,11 +78,6 @@ var Slider = GObject.registerClass({
|
||||
this._grabbedDevice = device;
|
||||
this._grabbedSequence = sequence;
|
||||
|
||||
if (sequence == null) {
|
||||
this._releaseId = this.connect('button-release-event', this._endDragging.bind(this));
|
||||
this._motionId = this.connect('motion-event', this._motionEvent.bind(this));
|
||||
}
|
||||
|
||||
// We need to emit 'drag-begin' before moving the handle to make
|
||||
// sure that no 'notify::value' signal is emitted before this one.
|
||||
this.emit('drag-begin');
|
||||
@ -105,11 +95,6 @@ var Slider = GObject.registerClass({
|
||||
this._releaseId = 0;
|
||||
}
|
||||
|
||||
if (this._motionId) {
|
||||
this.disconnect(this._motionId);
|
||||
this._motionId = 0;
|
||||
}
|
||||
|
||||
if (this._grabbedSequence != null)
|
||||
this._grabbedDevice.sequence_ungrab(this._grabbedSequence);
|
||||
else
|
||||
@ -124,7 +109,15 @@ var Slider = GObject.registerClass({
|
||||
return Clutter.EVENT_STOP;
|
||||
}
|
||||
|
||||
_touchDragging(actor, event) {
|
||||
vfunc_button_release_event() {
|
||||
if (this._dragging && !this._grabbedSequence)
|
||||
return this._endDragging();
|
||||
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
}
|
||||
|
||||
vfunc_touch_event() {
|
||||
let event = Clutter.get_current_event();
|
||||
let device = event.get_device();
|
||||
let sequence = event.get_event_sequence();
|
||||
|
||||
@ -132,9 +125,9 @@ var Slider = GObject.registerClass({
|
||||
event.type() == Clutter.EventType.TOUCH_BEGIN) {
|
||||
this.startDragging(event);
|
||||
return Clutter.EVENT_STOP;
|
||||
} else if (device.sequence_get_grabbed_actor(sequence) == actor) {
|
||||
} else if (device.sequence_get_grabbed_actor(sequence) == this) {
|
||||
if (event.type() == Clutter.EventType.TOUCH_UPDATE)
|
||||
return this._motionEvent(actor, event);
|
||||
return this._motionEvent(this, event);
|
||||
else if (event.type() == Clutter.EventType.TOUCH_END)
|
||||
return this._endDragging();
|
||||
}
|
||||
@ -165,8 +158,15 @@ var Slider = GObject.registerClass({
|
||||
return Clutter.EVENT_STOP;
|
||||
}
|
||||
|
||||
_onScrollEvent(actor, event) {
|
||||
return this.scroll(event);
|
||||
vfunc_scroll_event() {
|
||||
return this.scroll(Clutter.get_current_event());
|
||||
}
|
||||
|
||||
vfunc_motion_event() {
|
||||
if (this._dragging && !this._grabbedSequence)
|
||||
return this._motionEvent(this, Clutter.get_current_event());
|
||||
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
}
|
||||
|
||||
_motionEvent(actor, event) {
|
||||
@ -176,8 +176,8 @@ var Slider = GObject.registerClass({
|
||||
return Clutter.EVENT_STOP;
|
||||
}
|
||||
|
||||
onKeyPressEvent(actor, event) {
|
||||
let key = event.get_key_symbol();
|
||||
vfunc_key_press_event(keyPressEvent) {
|
||||
let key = keyPressEvent.keyval;
|
||||
if (key == Clutter.KEY_Right || key == Clutter.KEY_Left) {
|
||||
let delta = key == Clutter.KEY_Right ? 0.1 : -0.1;
|
||||
this.emit('drag-begin');
|
||||
|
Reference in New Issue
Block a user