Fix dragging of App Well and Places icons
The hover rewrite added a freeze/thaw_notify to st_clickable_leave_event() (to match the one already in st_clickable_enter_event()), which broke code in two places that assumed "pressed" would still be TRUE when "hover" changed to FALSE. Fix that by exposing the "held" property as well.
This commit is contained in:
parent
5635797cb9
commit
a8fa8a498a
@ -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());
|
||||
|
@ -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());
|
||||
|
@ -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
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user