- /* GtkCalendar expects month to be in 0-11 range (inclusive) */
- month = g_date_get_month (priv->date) - 1;
- gtk_calendar_select_month (GTK_CALENDAR (priv->calendar),
- CLAMP (month, 0, 11),
- g_date_get_year (priv->date));
- gtk_calendar_select_day (GTK_CALENDAR (priv->calendar),
- g_date_get_day (priv->date));
- }
-
-
- /* popup */
- gtk_date_entry_popup_position(dateentry);
- gtk_widget_show (priv->popup_window);
- gtk_widget_grab_focus (priv->popup_window);
- gtk_grab_add (priv->popup_window);
-
- window = gtk_widget_get_window (priv->popup_window);
-
- g_return_if_fail (priv->grab_keyboard == NULL);
- g_return_if_fail (priv->grab_pointer == NULL);
-
- event_device = gdk_event_get_device (event);
- assoc_device = gdk_device_get_associated_device (event_device);
-
- event_time = gdk_event_get_time (event);
-
- if (gdk_device_get_source (event_device) == GDK_SOURCE_KEYBOARD) {
- keyboard_device = event_device;
- pointer_device = assoc_device;
- } else {
- keyboard_device = assoc_device;
- pointer_device = event_device;
- }
-
- if (keyboard_device != NULL) {
- grab_status = gdk_device_grab (
- keyboard_device,
- window,
- GDK_OWNERSHIP_WINDOW,
- TRUE,
- GDK_KEY_PRESS_MASK |
- GDK_KEY_RELEASE_MASK,
- NULL,
- event_time);
- if (grab_status == GDK_GRAB_SUCCESS) {
- priv->grab_keyboard =
- g_object_ref (keyboard_device);
- }
- }
-
- if (pointer_device != NULL) {
- grab_status = gdk_device_grab (
- pointer_device,
- window,
- GDK_OWNERSHIP_WINDOW,
- TRUE,
- GDK_BUTTON_PRESS_MASK |
- GDK_BUTTON_RELEASE_MASK |
- GDK_POINTER_MOTION_MASK,
- NULL,
- event_time);
- if (grab_status == GDK_GRAB_SUCCESS) {
- priv->grab_pointer =
- g_object_ref (pointer_device);
- } else if (priv->grab_keyboard != NULL) {
- gdk_device_ungrab (
- priv->grab_keyboard,
- event_time);
- g_object_unref (priv->grab_keyboard);
- priv->grab_keyboard = NULL;
- }