static gboolean draw_success_end_wait_callback (CalibArea *area) { on_delete_event (NULL, NULL, area); return FALSE; }
static gboolean on_focus_out_event (GtkWidget *widget, GdkEvent *event, CalibArea *area) { if (area->success) return FALSE; /* If the calibrator window looses focus, simply bail out... */ on_delete_event (widget, NULL, area); return FALSE; }
static gboolean on_key_release_event(GtkWidget *widget, GdkEventKey *event, CalibArea *area) { if (area->success) return FALSE; if (event->type != GDK_KEY_RELEASE) return FALSE; if (event->keyval != GDK_KEY_Escape) return FALSE; on_delete_event (widget, NULL, area); return FALSE; }
static gboolean on_key_release_event(ClutterActor *actor, ClutterKeyEvent *event, CalibArea *area) { if (area->success || event->type != CLUTTER_KEY_RELEASE || event->keyval != CLUTTER_KEY_Escape) { return FALSE; } on_delete_event (area->window, NULL, area); return FALSE; }
static void set_calibration_status (CalibArea *area) { GtkIconTheme *icon_theme; GtkIconInfo *icon_info; GdkRGBA white; icon_theme = gtk_icon_theme_get_default (); icon_info = gtk_icon_theme_lookup_icon (icon_theme, ICON_SUCCESS, ICON_SIZE, GTK_ICON_LOOKUP_USE_BUILTIN); if (icon_info == NULL) { g_warning ("Failed to find icon \"%s\"", ICON_SUCCESS); goto out; } gdk_rgba_parse (&white, "White"); area->icon_success = gtk_icon_info_load_symbolic (icon_info, &white, NULL, NULL, NULL, NULL, NULL); g_object_unref (icon_info); if (!area->icon_success) g_warning ("Failed to load icon \"%s\"", ICON_SUCCESS); out: area->success = finish (&area->calibrator, &area->axis, &area->swap); if (area->success && area->icon_success) { set_success (area); g_timeout_add (END_TIME, (GSourceFunc) draw_success_end_wait_callback, area); } else { on_delete_event (NULL, NULL, area); } }