| 72 | } |
| 73 | |
| 74 | int ghb_dialog_run (GtkDialog *dialog) |
| 75 | { |
| 76 | RunInfo ri = { NULL, GTK_RESPONSE_NONE, NULL, FALSE }; |
| 77 | gboolean was_modal; |
| 78 | gulong response_handler; |
| 79 | gulong unmap_handler; |
| 80 | gulong destroy_handler; |
| 81 | |
| 82 | g_return_val_if_fail(GTK_IS_DIALOG(dialog), -1); |
| 83 | |
| 84 | g_object_ref(dialog); |
| 85 | |
| 86 | was_modal = gtk_window_get_modal(GTK_WINDOW(dialog)); |
| 87 | if (!was_modal) |
| 88 | gtk_window_set_modal(GTK_WINDOW(dialog), TRUE); |
| 89 | |
| 90 | if (!gtk_widget_get_visible(GTK_WIDGET(dialog))) |
| 91 | gtk_widget_set_visible(GTK_WIDGET(dialog), TRUE); |
| 92 | |
| 93 | response_handler = g_signal_connect(dialog, |
| 94 | "response", |
| 95 | G_CALLBACK(run_response_handler), |
| 96 | &ri); |
| 97 | |
| 98 | unmap_handler = g_signal_connect(dialog, |
| 99 | "unmap", |
| 100 | G_CALLBACK(run_unmap_handler), |
| 101 | &ri); |
| 102 | |
| 103 | destroy_handler = g_signal_connect(dialog, |
| 104 | "destroy", |
| 105 | G_CALLBACK(run_destroy_handler), |
| 106 | &ri); |
| 107 | |
| 108 | ri.loop = g_main_loop_new(NULL, FALSE); |
| 109 | |
| 110 | g_main_loop_run(ri.loop); |
| 111 | |
| 112 | g_main_loop_unref(ri.loop); |
| 113 | |
| 114 | ri.loop = NULL; |
| 115 | |
| 116 | if (!ri.destroyed) |
| 117 | { |
| 118 | if (!was_modal) |
| 119 | gtk_window_set_modal(GTK_WINDOW(dialog), FALSE); |
| 120 | |
| 121 | g_signal_handler_disconnect(dialog, response_handler); |
| 122 | g_signal_handler_disconnect(dialog, unmap_handler); |
| 123 | g_signal_handler_disconnect(dialog, destroy_handler); |
| 124 | } |
| 125 | |
| 126 | g_object_unref(dialog); |
| 127 | |
| 128 | return ri.response_id; |
| 129 | } |
| 130 | |
| 131 | void |
no outgoing calls
no test coverage detected