[gthumb: 48/57] set the gio overwrite dialog transient for the main window.



commit 2af346ecd1a5dc18b69703691279d2f598541fe8
Author: Paolo Bacchilega <paobac src gnome org>
Date:   Fri Jun 18 16:32:37 2010 +0200

    set the gio overwrite dialog transient for the main window.

 extensions/burn_disc/gth-burn-task.c               |    8 ++--
 extensions/catalogs/gth-organize-task.c            |    2 +-
 extensions/facebook/dlg-export-to-facebook.c       |   12 ++++----
 extensions/facebook/facebook-authentication.c      |   16 +++++-----
 extensions/file_manager/gth-copy-task.c            |    7 ++--
 extensions/file_manager/gth-duplicate-task.c       |    7 ++--
 extensions/flicker/dlg-export-to-flickr.c          |   10 +++---
 extensions/flicker/dlg-import-from-flickr.c        |   11 ++++---
 extensions/flicker/flickr-authentication.c         |   16 +++++-----
 extensions/image_rotation/gth-transform-task.c     |    4 +-
 extensions/oauth/oauth-authentication.c            |   19 ++++++------
 extensions/photobucket/dlg-export-to-photobucket.c |   12 ++++----
 extensions/picasaweb/dlg-export-to-picasaweb.c     |   30 +++++++++----------
 extensions/picasaweb/dlg-import-from-picasaweb.c   |   20 ++++++------
 extensions/webalbums/gth-web-exporter.c            |    7 ++--
 gthumb/gio-utils.c                                 |    9 +++--
 gthumb/gth-marshal.list                            |    1 +
 gthumb/gth-pixbuf-list-task.c                      |   15 +++++----
 gthumb/gth-progress-dialog.c                       |    9 ++++--
 gthumb/gth-task.c                                  |   14 +++++----
 gthumb/gth-task.h                                  |    9 +++--
 gthumb/typedefs.h                                  |    3 +-
 22 files changed, 127 insertions(+), 114 deletions(-)
---
diff --git a/extensions/burn_disc/gth-burn-task.c b/extensions/burn_disc/gth-burn-task.c
index 8985d6b..91ef613 100644
--- a/extensions/burn_disc/gth-burn-task.c
+++ b/extensions/burn_disc/gth-burn-task.c
@@ -250,7 +250,7 @@ burn_content_to_disc (GthBurnTask *task)
 	gtk_widget_show (options);
 	brasero_burn_options_add_options (BRASERO_BURN_OPTIONS (dialog), options);
 
-	gth_task_dialog (GTH_TASK (task), TRUE);
+	gth_task_dialog (GTH_TASK (task), TRUE, dialog);
 	result = gtk_dialog_run (GTK_DIALOG (dialog));
 	gtk_widget_destroy (dialog);
 
@@ -350,7 +350,7 @@ source_dialog_response_cb (GtkDialog   *dialog,
 			   GthBurnTask *task)
 {
 	gtk_widget_hide (task->priv->dialog);
-	gth_task_dialog (GTH_TASK (task), FALSE);
+	gth_task_dialog (GTH_TASK (task), FALSE, NULL);
 
 	if (response == GTK_RESPONSE_OK) {
 		if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (_gtk_builder_get_widget (task->priv->builder, "selection_radiobutton")))) {
@@ -387,8 +387,6 @@ gth_burn_task_exec (GthTask *base)
 {
 	GthBurnTask *task = (GthBurnTask *) base;
 
-	gth_task_dialog (GTH_TASK (task), TRUE);
-
 	task->priv->builder = _gtk_builder_new_from_file ("burn-source-selector.ui", "burn_disc");
 	task->priv->dialog = gtk_dialog_new_with_buttons (_("Write to Disc"),
 							  GTK_WINDOW (task->priv->browser),
@@ -402,6 +400,8 @@ gth_burn_task_exec (GthTask *base)
 	else if ((task->priv->selected_files != NULL) && (task->priv->selected_files->next != NULL))
 		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (_gtk_builder_get_widget (task->priv->builder, "selection_radiobutton")), TRUE);
 
+	gth_task_dialog (GTH_TASK (task), TRUE, task->priv->dialog);
+
 	g_signal_connect (task->priv->dialog,
 			  "response",
 			  G_CALLBACK (source_dialog_response_cb),
diff --git a/extensions/catalogs/gth-organize-task.c b/extensions/catalogs/gth-organize-task.c
index 6c43532..3b07fbd 100644
--- a/extensions/catalogs/gth-organize-task.c
+++ b/extensions/catalogs/gth-organize-task.c
@@ -375,7 +375,7 @@ gth_organize_task_exec (GthTask *base)
 	gtk_window_set_modal (GTK_WINDOW (GET_WIDGET ("organize_files_dialog")), TRUE);
 	gtk_widget_show (GET_WIDGET ("organize_files_dialog"));
 
-	gth_task_dialog (base, TRUE);
+	gth_task_dialog (base, TRUE, GET_WIDGET ("organize_files_dialog"));
 }
 
 
diff --git a/extensions/facebook/dlg-export-to-facebook.c b/extensions/facebook/dlg-export-to-facebook.c
index 869c225..1de57be 100644
--- a/extensions/facebook/dlg-export-to-facebook.c
+++ b/extensions/facebook/dlg-export-to-facebook.c
@@ -116,7 +116,7 @@ completed_messagedialog_response_cb (GtkDialog *dialog,
 
 			if ((url != NULL) && ! gtk_show_uri (gtk_widget_get_screen (GTK_WIDGET (dialog)), url, 0, &error)) {
 				if (data->conn != NULL)
-					gth_task_dialog (GTH_TASK (data->conn), TRUE);
+					gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 				_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->browser), _("Could not connect to the server"), &error);
 			}
 
@@ -138,7 +138,7 @@ export_completed_with_success (DialogData *data)
 	GtkBuilder *builder;
 	GtkWidget  *dialog;
 
-	gth_task_dialog (GTH_TASK (data->conn), TRUE);
+	gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 
 	builder = _gtk_builder_new_from_file ("facebook-export-completed.ui", "facebook");
 	dialog = _gtk_builder_get_widget (builder, "completed_messagedialog");
@@ -196,7 +196,7 @@ export_dialog_response_cb (GtkDialog *dialog,
 			GList       *file_list;
 
 			gtk_widget_hide (data->dialog);
-			gth_task_dialog (GTH_TASK (data->conn), FALSE);
+			gth_task_dialog (GTH_TASK (data->conn), FALSE, NULL);
 
 			data->album = NULL;
 			if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (GET_WIDGET ("album_combobox")), &iter)) {
@@ -299,7 +299,7 @@ get_albums_ready_cb (GObject      *source_object,
 	data->albums = facebook_service_get_albums_finish (FACEBOOK_SERVICE (source_object), res, &error);
 	if (error != NULL) {
 		if (data->conn != NULL)
-			gth_task_dialog (GTH_TASK (data->conn), TRUE);
+			gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 		_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->browser), _("Could not connect to the server"), &error);
 		gtk_dialog_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_DELETE_EVENT);
 		return;
