aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/e-day-view-time-item.c
diff options
context:
space:
mode:
Diffstat (limited to 'calendar/gui/e-day-view-time-item.c')
-rw-r--r--calendar/gui/e-day-view-time-item.c29
1 files changed, 24 insertions, 5 deletions
diff --git a/calendar/gui/e-day-view-time-item.c b/calendar/gui/e-day-view-time-item.c
index 3a8284be03..f337aa06e1 100644
--- a/calendar/gui/e-day-view-time-item.c
+++ b/calendar/gui/e-day-view-time-item.c
@@ -908,6 +908,9 @@ e_day_view_time_item_on_button_press (EDayViewTimeItem *time_item,
GdkWindow *window;
EDayView *day_view;
GnomeCanvas *canvas;
+ GdkGrabStatus grab_status;
+ GdkDevice *event_device;
+ guint32 event_time;
gint row;
day_view = e_day_view_time_item_get_day_view (time_item);
@@ -927,10 +930,20 @@ e_day_view_time_item_on_button_press (EDayViewTimeItem *time_item,
window = gtk_layout_get_bin_window (GTK_LAYOUT (canvas));
- if (gdk_pointer_grab (window, FALSE,
- GDK_POINTER_MOTION_MASK
- | GDK_BUTTON_RELEASE_MASK,
- NULL, NULL, event->button.time) == 0) {
+ event_device = gdk_event_get_device (event);
+ event_time = gdk_event_get_time (event);
+
+ grab_status = gdk_device_grab (
+ event_device,
+ window,
+ GDK_OWNERSHIP_NONE,
+ FALSE,
+ GDK_POINTER_MOTION_MASK |
+ GDK_BUTTON_RELEASE_MASK,
+ NULL,
+ event_time);
+
+ if (grab_status == GDK_GRAB_SUCCESS) {
e_day_view_start_selection (day_view, -1, row);
time_item->priv->dragging_selection = TRUE;
}
@@ -946,7 +959,13 @@ e_day_view_time_item_on_button_release (EDayViewTimeItem *time_item,
g_return_if_fail (day_view != NULL);
if (time_item->priv->dragging_selection) {
- gdk_pointer_ungrab (event->button.time);
+ GdkDevice *event_device;
+ guint32 event_time;
+
+ event_device = gdk_event_get_device (event);
+ event_time = gdk_event_get_time (event);
+ gdk_device_ungrab (event_device, event_time);
+
e_day_view_finish_selection (day_view);
e_day_view_stop_auto_scroll (day_view);
}