[gnome-shell] Fix dragging of App Well and Places icons
- From: Dan Winship <danw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] Fix dragging of App Well and Places icons
- Date: Wed, 24 Mar 2010 17:58:09 +0000 (UTC)
commit a8fa8a498a81b15435d8382e6d5094581221fd47
Author: Dan Winship <danw gnome org>
Date: Wed Mar 24 13:27:21 2010 -0400
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.
js/ui/appDisplay.js | 2 +-
js/ui/placeDisplay.js | 2 +-
src/st/st-clickable.c | 20 +++++++++++++++++++-
3 files changed, 21 insertions(+), 3 deletions(-)
---
diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
index a8f878e..6b88232 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 99aecec..cd9167f 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 2ff8758..79192cf 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;
@@ -278,6 +282,20 @@ st_clickable_class_init (StClickableClass *klass)
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
*
* This property tracks whether the button should have a "pressed in"
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]