2009-03-24 Alejandro G. Castro <alex@igalia.com>
authorAlejandro G. Castro <alex@igalia.com>
Tue, 24 Mar 2009 11:45:25 +0000 (11:45 +0000)
committerAlejandro G. Castro <alex@igalia.com>
Tue, 24 Mar 2009 11:45:25 +0000 (11:45 +0000)
* src/hildon-pannable-area.c,
(hildon_pannable_area_class_init),
(hildon_pannable_leave_notify_event): Added a handler of the
leave-notify-signal to consider when no motion notify before
leaving.

Fixes: NB#107494 (Items stay selected when clicking and moving
away when inside pannable area)

ChangeLog
src/hildon-pannable-area.c

index fa82b81..1f39ce1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2009-03-24  Alejandro G. Castro  <alex@igalia.com>
+
+       * src/hildon-pannable-area.c,
+       (hildon_pannable_area_class_init),
+       (hildon_pannable_leave_notify_event): Added a handler of the
+       leave-notify-signal to consider when no motion notify before
+       leaving.
+
+       Fixes: NB#107494 (Items stay selected when clicking and moving
+       away when inside pannable area)
+
 2009-03-23  Claudio Saavedra  <csaavedra@igalia.com>
 
        [Release 2.1.54]
index 67bf372..94d1b9d 100644 (file)
@@ -262,6 +262,8 @@ static void hildon_pannable_area_motion_event_scroll (HildonPannableArea *area,
                                                       gdouble x, gdouble y);
 static gboolean hildon_pannable_area_motion_notify_cb (GtkWidget * widget,
                                                        GdkEventMotion * event);
+static gboolean hildon_pannable_leave_notify_event (GtkWidget *widget,
+                                                    GdkEventCrossing *event);
 static gboolean hildon_pannable_area_button_release_cb (GtkWidget * widget,
                                                         GdkEventButton * event);
 static gboolean hildon_pannable_area_scroll_cb (GtkWidget *widget,
@@ -299,6 +301,7 @@ hildon_pannable_area_class_init (HildonPannableAreaClass * klass)
   widget_class->button_press_event = hildon_pannable_area_button_press_cb;
   widget_class->button_release_event = hildon_pannable_area_button_release_cb;
   widget_class->motion_notify_event = hildon_pannable_area_motion_notify_cb;
+  widget_class->leave_notify_event = hildon_pannable_leave_notify_event;
   widget_class->scroll_event = hildon_pannable_area_scroll_cb;
 
   container_class->add = hildon_pannable_area_add;
@@ -2453,6 +2456,23 @@ hildon_pannable_area_motion_notify_cb (GtkWidget * widget,
 }
 
 static gboolean
+hildon_pannable_leave_notify_event (GtkWidget *widget,
+                                    GdkEventCrossing *event)
+{
+  HildonPannableArea *area = HILDON_PANNABLE_AREA (widget);
+  HildonPannableAreaPrivate *priv = area->priv;
+
+  if (priv->last_in) {
+    priv->last_in = FALSE;
+
+    synth_crossing (priv->child, 0, 0, event->x_root,
+                    event->y_root, event->time, FALSE);
+  }
+
+  return FALSE;
+}
+
+static gboolean
 hildon_pannable_area_button_release_cb (GtkWidget * widget,
                                        GdkEventButton * event)
 {