+static int get_default_response(GtkDialog *dlg) {
+ gint ret = GTK_RESPONSE_NONE;
+
+ if (GTK_WINDOW(dlg)->default_widget)
+ /* Use the response of the default widget, if possible */
+ ret = gtk_dialog_get_response_for_widget(dlg, GTK_WINDOW(dlg)->default_widget);
+
+ if (ret == GTK_RESPONSE_NONE) {
+ /* Fall back to finding the first positive response */
+ GList *children, *t;
+ gint bad = GTK_RESPONSE_NONE;
+
+ t = children = gtk_container_get_children(GTK_CONTAINER(dlg->action_area));
+
+ while (t) {
+ GtkWidget *child = t->data;
+
+ ret = gtk_dialog_get_response_for_widget(dlg, child);
+
+ if (ret == GTK_RESPONSE_ACCEPT ||
+ ret == GTK_RESPONSE_OK ||
+ ret == GTK_RESPONSE_YES ||
+ ret == GTK_RESPONSE_APPLY)
+ break;
+
+ if (ret != GTK_RESPONSE_NONE && bad == GTK_RESPONSE_NONE)
+ bad = ret;
+
+ t = t->next;
+ }
+
+ g_list_free (children);
+
+ /* Fall back to finding the first negative response */
+ if (ret == GTK_RESPONSE_NONE)
+ ret = bad;
+ }
+
+ return ret;
+}
+