@@ -308,7 +308,7 @@ get_albums_ready_cb (GObject      *source_object,
 	gtk_widget_set_sensitive (GET_WIDGET ("upload_button"), TRUE);
 	update_album_list (data);
 
-	gth_task_dialog (GTH_TASK (data->conn), TRUE);
+	gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 	gtk_window_set_transient_for (GTK_WINDOW (data->dialog), GTK_WINDOW (data->browser));
 	gtk_window_set_modal (GTK_WINDOW (data->dialog), FALSE);
 	gtk_window_present (GTK_WINDOW (data->dialog));
@@ -375,7 +375,7 @@ create_album_ready_cb (GObject      *source_object,
 	album = facebook_service_create_album_finish (data->service, result, &error);
 	if (error != NULL) {
 		if (data->conn != NULL)
-			gth_task_dialog (GTH_TASK (data->conn), TRUE);
+			gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not create the album"), &error);
 		return;
 	}
diff --git a/extensions/facebook/facebook-authentication.c b/extensions/facebook/facebook-authentication.c
index 380cc2f..1729528 100644
--- a/extensions/facebook/facebook-authentication.c
+++ b/extensions/facebook/facebook-authentication.c
@@ -214,9 +214,6 @@ show_authentication_error_dialog (FacebookAuthentication  *self,
 		return;
 	}
 
-	if (self->priv->conn != NULL)
-		gth_task_dialog (GTH_TASK (self->priv->conn), TRUE);
-
 	dialog = _gtk_message_dialog_new (GTK_WINDOW (self->priv->browser),
 			             GTK_DIALOG_MODAL,
 				     GTK_STOCK_DIALOG_ERROR,
@@ -225,6 +222,9 @@ show_authentication_error_dialog (FacebookAuthentication  *self,
 				     _("Choose _Account..."), FACEBOOK_AUTHENTICATION_RESPONSE_CHOOSE_ACCOUNT,
 				     GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
 				     NULL);
+	if (self->priv->conn != NULL)
+		gth_task_dialog (GTH_TASK (self->priv->conn), TRUE, dialog);
+
 	g_signal_connect (dialog,
 			  "response",
 			  G_CALLBACK (authentication_error_dialog_response_cb),
@@ -467,7 +467,7 @@ complete_authorization_messagedialog_response_cb (GtkDialog *dialog,
 
 	case GTK_RESPONSE_OK:
 		gtk_widget_destroy (GTK_WIDGET (dialog));
-		gth_task_dialog (GTH_TASK (self->priv->conn), FALSE);
+		gth_task_dialog (GTH_TASK (self->priv->conn), FALSE, NULL);
 		facebook_connection_get_session (self->priv->conn,
 						 self->priv->cancellable,
 						 get_session_ready_cb,
@@ -488,7 +488,7 @@ complete_authorization (FacebookAuthentication *self)
 	char       *text;
 	char       *secondary_text;
 
-	gth_task_dialog (GTH_TASK (self->priv->conn), TRUE);
+	gth_task_dialog (GTH_TASK (self->priv->conn), TRUE, NULL);
 
 	builder = _gtk_builder_new_from_file ("facebook-complete-authorization.ui", "facebook");
 	dialog = _gtk_builder_get_widget (builder, "complete_authorization_messagedialog");
@@ -563,7 +563,7 @@ ask_authorization (FacebookAuthentication *self)
 	char       *text;
 	char       *secondary_text;
 
-	gth_task_dialog (GTH_TASK (self->priv->conn), TRUE);
+	gth_task_dialog (GTH_TASK (self->priv->conn), TRUE, NULL);
 
 	builder = _gtk_builder_new_from_file ("facebook-ask-authorization.ui", "facebook");
 	dialog = _gtk_builder_get_widget (builder, "ask_authorization_messagedialog");
@@ -653,7 +653,7 @@ show_choose_account_dialog (FacebookAuthentication *self)
 {
 	GtkWidget *dialog;
 
-	gth_task_dialog (GTH_TASK (self->priv->conn), TRUE);
+	gth_task_dialog (GTH_TASK (self->priv->conn), TRUE, NULL);
 	dialog = facebook_account_chooser_dialog_new (self->priv->accounts, self->priv->account);
 	g_signal_connect (dialog,
 			  "response",
@@ -671,7 +671,7 @@ void
 facebook_authentication_auto_connect (FacebookAuthentication *self)
 {
 	gtk_widget_hide (self->priv->dialog);
-	gth_task_dialog (GTH_TASK (self->priv->conn), FALSE);
+	gth_task_dialog (GTH_TASK (self->priv->conn), FALSE, NULL);
 
 	if (self->priv->accounts != NULL) {
 		if (self->priv->account != NULL) {
diff --git a/extensions/file_manager/gth-copy-task.c b/extensions/file_manager/gth-copy-task.c
index 69c717d..24e546d 100644
--- a/extensions/file_manager/gth-copy-task.c
+++ b/extensions/file_manager/gth-copy-task.c
@@ -60,12 +60,13 @@ copy_done_cb (GObject    *object,
 
 
 static void
-copy_dialog_cb (gboolean  opened,
-		gpointer  user_data)
+copy_dialog_cb (gboolean   opened,
+		GtkWidget *dialog,
+		gpointer   user_data)
 {
 	GthCopyTask *self = user_data;
 
-	gth_task_dialog (GTH_TASK (self), opened);
+	gth_task_dialog (GTH_TASK (self), opened, dialog);
 }
 
 
diff --git a/extensions/file_manager/gth-duplicate-task.c b/extensions/file_manager/gth-duplicate-task.c
index aefec28..1d13c82 100644
--- a/extensions/file_manager/gth-duplicate-task.c
+++ b/extensions/file_manager/gth-duplicate-task.c
@@ -89,12 +89,13 @@ copy_progress_cb (GObject    *object,
 
 
 static void
-copy_dialog_cb (gboolean  opened,
-		gpointer  user_data)
+copy_dialog_cb (gboolean   opened,
+		GtkWidget *dialog,
+		gpointer   user_data)
 {
 	GthDuplicateTask *self = user_data;
 
-	gth_task_dialog (GTH_TASK (self), opened);
+	gth_task_dialog (GTH_TASK (self), opened, dialog);
 }
 
 
diff --git a/extensions/flicker/dlg-export-to-flickr.c b/extensions/flicker/dlg-export-to-flickr.c
index b4affb1..9290302 100644
--- a/extensions/flicker/dlg-export-to-flickr.c
+++ b/extensions/flicker/dlg-export-to-flickr.c
@@ -132,7 +132,7 @@ completed_messagedialog_response_cb (GtkDialog *dialog,
 
 			if ((url != NULL) && ! gtk_show_uri (gtk_widget_get_screen (GTK_WIDGET (dialog)), url, 0, &error)) {
 				if (data->conn != NULL)
-					gth_task_dialog (GTH_TASK (data->conn), TRUE);
+					gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 				_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->browser), _("Could not connect to the server"), &error);
 			}
 			gtk_dialog_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_DELETE_EVENT);
@@ -153,7 +153,7 @@ export_completed_with_success (DialogData *data)
 	GtkBuilder *builder;
 	GtkWidget  *dialog;
 
-	gth_task_dialog (GTH_TASK (data->conn), TRUE);
+	gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 
 	builder = _gtk_builder_new_from_file ("flicker-export-completed.ui", "flicker");
 	dialog = _gtk_builder_get_widget (builder, "completed_messagedialog");
@@ -293,7 +293,7 @@ export_dialog_response_cb (GtkDialog *dialog,
 			GList *file_list;
 
 			gtk_widget_hide (data->dialog);
-			gth_task_dialog (GTH_TASK (data->conn), FALSE);
+			gth_task_dialog (GTH_TASK (data->conn), FALSE, NULL);
 
 			data->photoset = NULL;
 			photoset_title = gtk_combo_box_get_active_text (GTK_COMBO_BOX (GET_WIDGET ("photoset_comboboxentry")));
@@ -386,7 +386,7 @@ photoset_list_ready_cb (GObject      *source_object,
 	data->photosets = flickr_service_list_photosets_finish (FLICKR_SERVICE (source_object), res, &error);
 	if (error != NULL) {
 		if (data->conn != NULL)
-			gth_task_dialog (GTH_TASK (data->conn), TRUE);
+			gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 		_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->browser), _("Could not connect to the server"), &error);
 		gtk_dialog_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_DELETE_EVENT);
 		return;
@@ -413,7 +413,7 @@ photoset_list_ready_cb (GObject      *source_object,
 
 	gtk_widget_set_sensitive (GET_WIDGET ("upload_button"), TRUE);
 
-	gth_task_dialog (GTH_TASK (data->conn), TRUE);
+	gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 
 	gtk_window_set_transient_for (GTK_WINDOW (data->dialog), GTK_WINDOW (data->browser));
 	gtk_window_set_modal (GTK_WINDOW (data->dialog), FALSE);
diff --git a/extensions/flicker/dlg-import-from-flickr.c b/extensions/flicker/dlg-import-from-flickr.c
index 2284d05..4066800 100644
--- a/extensions/flicker/dlg-import-from-flickr.c
+++ b/extensions/flicker/dlg-import-from-flickr.c
@@ -235,7 +235,7 @@ photoset_list_ready_cb (GObject      *source_object,
 	data->photosets = flickr_service_list_photosets_finish (FLICKR_SERVICE (source_object), res, &error);
 	if (error != NULL) {
 		if (data->conn != NULL)
-			gth_task_dialog (GTH_TASK (data->conn), TRUE);
+			gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 		_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->browser), _("Could not connect to the server"), &error);
 		gtk_widget_destroy (data->dialog);
 		return;
@@ -260,7 +260,7 @@ photoset_list_ready_cb (GObject      *source_object,
 		g_free (n_photos);
 	}
 
-	gth_task_dialog (GTH_TASK (data->conn), TRUE);
+	gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 
 	gtk_window_set_transient_for (GTK_WINDOW (data->dialog), GTK_WINDOW (data->browser));
 	gtk_window_set_modal (GTK_WINDOW (data->dialog), FALSE);
@@ -351,12 +351,13 @@ list_photos_ready_cb (GObject      *source_object,
 	GList      *list;
 	GList      *scan;
 
-	gth_task_dialog (GTH_TASK (data->conn), TRUE);
+	gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
+
 	_g_object_list_unref (data->photos);
 	data->photos = flickr_service_list_photos_finish (data->service, result, &error);
 	if (error != NULL) {
 		if (data->conn != NULL)
-			gth_task_dialog (GTH_TASK (data->conn), TRUE);
+			gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not get the photo list"), &error);
 		gtk_widget_destroy (data->dialog);
 		return;
@@ -400,7 +401,7 @@ photoset_combobox_changed_cb (GtkComboBox *widget,
 			    PHOTOSET_DATA_COLUMN, &data->photoset,
 			    -1);
 
-	gth_task_dialog (GTH_TASK (data->conn), FALSE);
+	gth_task_dialog (GTH_TASK (data->conn), FALSE, NULL);
 	flickr_service_list_photos (data->service,
 				    data->photoset,
 				    "original_format, url_sq, url_t, url_s, url_m, url_o",
diff --git a/extensions/flicker/flickr-authentication.c b/extensions/flicker/flickr-authentication.c
index fb46ca4..c71d854 100644
--- a/extensions/flicker/flickr-authentication.c
+++ b/extensions/flicker/flickr-authentication.c
@@ -213,9 +213,6 @@ show_authentication_error_dialog (FlickrAuthentication  *self,
 		return;
 	}
 
-	if (self->priv->conn != NULL)
-		gth_task_dialog (GTH_TASK (self->priv->conn), TRUE);
-
 	dialog = _gtk_message_dialog_new (GTK_WINDOW (self->priv->browser),
 			             GTK_DIALOG_MODAL,
 				     GTK_STOCK_DIALOG_ERROR,
@@ -224,6 +221,9 @@ show_authentication_error_dialog (FlickrAuthentication  *self,
 				     _("Choose _Account..."), FLICKR_AUTHENTICATION_RESPONSE_CHOOSE_ACCOUNT,
 				     GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
 				     NULL);
+	if (self->priv->conn != NULL)
+		gth_task_dialog (GTH_TASK (self->priv->conn), TRUE, dialog);
+
 	g_signal_connect (dialog,
 			  "response",
 			  G_CALLBACK (authentication_error_dialog_response_cb),
@@ -406,7 +406,7 @@ complete_authorization_messagedialog_response_cb (GtkDialog *dialog,
 
 	case GTK_RESPONSE_OK:
 		gtk_widget_destroy (GTK_WIDGET (dialog));
-		gth_task_dialog (GTH_TASK (self->priv->conn), FALSE);
+		gth_task_dialog (GTH_TASK (self->priv->conn), FALSE, NULL);
 		flickr_connection_get_token (self->priv->conn,
 					     self->priv->cancellable,
 					     connection_token_ready_cb,
@@ -427,7 +427,7 @@ complete_authorization (FlickrAuthentication *self)
 	char       *text;
 	char       *secondary_text;
 
-	gth_task_dialog (GTH_TASK (self->priv->conn), TRUE);
+	gth_task_dialog (GTH_TASK (self->priv->conn), TRUE, NULL);
 
 	builder = _gtk_builder_new_from_file ("flicker-complete-authorization.ui", "flicker");
 	dialog = _gtk_builder_get_widget (builder, "complete_authorization_messagedialog");
@@ -501,7 +501,7 @@ ask_authorization (FlickrAuthentication *self)
 	char       *text;
 	char       *secondary_text;
 
-	gth_task_dialog (GTH_TASK (self->priv->conn), TRUE);
+	gth_task_dialog (GTH_TASK (self->priv->conn), TRUE, NULL);
 
 	builder = _gtk_builder_new_from_file ("flicker-ask-authorization.ui", "flicker");
 	dialog = _gtk_builder_get_widget (builder, "ask_authorization_messagedialog");
@@ -591,7 +591,7 @@ show_choose_account_dialog (FlickrAuthentication *self)
 {
 	GtkWidget *dialog;
 
-	gth_task_dialog (GTH_TASK (self->priv->conn), TRUE);
+	gth_task_dialog (GTH_TASK (self->priv->conn), TRUE, NULL);
 	dialog = flickr_account_chooser_dialog_new (self->priv->accounts, self->priv->account);
 	g_signal_connect (dialog,
 			  "response",
@@ -609,7 +609,7 @@ void
 flickr_authentication_auto_connect (FlickrAuthentication *self)
 {
 	gtk_widget_hide (self->priv->dialog);
-	gth_task_dialog (GTH_TASK (self->priv->conn), FALSE);
+	gth_task_dialog (GTH_TASK (self->priv->conn), FALSE, NULL);
 
 	if (self->priv->accounts != NULL) {
 		if (self->priv->account != NULL) {
diff --git a/extensions/image_rotation/gth-transform-task.c b/extensions/image_rotation/gth-transform-task.c
index ab0ffa5..4756ea2 100644
--- a/extensions/image_rotation/gth-transform-task.c
+++ b/extensions/image_rotation/gth-transform-task.c
@@ -70,7 +70,7 @@ trim_response_cb (JpegMcuAction action,
 {
 	GthTransformTask *self = user_data;
 
-	gth_task_dialog (GTH_TASK (self), FALSE);
+	gth_task_dialog (GTH_TASK (self), FALSE, NULL);
 
 	if (action != JPEG_MCU_ACTION_ABORT) {
 		self->priv->default_action = action;
@@ -93,7 +93,7 @@ transform_file_ready_cb (GError   *error,
 		if (g_error_matches (error, JPEG_ERROR, JPEG_ERROR_MCU)) {
 			g_clear_error (&error);
 
-			gth_task_dialog (GTH_TASK (self), TRUE);
+			gth_task_dialog (GTH_TASK (self), TRUE, NULL);
 			ask_whether_to_trim (GTK_WINDOW (self->priv->browser),
 					     self->priv->file_data,
 					     trim_response_cb,
diff --git a/extensions/oauth/oauth-authentication.c b/extensions/oauth/oauth-authentication.c
index 5d2fb90..f2eab84 100644
--- a/extensions/oauth/oauth-authentication.c
+++ b/extensions/oauth/oauth-authentication.c
@@ -209,9 +209,6 @@ show_authentication_error_dialog (OAuthAuthentication  *self,
 		return;
 	}
 
-	if (self->priv->conn != NULL)
-		gth_task_dialog (GTH_TASK (self->priv->conn), TRUE);
-
 	dialog = _gtk_message_dialog_new (GTK_WINDOW (self->priv->browser),
 					  GTK_DIALOG_MODAL,
 					  GTK_STOCK_DIALOG_ERROR,
@@ -220,6 +217,10 @@ show_authentication_error_dialog (OAuthAuthentication  *self,
 					  _("Choose _Account..."), OAUTH_AUTHENTICATION_RESPONSE_CHOOSE_ACCOUNT,
 					  GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
 					  NULL);
+
+	if (self->priv->conn != NULL)
+		gth_task_dialog (GTH_TASK (self->priv->conn), TRUE, dialog);
+
 	g_signal_connect (dialog,
 			  "response",
 			  G_CALLBACK (authentication_error_dialog_response_cb),
@@ -417,7 +418,7 @@ complete_authorization_messagedialog_response_cb (GtkDialog *dialog,
 
 	case GTK_RESPONSE_OK:
 		gtk_widget_destroy (GTK_WIDGET (dialog));
-		gth_task_dialog (GTH_TASK (self->priv->conn), FALSE);
+		gth_task_dialog (GTH_TASK (self->priv->conn), FALSE, NULL);
 		oauth_connection_get_access_token (self->priv->conn,
 						   self->priv->cancellable,
 						   get_access_token_ready_cb,
@@ -438,7 +439,7 @@ complete_authorization (OAuthAuthentication *self)
 	char       *text;
 	char       *secondary_text;
 
-	gth_task_dialog (GTH_TASK (self->priv->conn), TRUE);
+	gth_task_dialog (GTH_TASK (self->priv->conn), TRUE, NULL);
 
 	builder = _gtk_builder_new_from_file ("oauth-complete-authorization.ui", "oauth");
 	dialog = _gtk_builder_get_widget (builder, "complete_authorization_messagedialog");
@@ -512,7 +513,7 @@ ask_authorization (OAuthAuthentication *self)
 	char       *text;
 	char       *secondary_text;
 
-	gth_task_dialog (GTH_TASK (self->priv->conn), TRUE);
+	gth_task_dialog (GTH_TASK (self->priv->conn), TRUE, NULL);
 
 	builder = _gtk_builder_new_from_file ("oauth-ask-authorization.ui", "oauth");
 	dialog = _gtk_builder_get_widget (builder, "ask_authorization_messagedialog");
@@ -556,7 +557,7 @@ static void
 start_authorization_process (OAuthAuthentication *self)
 {
 	gtk_widget_hide (self->priv->dialog);
-	gth_task_dialog (GTH_TASK (self->priv->conn), FALSE);
+	gth_task_dialog (GTH_TASK (self->priv->conn), FALSE, NULL);
 
 	oauth_connection_get_request_token (self->priv->conn,
 					    self->priv->cancellable,
@@ -604,7 +605,7 @@ show_choose_account_dialog (OAuthAuthentication *self)
 {
 	GtkWidget *dialog;
 
-	gth_task_dialog (GTH_TASK (self->priv->conn), TRUE);
+	gth_task_dialog (GTH_TASK (self->priv->conn), TRUE, NULL);
 	dialog = oauth_account_chooser_dialog_new (self->priv->accounts, self->priv->account);
 	g_signal_connect (dialog,
 			  "response",
@@ -622,7 +623,7 @@ void
 oauth_authentication_auto_connect (OAuthAuthentication *self)
 {
 	gtk_widget_hide (self->priv->dialog);
-	gth_task_dialog (GTH_TASK (self->priv->conn), FALSE);
+	gth_task_dialog (GTH_TASK (self->priv->conn), FALSE, NULL);
 
 	if (self->priv->accounts != NULL) {
 		if (self->priv->account != NULL) {
diff --git a/extensions/photobucket/dlg-export-to-photobucket.c b/extensions/photobucket/dlg-export-to-photobucket.c
index f2139e1..e6afb96 100644
--- a/extensions/photobucket/dlg-export-to-photobucket.c
+++ b/extensions/photobucket/dlg-export-to-photobucket.c
@@ -126,7 +126,7 @@ completed_messagedialog_response_cb (GtkDialog *dialog,
 
 			if ((url != NULL) && ! gtk_show_uri (gtk_widget_get_screen (GTK_WIDGET (dialog)), url, 0, &error)) {
 				if (data->conn != NULL)
-					gth_task_dialog (GTH_TASK (data->conn), TRUE);
+					gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 				_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->browser), _("Could not connect to the server"), &error);
 			}
 
@@ -148,7 +148,7 @@ export_completed_with_success (DialogData *data)
 	GtkBuilder *builder;
 	GtkWidget  *dialog;
 
-	gth_task_dialog (GTH_TASK (data->conn), TRUE);
+	gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 
 	builder = _gtk_builder_new_from_file ("photobucket-export-completed.ui", "photobucket");
 	dialog = _gtk_builder_get_widget (builder, "completed_messagedialog");
@@ -206,7 +206,7 @@ export_dialog_response_cb (GtkDialog *dialog,
 			int          size;
 
 			gtk_widget_hide (data->dialog);
-			gth_task_dialog (GTH_TASK (data->conn), FALSE);
+			gth_task_dialog (GTH_TASK (data->conn), FALSE, NULL);
 
 			_g_clear_object (&data->album);
 			if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (GET_WIDGET ("album_combobox")), &iter)) {
@@ -365,14 +365,14 @@ album_list_ready_cb (GObject      *source_object,
 	data->albums = photobucket_service_get_albums_finish (data->service, res, &error);
 	if (error != NULL) {
 		if (data->conn != NULL)
-			gth_task_dialog (GTH_TASK (data->conn), TRUE);
+			gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 		_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->browser), _("Could not connect to the server"), &error);
 		gtk_widget_destroy (data->dialog);
 		return;
 	}
 	update_album_list (data);
 
-	gth_task_dialog (GTH_TASK (data->conn), TRUE);
+	gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 
 	gtk_window_set_transient_for (GTK_WINDOW (data->dialog), GTK_WINDOW (data->browser));
 	gtk_window_set_modal (GTK_WINDOW (data->dialog), FALSE);
@@ -450,7 +450,7 @@ create_album_ready_cb (GObject      *source_object,
 	data->album = photobucket_service_create_album_finish (data->service, result, &error);
 	if (error != NULL) {
 		if (data->conn != NULL)
-			gth_task_dialog (GTH_TASK (data->conn), TRUE);
+			gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not create the album"), &error);
 		return;
 	}
diff --git a/extensions/picasaweb/dlg-export-to-picasaweb.c b/extensions/picasaweb/dlg-export-to-picasaweb.c
index a14c094..dc5968a 100644
--- a/extensions/picasaweb/dlg-export-to-picasaweb.c
+++ b/extensions/picasaweb/dlg-export-to-picasaweb.c
@@ -134,7 +134,7 @@ completed_messagedialog_response_cb (GtkDialog *dialog,
 
 			if ((url != NULL) && ! gtk_show_uri (gtk_widget_get_screen (GTK_WIDGET (dialog)), url, 0, &error)) {
 				if (data->conn != NULL)
-					gth_task_dialog (GTH_TASK (data->conn), TRUE);
+					gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 				_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->browser), _("Could not connect to the server"), &error);
 			}
 			gtk_dialog_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_DELETE_EVENT);
@@ -155,7 +155,7 @@ export_completed_with_success (DialogData *data)
 	GtkBuilder *builder;
 	GtkWidget  *dialog;
 
-	gth_task_dialog (GTH_TASK (data->conn), TRUE);
+	gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 
 	builder = _gtk_builder_new_from_file ("picasa-web-export-completed.ui", "picasaweb");
 	dialog = _gtk_builder_get_widget (builder, "completed_messagedialog");
@@ -180,11 +180,9 @@ post_photos_ready_cb (GObject      *source_object,
 	PicasaWebService *picasaweb = PICASA_WEB_SERVICE (source_object);
 	GError           *error = NULL;
 
-	gth_task_dialog (GTH_TASK (data->conn), TRUE);
-
 	if (! picasa_web_service_post_photos_finish (picasaweb, result, &error)) {
 		if (data->conn != NULL)
-			gth_task_dialog (GTH_TASK (data->conn), TRUE);
+			gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not upload the files"), &error);
 		return;
 	}
@@ -228,7 +226,7 @@ export_dialog_response_cb (GtkDialog *dialog,
 					    -1);
 
 			gtk_widget_hide (data->dialog);
-			gth_task_dialog (GTH_TASK (data->conn), FALSE);
+			gth_task_dialog (GTH_TASK (data->conn), FALSE, NULL);
 
 			file_list = gth_file_data_list_to_file_list (data->file_list);
 			picasa_web_service_post_photos (data->picasaweb,
@@ -324,7 +322,7 @@ show_export_dialog (DialogData *data)
 {
 	update_account_list (data);
 	update_album_list (data);
-	gth_task_dialog (GTH_TASK (data->conn), TRUE);
+	gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 
 	gtk_window_set_transient_for (GTK_WINDOW (data->dialog), GTK_WINDOW (data->browser));
 	gtk_window_set_modal (GTK_WINDOW (data->dialog), FALSE);
@@ -345,7 +343,7 @@ list_albums_ready_cb (GObject      *source_object,
 	data->albums = picasa_web_service_list_albums_finish (picasaweb, result, &error);
 	if (error != NULL) {
 		if (data->conn != NULL)
-			gth_task_dialog (GTH_TASK (data->conn), TRUE);
+			gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not get the album list"), &error);
 		gtk_dialog_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_DELETE_EVENT);
 		return;
@@ -403,7 +401,7 @@ connection_ready_cb (GObject      *source_object,
 		}
 		else {
 			if (data->conn != NULL)
-				gth_task_dialog (GTH_TASK (data->conn), TRUE);
+				gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 			_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not connect to the server"), &error);
 			gtk_dialog_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_DELETE_EVENT);
 		}
@@ -479,7 +477,7 @@ account_properties_dialog (DialogData *data,
 	GtkWidget *dialog;
 
 	if (data->conn != NULL)
-		gth_task_dialog (GTH_TASK (data->conn), TRUE);
+		gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 
 	dialog = picasa_account_properties_dialog_new (email, NULL, NULL);
 	g_signal_connect (dialog,
@@ -498,11 +496,11 @@ static void
 connect_to_server_step2 (DialogData *data)
 {
 	if (data->password == NULL) {
-		gth_task_dialog (GTH_TASK (data->conn), TRUE);
+		gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 		account_properties_dialog (data, data->email);
 	}
 	else {
-		gth_task_dialog (GTH_TASK (data->conn), FALSE);
+		gth_task_dialog (GTH_TASK (data->conn), FALSE, NULL);
 		google_connection_connect (data->conn,
 					   data->email,
 					   data->password,
@@ -659,7 +657,7 @@ create_album_ready_cb (GObject      *source_object,
 	album = picasa_web_service_create_album_finish (picasaweb, result, &error);
 	if (error != NULL) {
 		if (data->conn != NULL)
-			gth_task_dialog (GTH_TASK (data->conn), TRUE);
+			gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not create the album"), &error);
 		return;
 	}
@@ -733,7 +731,7 @@ auto_select_account (DialogData *data)
 {
 	gtk_widget_hide (data->dialog);
 	if (data->conn != NULL)
-		gth_task_dialog (GTH_TASK (data->conn), FALSE);
+		gth_task_dialog (GTH_TASK (data->conn), FALSE, NULL);
 
 	if (data->accounts != NULL) {
 		if (data->email != NULL) {
@@ -746,7 +744,7 @@ auto_select_account (DialogData *data)
 		else {
 			GtkWidget *dialog;
 
-			gth_task_dialog (GTH_TASK (data->conn), TRUE);
+			gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 			dialog = picasa_account_chooser_dialog_new (data->accounts, data->email);
 			g_signal_connect (dialog,
 					  "response",
@@ -925,7 +923,7 @@ dlg_export_to_picasaweb (GthBrowser *browser,
 		GError *error;
 
 		if (data->conn != NULL)
-			gth_task_dialog (GTH_TASK (data->conn), TRUE);
+			gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 
 		error = g_error_new_literal (GTH_ERROR, GTH_ERROR_GENERIC, _("No valid file selected."));
 		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser), _("Could not export the files"), &error);
diff --git a/extensions/picasaweb/dlg-import-from-picasaweb.c b/extensions/picasaweb/dlg-import-from-picasaweb.c
index 299471d..b3cd364 100644
--- a/extensions/picasaweb/dlg-import-from-picasaweb.c
+++ b/extensions/picasaweb/dlg-import-from-picasaweb.c
@@ -274,7 +274,7 @@ show_import_dialog (DialogData *data)
 {
 	update_account_list (data);
 	update_album_list (data);
-	gth_task_dialog (GTH_TASK (data->conn), TRUE);
+	gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 
 	gtk_window_set_transient_for (GTK_WINDOW (data->dialog), GTK_WINDOW (data->browser));
 	gtk_window_set_modal (GTK_WINDOW (data->dialog), FALSE);
@@ -295,7 +295,7 @@ list_albums_ready_cb (GObject      *source_object,
 	data->albums = picasa_web_service_list_albums_finish (picasaweb, result, &error);
 	if (error != NULL) {
 		if (data->conn != NULL)
-			gth_task_dialog (GTH_TASK (data->conn), TRUE);
+			gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not get the album list"), &error);
 		gtk_widget_destroy (data->dialog);
 		return;
@@ -312,7 +312,7 @@ get_album_list (DialogData *data)
 {
 	if (data->picasaweb == NULL)
 		data->picasaweb = picasa_web_service_new (data->conn);
-	gth_task_dialog (GTH_TASK (data->conn), FALSE);
+	gth_task_dialog (GTH_TASK (data->conn), FALSE, NULL);
 	picasa_web_service_list_albums (data->picasaweb,
 				        "default",
 				        data->cancellable,
@@ -354,7 +354,7 @@ connection_ready_cb (GObject      *source_object,
 		}
 		else {
 			if (data->conn != NULL)
-				gth_task_dialog (GTH_TASK (data->conn), TRUE);
+				gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 			_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not connect to the server"), &error);
 			gtk_widget_destroy (data->dialog);
 		}
@@ -430,7 +430,7 @@ account_properties_dialog (DialogData *data,
 	GtkWidget *dialog;
 
 	if (data->conn != NULL)
-		gth_task_dialog (GTH_TASK (data->conn), TRUE);
+		gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 
 	dialog = picasa_account_properties_dialog_new (email, NULL, NULL);
 	g_signal_connect (dialog,
@@ -449,11 +449,11 @@ static void
 connect_to_server_step2 (DialogData *data)
 {
 	if (data->password == NULL) {
-		gth_task_dialog (GTH_TASK (data->conn), TRUE);
+		gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 		account_properties_dialog (data, data->email);
 	}
 	else {
-		gth_task_dialog (GTH_TASK (data->conn), FALSE);
+		gth_task_dialog (GTH_TASK (data->conn), FALSE, NULL);
 		google_connection_connect (data->conn,
 					   data->email,
 					   data->password,
@@ -750,12 +750,12 @@ list_photos_ready_cb (GObject      *source_object,
 	GList            *list;
 	GList            *scan;
 
-	gth_task_dialog (GTH_TASK (data->conn), TRUE);
+	gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 	_g_object_list_unref (data->photos);
 	data->photos = picasa_web_service_list_albums_finish (picasaweb, result, &error);
 	if (error != NULL) {
 		if (data->conn != NULL)
-			gth_task_dialog (GTH_TASK (data->conn), TRUE);
+			gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not get the photo list"), &error);
 		gtk_widget_destroy (data->dialog);
 		return;
@@ -799,7 +799,7 @@ album_combobox_changed_cb (GtkComboBox *widget,
 			    ALBUM_DATA_COLUMN, &data->album,
 			    -1);
 
-	gth_task_dialog (GTH_TASK (data->conn), FALSE);
+	gth_task_dialog (GTH_TASK (data->conn), FALSE, NULL);
 	picasa_web_service_list_photos (data->picasaweb,
 					data->album,
 					data->cancellable,
diff --git a/extensions/webalbums/gth-web-exporter.c b/extensions/webalbums/gth-web-exporter.c
index 8dbf392..e9828eb 100644
--- a/extensions/webalbums/gth-web-exporter.c
+++ b/extensions/webalbums/gth-web-exporter.c
@@ -1708,10 +1708,11 @@ save_files_progress_cb (GObject    *object,
 
 
 static void
-save_files_dialog_cb (gboolean opened,
-		      gpointer user_data)
+save_files_dialog_cb (gboolean   opened,
+		      GtkWidget *dialog,
+		      gpointer   user_data)
 {
-	gth_task_dialog (GTH_TASK (user_data), opened);
+	gth_task_dialog (GTH_TASK (user_data), opened, dialog);
 }
 
 
diff --git a/gthumb/gio-utils.c b/gthumb/gio-utils.c
index 1d40e61..fd1655f 100644
--- a/gthumb/gio-utils.c
+++ b/gthumb/gio-utils.c
@@ -1228,7 +1228,7 @@ copy_file__overwrite_dialog_response_cb (GtkDialog *dialog,
 	gtk_widget_hide (GTK_WIDGET (dialog));
 
 	if (copy_file_data->dialog_callback != NULL)
-		copy_file_data->dialog_callback (FALSE, copy_file_data->dialog_callback_data);
+		copy_file_data->dialog_callback (FALSE, NULL, copy_file_data->dialog_callback_data);
 
 	switch (copy_file_data->default_response) {
 	case GTH_OVERWRITE_RESPONSE_NO:
@@ -1282,14 +1282,15 @@ copy_file_ready_cb (GObject      *source_object,
 			if (copy_file_data->default_response != GTH_OVERWRITE_RESPONSE_ALWAYS_NO) {
 				GtkWidget *dialog;
 
-				if (copy_file_data->dialog_callback != NULL)
-					copy_file_data->dialog_callback (TRUE, copy_file_data->dialog_callback_data);
-
 				dialog = gth_overwrite_dialog_new (copy_file_data->source->file,
 								   NULL,
 								   copy_file_data->current_destination,
 								   copy_file_data->default_response,
 								   copy_file_data->tot_files == 1);
+
+				if (copy_file_data->dialog_callback != NULL)
+					copy_file_data->dialog_callback (TRUE, dialog, copy_file_data->dialog_callback_data);
+
 				g_signal_connect (dialog,
 						  "response",
 						  G_CALLBACK (copy_file__overwrite_dialog_response_cb),
diff --git a/gthumb/gth-marshal.list b/gthumb/gth-marshal.list
index 2569f8e..6054fa7 100644
--- a/gthumb/gth-marshal.list
+++ b/gthumb/gth-marshal.list
@@ -1,3 +1,4 @@
+VOID:BOOLEAN, POINTER
 VOID:ENUM, ENUM
 VOID:INT, INT
 VOID:OBJECT, BOOLEAN
diff --git a/gthumb/gth-pixbuf-list-task.c b/gthumb/gth-pixbuf-list-task.c
index 21101fb..80acde5 100644
--- a/gthumb/gth-pixbuf-list-task.c
+++ b/gthumb/gth-pixbuf-list-task.c
@@ -101,7 +101,7 @@ overwrite_dialog_response_cb (GtkDialog *dialog,
 		self->priv->overwrite_response = gth_overwrite_dialog_get_response (GTH_OVERWRITE_DIALOG (dialog));
 
 	gtk_widget_hide (GTK_WIDGET (dialog));
-	gth_task_dialog (GTH_TASK (self), FALSE);
+	gth_task_dialog (GTH_TASK (self), FALSE, NULL);
 
 	switch (self->priv->overwrite_response) {
 	case GTH_OVERWRITE_RESPONSE_NO:
@@ -173,14 +173,14 @@ pixbuf_saved_cb (GthFileData *file_data,
 				GthFileData *file_data;
 				GtkWidget   *dialog;
 
-				gth_task_dialog (GTH_TASK (self), TRUE);
-
 				file_data = self->priv->current->data;
 				dialog = gth_overwrite_dialog_new (NULL,
 								   self->priv->new_pixbuf,
 								   file_data->file,
 								   GTH_OVERWRITE_RESPONSE_YES,
 								   (self->priv->n_files == 1));
+				gth_task_dialog (GTH_TASK (self), TRUE, dialog);
+
 				g_signal_connect (dialog,
 						  "response",
 						  G_CALLBACK (overwrite_dialog_response_cb),
@@ -208,11 +208,12 @@ pixbuf_saved_cb (GthFileData *file_data,
 
 
 static void
-pixbuf_task_dialog_cb (GthTask  *task,
-		       gboolean  opened,
-		       gpointer  user_data)
+pixbuf_task_dialog_cb (GthTask   *task,
+		       gboolean   opened,
+		       GtkWidget *dialog,
+		       gpointer   user_data)
 {
-	gth_task_dialog (GTH_TASK (user_data), opened);
+	gth_task_dialog (GTH_TASK (user_data), opened, dialog);
 }
 
 
diff --git a/gthumb/gth-progress-dialog.c b/gthumb/gth-progress-dialog.c
index e5b3cdd..cb9fefb 100644
--- a/gthumb/gth-progress-dialog.c
+++ b/gthumb/gth-progress-dialog.c
@@ -384,9 +384,10 @@ _show_dialog_cb (gpointer data)
 
 
 static void
-task_dialog_cb (GthTask  *task,
-		gboolean  opened,
-		gpointer  user_data)
+task_dialog_cb (GthTask   *task,
+		gboolean   opened,
+		GtkWidget *dialog,
+		gpointer   user_data)
 {
 	GthProgressDialog *self = user_data;
 
@@ -398,6 +399,8 @@ task_dialog_cb (GthTask  *task,
 		}
 		gtk_widget_hide (GTK_WIDGET (self));
 		gtk_window_set_transient_for (GTK_WINDOW (self), NULL);
+		if (dialog != NULL)
+			gtk_window_set_transient_for (GTK_WINDOW (dialog), self->priv->parent);
 	}
 	else if (self->priv->show_event == 0)
 		self->priv->show_event = g_timeout_add (SHOW_DELAY, _show_dialog_cb, self);
diff --git a/gthumb/gth-task.c b/gthumb/gth-task.c
index e101b28..88e1c53 100644
--- a/gthumb/gth-task.c
+++ b/gthumb/gth-task.c
@@ -131,10 +131,11 @@ gth_task_class_init (GthTaskClass *class)
 			      G_SIGNAL_RUN_LAST,
 			      G_STRUCT_OFFSET (GthTaskClass, dialog),
 			      NULL, NULL,
-			      g_cclosure_marshal_VOID__BOOLEAN,
+			      gth_marshal_VOID__BOOLEAN_POINTER,
 			      G_TYPE_NONE,
-			      1,
-			      G_TYPE_BOOLEAN);
+			      2,
+			      G_TYPE_BOOLEAN,
+			      G_TYPE_POINTER);
 }
 
 
@@ -245,10 +246,11 @@ gth_task_completed (GthTask *task,
 
 
 void
-gth_task_dialog (GthTask  *task,
-		 gboolean  opened)
+gth_task_dialog (GthTask   *task,
+		 gboolean   opened,
+		 GtkWidget *dialog)
 {
-	g_signal_emit (task, gth_task_signals[DIALOG], 0, opened);
+	g_signal_emit (task, gth_task_signals[DIALOG], 0, opened, dialog);
 }
 
 
diff --git a/gthumb/gth-task.h b/gthumb/gth-task.h
index 0a9cfa9..6ec5ba2 100644
--- a/gthumb/gth-task.h
+++ b/gthumb/gth-task.h
@@ -23,8 +23,7 @@
 #ifndef GTH_TASK_H
 #define GTH_TASK_H
 
-#include <glib-object.h>
-#include <gio/gio.h>
+#include <gtk/gtk.h>
 
 G_BEGIN_DECLS
 
@@ -67,7 +66,8 @@ struct _GthTaskClass
 			       gboolean    pulse,
 			       double      fraction);
 	void  (*dialog)       (GthTask    *task,
-			       gboolean    opened);
+			       gboolean    opened,
+			       GtkWidget  *dialog);
 
 	/*< virtual functions >*/
 
@@ -86,7 +86,8 @@ GCancellable *  gth_task_get_cancellable (GthTask      *task);
 void            gth_task_completed       (GthTask      *task,
 					  GError       *error);
 void            gth_task_dialog          (GthTask      *task,
-					  gboolean      opened);
+					  gboolean      opened,
+					  GtkWidget    *dialog);
 void            gth_task_progress        (GthTask      *task,
 					  const char   *description,
 					  const char   *details,
diff --git a/gthumb/typedefs.h b/gthumb/typedefs.h
index 973e51f..4849c5d 100644
--- a/gthumb/typedefs.h
+++ b/gthumb/typedefs.h
@@ -23,7 +23,7 @@
 #ifndef TYPEDEFS_H
 #define TYPEDEFS_H
 
-#include <glib.h>
+#include <gtk/gtk.h>
 
 G_BEGIN_DECLS
 
@@ -121,6 +121,7 @@ typedef void (*ProgressCallback) (GObject    *object,
 			          double      fraction,
 			   	  gpointer    user_data);
 typedef void (*DialogCallback)   (gboolean    opened,
+				  GtkWidget  *dialog,
 				  gpointer    user_data);
 
 G_END_DECLS



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]