diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js index a8f878efa..6b882320c 100644 --- a/js/ui/appDisplay.js +++ b/js/ui/appDisplay.js @@ -451,7 +451,7 @@ AppWellIcon.prototype = { _onHoverChange: function(actor) { let hover = this.actor.hover; if (!hover) { - if (this.actor.pressed && this._dragStartX != null) { + if (this.actor.held && this._dragStartX != null) { this.actor.fake_release(); this._draggable.startDrag(this._dragStartX, this._dragStartY, global.get_current_time()); diff --git a/js/ui/placeDisplay.js b/js/ui/placeDisplay.js index 99aecec48..cd9167fee 100644 --- a/js/ui/placeDisplay.js +++ b/js/ui/placeDisplay.js @@ -476,7 +476,7 @@ DashPlaceDisplayItem.prototype = { _onHoverChanged: function(button) { let hover = button.hover; if (!hover) { - if (button.pressed && this._dragStartX != null) { + if (button.held && this._dragStartX != null) { button.fake_release(); this._draggable.startDrag(this._dragStartX, this._dragStartY, global.get_current_time()); diff --git a/src/st/st-clickable.c b/src/st/st-clickable.c index 2ff875817..79192cfc5 100644 --- a/src/st/st-clickable.c +++ b/src/st/st-clickable.c @@ -32,7 +32,8 @@ enum { PROP_0, PROP_ACTIVE, - PROP_PRESSED, + PROP_HELD, + PROP_PRESSED }; static guint st_clickable_signals [LAST_SIGNAL] = { 0 }; @@ -223,6 +224,9 @@ st_clickable_get_property (GObject *object, case PROP_ACTIVE: g_value_set_boolean (value, self->priv->active); break; + case PROP_HELD: + g_value_set_boolean (value, self->priv->held); + break; case PROP_PRESSED: g_value_set_boolean (value, self->priv->pressed); break; @@ -277,6 +281,20 @@ st_clickable_class_init (StClickableClass *klass) FALSE, G_PARAM_READWRITE)); + /** + * StClickable:held + * + * This property tracks whether the button has the pointer grabbed, + * whether or not the pointer is currently hovering over the button. + */ + g_object_class_install_property (gobject_class, + PROP_HELD, + g_param_spec_boolean ("held", + "Held state", + "Whether the mouse button is currently pressed", + FALSE, + G_PARAM_READABLE)); + /** * StClickable:pressed *