From 98d41bc374dffa07a1a7553b70d096002ef8b0c3 Mon Sep 17 00:00:00 2001 From: Geert Janssens Date: Fri, 8 Dec 2017 23:29:21 +0100 Subject: [PATCH] Fix transient parent warnings for tip-of-the-day and file dialogs --- gnucash/gnome-utils/dialog-file-access.c | 21 +-- gnucash/gnome-utils/dialog-file-access.h | 6 +- gnucash/gnome-utils/dialog-totd.c | 18 ++- gnucash/gnome-utils/dialog-totd.h | 1 + gnucash/gnome-utils/gnc-autosave.c | 2 +- gnucash/gnome-utils/gnc-file.c | 120 +++++++++--------- gnucash/gnome-utils/gnc-file.h | 28 ++-- gnucash/gnome-utils/gnc-gnome-utils.c | 4 +- gnucash/gnome-utils/gnc-main-window.c | 2 +- gnucash/gnome-utils/gnc-plugin-file-history.c | 3 +- .../gnome-utils/gtkbuilder/dialog-totd.glade | 1 - gnucash/gnome/assistant-hierarchy.c | 3 +- gnucash/gnome/dialog-new-user.c | 2 +- gnucash/gnome/gnc-plugin-basic-commands.c | 18 +-- gnucash/gnome/top-level.c | 2 + gnucash/gnucash-bin.c | 2 +- .../import-export/aqb/gnc-file-aqb-import.c | 15 ++- .../import-export/aqb/gnc-file-aqb-import.h | 3 +- .../import-export/aqb/gnc-plugin-aqbanking.c | 12 +- .../bi-import/dialog-bi-import-gui.c | 6 +- .../dialog-customer-import-gui.c | 7 +- .../import-export/log-replay/gnc-log-replay.c | 5 +- .../import-export/log-replay/gnc-log-replay.h | 4 +- .../log-replay/gnc-plugin-log-replay.c | 2 +- gnucash/import-export/ofx/gnc-ofx-import.c | 5 +- gnucash/import-export/ofx/gnc-ofx-import.h | 4 +- gnucash/import-export/ofx/gnc-plugin-ofx.c | 2 +- .../qif-imp/assistant-qif-import.c | 5 +- .../report-gnome/gnc-plugin-page-report.c | 3 +- 29 files changed, 171 insertions(+), 135 deletions(-) diff --git a/gnucash/gnome-utils/dialog-file-access.c b/gnucash/gnome-utils/dialog-file-access.c index 7cd36f30ff..c641b8aaf4 100644 --- a/gnucash/gnome-utils/dialog-file-access.c +++ b/gnucash/gnome-utils/dialog-file-access.c @@ -144,15 +144,15 @@ gnc_ui_file_access_response_cb(GtkDialog *dialog, gint response, GtkDialog *unus gboolean open_readonly = faw->readonly_checkbutton ? gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(faw->readonly_checkbutton)) : FALSE; - gnc_file_open_file( url, open_readonly ); + gnc_file_open_file (gnc_ui_get_main_window (GTK_WIDGET (dialog)), url, open_readonly); } else if ( faw->type == FILE_ACCESS_SAVE_AS ) { - gnc_file_do_save_as( url ); + gnc_file_do_save_as (gnc_ui_get_main_window (GTK_WIDGET (dialog)), url); } else if ( faw->type == FILE_ACCESS_EXPORT ) { - gnc_file_do_export( url ); + gnc_file_do_export (gnc_ui_get_main_window (GTK_WIDGET (dialog)), url); } break; @@ -240,7 +240,7 @@ get_default_database( void ) } static void -gnc_ui_file_access( int type ) +gnc_ui_file_access (GtkWindow *parent, int type) { FileAccessWindow *faw; GtkBuilder* builder; @@ -275,6 +275,7 @@ gnc_ui_file_access( int type ) builder = gtk_builder_new(); gnc_builder_add_from_file (builder, "dialog-file-access.glade", "file_access_dialog" ); faw->dialog = GTK_WIDGET(gtk_builder_get_object (builder, "file_access_dialog" )); + gtk_window_set_transient_for (GTK_WINDOW (faw->dialog), parent); g_object_set_data_full( G_OBJECT(faw->dialog), "FileAccessWindow", faw, g_free ); // Set the style context for this dialog so it can be easily manipulated with css @@ -446,21 +447,21 @@ gnc_ui_file_access( int type ) } void -gnc_ui_file_access_for_open( void ) +gnc_ui_file_access_for_open (GtkWindow *parent) { - gnc_ui_file_access( FILE_ACCESS_OPEN ); + gnc_ui_file_access (parent, FILE_ACCESS_OPEN); } void -gnc_ui_file_access_for_save_as( void ) +gnc_ui_file_access_for_save_as (GtkWindow *parent) { - gnc_ui_file_access( FILE_ACCESS_SAVE_AS ); + gnc_ui_file_access (parent, FILE_ACCESS_SAVE_AS); } void -gnc_ui_file_access_for_export( void ) +gnc_ui_file_access_for_export (GtkWindow *parent) { - gnc_ui_file_access( FILE_ACCESS_EXPORT ); + gnc_ui_file_access (parent, FILE_ACCESS_EXPORT); } diff --git a/gnucash/gnome-utils/dialog-file-access.h b/gnucash/gnome-utils/dialog-file-access.h index 8dd61abc6e..bf8cb38b00 100644 --- a/gnucash/gnome-utils/dialog-file-access.h +++ b/gnucash/gnome-utils/dialog-file-access.h @@ -34,9 +34,9 @@ * loading/open and for saving. */ -void gnc_ui_file_access_for_open( void ); -void gnc_ui_file_access_for_save_as( void ); -void gnc_ui_file_access_for_export( void ); +void gnc_ui_file_access_for_open (GtkWindow *parent); +void gnc_ui_file_access_for_save_as (GtkWindow *parent); +void gnc_ui_file_access_for_export (GtkWindow *parent); /** @} */ diff --git a/gnucash/gnome-utils/dialog-totd.c b/gnucash/gnome-utils/dialog-totd.c index 91e9e16033..0aa680eda4 100644 --- a/gnucash/gnome-utils/dialog-totd.c +++ b/gnucash/gnome-utils/dialog-totd.c @@ -34,6 +34,7 @@ #include "gnc-prefs.h" #include "gnc-gnome-utils.h" #include "gnc-engine.h" +#include "gnc-ui.h" #define GNC_PREFS_GROUP "dialogs.totd" #define GNC_PREF_CURRENT_TIP "current-tip" @@ -274,7 +275,8 @@ show_handler (const char *class_name, gint component_id, return(FALSE); } - gtk_window_present(GTK_WINDOW(totd_dialog->dialog)); + gtk_window_set_transient_for (GTK_WINDOW (totd_dialog->dialog), + gnc_ui_get_main_window (NULL)); LEAVE(" "); return(TRUE); } @@ -374,3 +376,17 @@ gnc_totd_dialog (GtkWindow *parent, gboolean startup) LEAVE(""); } + + + +/**************************************************** + * Set the totd dialog transient for the currently + * active main window. This will prevent the totd + * dialog from accidentally hiding behind a main + * window. + ****************************************************/ +void +gnc_totd_dialog_reparent (void) +{ + gnc_forall_gui_components(DIALOG_TOTD_CM_CLASS, show_handler, NULL); +} diff --git a/gnucash/gnome-utils/dialog-totd.h b/gnucash/gnome-utils/dialog-totd.h index 7a5ea73999..3e92936efb 100644 --- a/gnucash/gnome-utils/dialog-totd.h +++ b/gnucash/gnome-utils/dialog-totd.h @@ -26,5 +26,6 @@ #define DIALOG_TOTD_H void gnc_totd_dialog (GtkWindow *parent, gboolean startup); +void gnc_totd_dialog_reparent (void); #endif diff --git a/gnucash/gnome-utils/gnc-autosave.c b/gnucash/gnome-utils/gnc-autosave.c index 557462d4ee..d2e5e54cfa 100644 --- a/gnucash/gnome-utils/gnc-autosave.c +++ b/gnucash/gnome-utils/gnc-autosave.c @@ -211,7 +211,7 @@ static gboolean autosave_timeout_cb(gpointer user_data) else g_debug("autosave_timeout_cb: toplevel is not a GNC_WINDOW\n"); - gnc_file_save(); + gnc_file_save (GTK_WINDOW (toplevel)); gnc_main_window_set_progressbar_window(NULL); diff --git a/gnucash/gnome-utils/gnc-file.c b/gnucash/gnome-utils/gnc-file.c index 6fea291244..12d5e59764 100644 --- a/gnucash/gnome-utils/gnc-file.c +++ b/gnucash/gnome-utils/gnc-file.c @@ -76,7 +76,8 @@ static gint save_in_progress = 0; \********************************************************************/ char * -gnc_file_dialog (const char * title, +gnc_file_dialog (GtkWindow *parent, + const char * title, GList * filters, const char * starting_dir, GNCFileDialogType type @@ -124,7 +125,7 @@ gnc_file_dialog (const char * title, file_box = gtk_file_chooser_dialog_new( title, - NULL, + parent, action, _("_Cancel"), GTK_RESPONSE_CANCEL, NULL); @@ -139,9 +140,6 @@ gnc_file_dialog (const char * title, starting_dir); gtk_window_set_modal(GTK_WINDOW(file_box), TRUE); - /* - gtk_window_set_transient_for(GTK_WINDOW(file_box), gnc_ui_get_main_window(NULL)); - */ if (filters != NULL) { @@ -194,11 +192,11 @@ gnc_file_dialog (const char * title, gboolean -show_session_error (QofBackendError io_error, +show_session_error (GtkWindow *parent, + QofBackendError io_error, const char *newfile, GNCFileDialogType type) { - GtkWindow *parent = gnc_ui_get_main_window (NULL); GtkWidget *dialog; gboolean uh_oh = TRUE; const char *fmt, *label; @@ -530,13 +528,13 @@ gnc_book_opened (void) } void -gnc_file_new (void) +gnc_file_new (GtkWindow *parent) { QofSession *session; /* If user attempts to start a new session before saving results of * the last one, prompt them to clean up their act. */ - if (!gnc_file_query_save (TRUE)) + if (!gnc_file_query_save (parent, TRUE)) return; if (gnc_current_session_exist()) @@ -567,9 +565,8 @@ gnc_file_new (void) } gboolean -gnc_file_query_save (gboolean can_cancel) +gnc_file_query_save (GtkWindow *parent, gboolean can_cancel) { - GtkWidget *parent = GTK_WIDGET (gnc_ui_get_main_window(NULL)); QofBook *current_book; if (!gnc_current_session_exist()) @@ -594,7 +591,7 @@ gnc_file_query_save (gboolean can_cancel) time64 oldest_change; gint minutes; - dialog = gtk_message_dialog_new(GTK_WINDOW(parent), + dialog = gtk_message_dialog_new(parent, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE, @@ -622,7 +619,7 @@ gnc_file_query_save (gboolean can_cancel) switch (response) { case GTK_RESPONSE_YES: - gnc_file_save (); + gnc_file_save (parent); /* Go check the loop condition. */ break; @@ -650,7 +647,7 @@ gnc_file_query_save (gboolean can_cancel) #define RESPONSE_READONLY 4 static gboolean -gnc_post_file_open (const char * filename, gboolean is_readonly) +gnc_post_file_open (GtkWindow *parent, const char * filename, gboolean is_readonly) { QofSession *current_session, *new_session; QofBook *new_book; @@ -676,7 +673,8 @@ RESTART: newfile = gnc_uri_normalize_uri ( filename, TRUE ); if (!newfile) { - show_session_error (ERR_FILEIO_FILE_NOT_FOUND, filename, + show_session_error (parent, + ERR_FILEIO_FILE_NOT_FOUND, filename, GNC_FILE_DIALOG_OPEN); return FALSE; } @@ -742,14 +740,14 @@ RESTART: if (ERR_BACKEND_BAD_URL == io_err) { gchar *directory; - show_session_error (io_err, newfile, GNC_FILE_DIALOG_OPEN); + show_session_error (parent, io_err, newfile, GNC_FILE_DIALOG_OPEN); io_err = ERR_BACKEND_NO_ERR; if (g_file_test (filename, G_FILE_TEST_IS_DIR)) directory = g_strdup (filename); else directory = gnc_get_default_directory (GNC_PREFS_GROUP_OPEN_SAVE); - filename = gnc_file_dialog (NULL, NULL, directory, + filename = gnc_file_dialog (parent, NULL, NULL, directory, GNC_FILE_DIALOG_OPEN); qof_session_destroy (new_session); new_session = NULL; @@ -774,10 +772,6 @@ RESTART: ); int rc; - GtkWindow *parent = gnc_get_splash_screen(); - if (!parent) - parent = gnc_ui_get_main_window(NULL); - if (! gnc_uri_is_file_uri (newfile)) /* Hide the db password in error messages */ displayname = gnc_uri_normalize_uri ( newfile, FALSE); else @@ -830,14 +824,14 @@ RESTART: * database so that the user will get a window that * they can click "Exit" on. */ - gnc_file_new (); + gnc_file_new (parent); break; } } /* if the database doesn't exist, ask the user ... */ else if ((ERR_BACKEND_NO_SUCH_DB == io_err)) { - if (FALSE == show_session_error (io_err, newfile, GNC_FILE_DIALOG_OPEN)) + if (!show_session_error (parent, io_err, newfile, GNC_FILE_DIALOG_OPEN)) { /* user told us to create a new database. Do it. We * shouldn't have to worry about locking or clobbering, @@ -859,7 +853,7 @@ RESTART: else { - uh_oh = show_session_error (io_err, newfile, GNC_FILE_DIALOG_OPEN); + uh_oh = show_session_error (parent, io_err, newfile, GNC_FILE_DIALOG_OPEN); } if (!uh_oh) @@ -906,14 +900,14 @@ RESTART: } } - uh_oh = show_session_error (io_err, newfile, GNC_FILE_DIALOG_OPEN); + uh_oh = show_session_error (parent, io_err, newfile, GNC_FILE_DIALOG_OPEN); /* Attempt to update the database if it's too old */ if ( !uh_oh && io_err == ERR_SQL_DB_TOO_OLD ) { gnc_window_show_progress(_("Re-saving user data..."), 0.0); qof_session_safe_save(new_session, gnc_window_show_progress); io_err = qof_session_get_error(new_session); - uh_oh = show_session_error(io_err, newfile, GNC_FILE_DIALOG_SAVE); + uh_oh = show_session_error(parent, io_err, newfile, GNC_FILE_DIALOG_SAVE); } /* Database is either too old and couldn't (or user didn't * want it to) be updated or it's too new. Mark it as @@ -932,7 +926,7 @@ RESTART: * The backend forgot to set an error. So make one up. */ if (!uh_oh && !new_root) { - uh_oh = show_session_error (ERR_BACKEND_MISC, newfile, + uh_oh = show_session_error (parent, ERR_BACKEND_MISC, newfile, GNC_FILE_DIALOG_OPEN); } @@ -948,7 +942,7 @@ RESTART: uh_oh = TRUE; // XXX: should pull out the file name here */ - gnc_error_dialog (gnc_ui_get_main_window (NULL), msg, ""); + gnc_error_dialog (parent, msg, ""); g_free (msg); } if (template_root != NULL) @@ -1044,14 +1038,14 @@ RESTART: * paths, never db uris. */ gboolean -gnc_file_open (void) +gnc_file_open (GtkWindow *parent) { const gchar * newfile; gchar *last = NULL; gchar *default_dir = NULL; gboolean result; - if (!gnc_file_query_save (TRUE)) + if (!gnc_file_query_save (parent, TRUE)) return FALSE; if ( last && gnc_uri_is_file_uri ( last ) ) @@ -1063,11 +1057,11 @@ gnc_file_open (void) else default_dir = gnc_get_default_directory(GNC_PREFS_GROUP_OPEN_SAVE); - newfile = gnc_file_dialog (_("Open"), NULL, default_dir, GNC_FILE_DIALOG_OPEN); + newfile = gnc_file_dialog (parent, _("Open"), NULL, default_dir, GNC_FILE_DIALOG_OPEN); g_free ( last ); g_free ( default_dir ); - result = gnc_post_file_open ( newfile, /*is_readonly*/ FALSE ); + result = gnc_post_file_open (parent, newfile, /*is_readonly*/ FALSE ); /* This dialogue can show up early in the startup process. If the * user fails to pick a file (by e.g. hitting the cancel button), we @@ -1079,14 +1073,14 @@ gnc_file_open (void) } gboolean -gnc_file_open_file (const char * newfile, gboolean open_readonly) +gnc_file_open_file (GtkWindow *parent, const char * newfile, gboolean open_readonly) { if (!newfile) return FALSE; - if (!gnc_file_query_save (TRUE)) + if (!gnc_file_query_save (parent, TRUE)) return FALSE; - return gnc_post_file_open (newfile, open_readonly); + return gnc_post_file_open (parent, newfile, open_readonly); } /* Note: this dialog will only be used when dbi is not enabled @@ -1094,7 +1088,7 @@ gnc_file_open_file (const char * newfile, gboolean open_readonly) * never db uris */ void -gnc_file_export (void) +gnc_file_export (GtkWindow *parent) { const char *filename; char *default_dir = NULL; /* Default to last open */ @@ -1112,13 +1106,14 @@ gnc_file_export (void) else default_dir = gnc_get_default_directory(GNC_PREFS_GROUP_EXPORT); - filename = gnc_file_dialog (_("Save"), NULL, default_dir, + filename = gnc_file_dialog (parent, + _("Save"), NULL, default_dir, GNC_FILE_DIALOG_SAVE); g_free ( last ); g_free ( default_dir ); if (!filename) return; - gnc_file_do_export( filename ); + gnc_file_do_export (parent, filename); LEAVE (" "); } @@ -1155,7 +1150,7 @@ check_file_path (const char *path) void -gnc_file_do_export(const char * filename) +gnc_file_do_export(GtkWindow *parent, const char * filename) { QofSession *current_session, *new_session; gboolean ok; @@ -1178,7 +1173,7 @@ gnc_file_do_export(const char * filename) norm_file = gnc_uri_normalize_uri ( filename, TRUE ); if (!norm_file) { - show_session_error (ERR_FILEIO_FILE_NOT_FOUND, filename, + show_session_error (parent, ERR_FILEIO_FILE_NOT_FOUND, filename, GNC_FILE_DIALOG_EXPORT); return; } @@ -1206,7 +1201,7 @@ gnc_file_do_export(const char * filename) { if (check_file_path (path)) { - show_session_error (ERR_FILEIO_RESERVED_WRITE, newfile, + show_session_error (parent, ERR_FILEIO_RESERVED_WRITE, newfile, GNC_FILE_DIALOG_SAVE); return; } @@ -1220,7 +1215,7 @@ gnc_file_do_export(const char * filename) if (strlen (oldfile) && (strcmp(oldfile, newfile) == 0)) { g_free (newfile); - show_session_error (ERR_FILEIO_WRITE_ERROR, filename, + show_session_error (parent, ERR_FILEIO_WRITE_ERROR, filename, GNC_FILE_DIALOG_EXPORT); return; } @@ -1254,7 +1249,7 @@ gnc_file_do_export(const char * filename) /* if file appears to be locked, ask the user ... */ if (ERR_BACKEND_LOCKED == io_err || ERR_BACKEND_READONLY == io_err) { - if (FALSE == show_session_error (io_err, newfile, GNC_FILE_DIALOG_EXPORT)) + if (!show_session_error (parent, io_err, newfile, GNC_FILE_DIALOG_EXPORT)) { /* user told us to ignore locks. So ignore them. */ qof_session_begin (new_session, newfile, TRUE, FALSE, FALSE); @@ -1288,7 +1283,7 @@ gnc_file_do_export(const char * filename) static gboolean been_here_before = FALSE; void -gnc_file_save (void) +gnc_file_save (GtkWindow *parent) { QofBackendError io_err; const char * newfile; @@ -1302,19 +1297,19 @@ gnc_file_save (void) if (!strlen (qof_session_get_url (session))) { - gnc_file_save_as (); + gnc_file_save_as (parent); return; } if (qof_book_is_readonly(qof_session_get_book(session))) { - gint response = gnc_ok_cancel_dialog(gnc_ui_get_main_window (NULL), + gint response = gnc_ok_cancel_dialog(parent, GTK_RESPONSE_CANCEL, _("The database was opened read-only. " "Do you want to save it to a different place?")); if (response == GTK_RESPONSE_OK) { - gnc_file_save_as (); + gnc_file_save_as (parent); } return; } @@ -1334,11 +1329,11 @@ gnc_file_save (void) if (ERR_BACKEND_NO_ERR != io_err) { newfile = qof_session_get_url(session); - show_session_error (io_err, newfile, GNC_FILE_DIALOG_SAVE); + show_session_error (parent, io_err, newfile, GNC_FILE_DIALOG_SAVE); if (been_here_before) return; been_here_before = TRUE; - gnc_file_save_as (); /* been_here prevents infinite recursion */ + gnc_file_save_as (parent); /* been_here prevents infinite recursion */ been_here_before = FALSE; return; } @@ -1354,7 +1349,7 @@ gnc_file_save (void) * never db uris. See gnc_file_do_save_as for that. */ void -gnc_file_save_as (void) +gnc_file_save_as (GtkWindow *parent) { const gchar *filename; gchar *default_dir = NULL; /* Default to last open */ @@ -1372,19 +1367,20 @@ gnc_file_save_as (void) else default_dir = gnc_get_default_directory(GNC_PREFS_GROUP_OPEN_SAVE); - filename = gnc_file_dialog (_("Save"), NULL, default_dir, + filename = gnc_file_dialog (parent, + _("Save"), NULL, default_dir, GNC_FILE_DIALOG_SAVE); g_free ( last ); g_free ( default_dir ); if (!filename) return; - gnc_file_do_save_as( filename ); + gnc_file_do_save_as (parent, filename); LEAVE (" "); } void -gnc_file_do_save_as (const char* filename) +gnc_file_do_save_as (GtkWindow *parent, const char* filename) { QofSession *new_session; QofSession *session; @@ -1409,7 +1405,7 @@ gnc_file_do_save_as (const char* filename) norm_file = gnc_uri_normalize_uri ( filename, TRUE ); if (!norm_file) { - show_session_error (ERR_FILEIO_FILE_NOT_FOUND, filename, + show_session_error (parent, ERR_FILEIO_FILE_NOT_FOUND, filename, GNC_FILE_DIALOG_SAVE); return; } @@ -1437,7 +1433,7 @@ gnc_file_do_save_as (const char* filename) { if (check_file_path (path)) { - show_session_error (ERR_FILEIO_RESERVED_WRITE, newfile, + show_session_error (parent, ERR_FILEIO_RESERVED_WRITE, newfile, GNC_FILE_DIALOG_SAVE); return; } @@ -1452,7 +1448,7 @@ gnc_file_do_save_as (const char* filename) if (strlen (oldfile) && (strcmp(oldfile, newfile) == 0)) { g_free (newfile); - gnc_file_save (); + gnc_file_save (parent); return; } @@ -1495,7 +1491,7 @@ gnc_file_do_save_as (const char* filename) /* if file appears to be locked, ask the user ... */ else if (ERR_BACKEND_LOCKED == io_err || ERR_BACKEND_READONLY == io_err) { - if (FALSE == show_session_error (io_err, newfile, GNC_FILE_DIALOG_SAVE)) + if (!show_session_error (parent, io_err, newfile, GNC_FILE_DIALOG_SAVE)) { /* user told us to ignore locks. So ignore them. */ qof_session_begin (new_session, newfile, TRUE, FALSE, FALSE); @@ -1507,7 +1503,7 @@ gnc_file_do_save_as (const char* filename) (ERR_BACKEND_NO_SUCH_DB == io_err) || (ERR_SQL_DB_TOO_OLD == io_err)) { - if (FALSE == show_session_error (io_err, newfile, GNC_FILE_DIALOG_SAVE)) + if (!show_session_error (parent, io_err, newfile, GNC_FILE_DIALOG_SAVE)) { /* user told us to create a new database. Do it. */ qof_session_begin (new_session, newfile, FALSE, TRUE, FALSE); @@ -1521,7 +1517,7 @@ gnc_file_do_save_as (const char* filename) io_err = qof_session_get_error (new_session); if (ERR_BACKEND_NO_ERR != io_err) { - show_session_error (io_err, newfile, GNC_FILE_DIALOG_SAVE); + show_session_error (parent, io_err, newfile, GNC_FILE_DIALOG_SAVE); xaccLogDisable(); qof_session_destroy (new_session); xaccLogEnable(); @@ -1567,7 +1563,7 @@ gnc_file_do_save_as (const char* filename) /* Well, poop. The save failed, so the new session is invalid and we * need to restore the old one. */ - show_session_error (io_err, newfile, GNC_FILE_DIALOG_SAVE); + show_session_error (parent, io_err, newfile, GNC_FILE_DIALOG_SAVE); qof_event_suspend(); qof_session_swap_data( new_session, session ); qof_session_destroy( new_session ); @@ -1596,7 +1592,7 @@ gnc_file_do_save_as (const char* filename) } void -gnc_file_revert (void) +gnc_file_revert (GtkWindow *parent) { QofSession *session; const gchar *fileurl, *filename, *tmp; @@ -1618,7 +1614,7 @@ gnc_file_revert (void) return; qof_book_mark_session_saved (qof_session_get_book (session)); - gnc_file_open_file (fileurl, qof_book_is_readonly(gnc_get_current_book()));} + gnc_file_open_file (parent, fileurl, qof_book_is_readonly(gnc_get_current_book()));} void gnc_file_quit (void) diff --git a/gnucash/gnome-utils/gnc-file.h b/gnucash/gnome-utils/gnc-file.h index 538096f00d..d32a0fb369 100644 --- a/gnucash/gnome-utils/gnc-file.h +++ b/gnucash/gnome-utils/gnc-file.h @@ -126,30 +126,34 @@ typedef enum GNC_FILE_DIALOG_EXPORT } GNCFileDialogType; -void gnc_file_new (void); -gboolean gnc_file_open (void); -void gnc_file_export(void); -void gnc_file_save (void); -void gnc_file_save_as (void); -void gnc_file_do_export(const char* filename); -void gnc_file_do_save_as(const char* filename); -void gnc_file_revert (void); +void gnc_file_new (GtkWindow *parent); +gboolean gnc_file_open (GtkWindow *parent); +void gnc_file_export(GtkWindow *parent); +void gnc_file_save (GtkWindow *parent); +void gnc_file_save_as (GtkWindow *parent); +void gnc_file_do_export(GtkWindow *parent, const char* filename); +void gnc_file_do_save_as(GtkWindow *parent, const char* filename); +void gnc_file_revert (GtkWindow *parent); /** Tell the user about errors in the backends */ -gboolean show_session_error (QofBackendError io_error, +gboolean show_session_error (GtkWindow *parent, + QofBackendError io_error, const char *newfile, GNCFileDialogType type); -char * gnc_file_dialog (const char * title, +char * gnc_file_dialog (GtkWindow *parent, + const char * title, GList * filters, const char * starting_dir, GNCFileDialogType type); -gboolean gnc_file_open_file (const char *filename, gboolean open_readonly); +gboolean gnc_file_open_file (GtkWindow *parent, + const char *filename, + gboolean open_readonly); -gboolean gnc_file_query_save (gboolean can_cancel); +gboolean gnc_file_query_save (GtkWindow *parent, gboolean can_cancel); void gnc_file_quit (void); diff --git a/gnucash/gnome-utils/gnc-gnome-utils.c b/gnucash/gnome-utils/gnc-gnome-utils.c index 85a934b307..efd6573605 100644 --- a/gnucash/gnome-utils/gnc-gnome-utils.c +++ b/gnucash/gnome-utils/gnc-gnome-utils.c @@ -736,7 +736,7 @@ gnc_gui_init(void) /* Load css configuration file */ gnc_add_css_file (); - gnc_totd_dialog(GTK_WINDOW(main_window), TRUE); + gnc_totd_dialog (gnc_get_splash_screen (), TRUE); LEAVE (""); return main_window; @@ -782,7 +782,7 @@ gnc_shutdown (int exit_status) { if (!gnome_is_terminating) { - if (gnc_file_query_save(FALSE)) + if (gnc_file_query_save (gnc_ui_get_main_window (NULL), FALSE)) { gnc_hook_run(HOOK_UI_SHUTDOWN, NULL); gnc_gui_shutdown(); diff --git a/gnucash/gnome-utils/gnc-main-window.c b/gnucash/gnome-utils/gnc-main-window.c index 1ca7ad94ad..7b6670e013 100644 --- a/gnucash/gnome-utils/gnc-main-window.c +++ b/gnucash/gnome-utils/gnc-main-window.c @@ -1294,7 +1294,7 @@ gnc_main_window_prompt_for_save (GtkWidget *window) switch (response) { case GTK_RESPONSE_APPLY: - gnc_file_save(); + gnc_file_save (GTK_WINDOW (window)); return FALSE; case GTK_RESPONSE_CLOSE: diff --git a/gnucash/gnome-utils/gnc-plugin-file-history.c b/gnucash/gnome-utils/gnc-plugin-file-history.c index 4b68e95e23..de911102df 100644 --- a/gnucash/gnome-utils/gnc-plugin-file-history.c +++ b/gnucash/gnome-utils/gnc-plugin-file-history.c @@ -696,7 +696,8 @@ gnc_plugin_file_history_cmd_open_file (GtkAction *action, filename = g_object_get_data(G_OBJECT(action), FILENAME_STRING); gnc_window_set_progressbar_window (GNC_WINDOW(data->window)); /* also opens new account page */ - gnc_file_open_file (filename, /*open_readonly*/ FALSE); + gnc_file_open_file (GTK_WINDOW (data->window), + filename, /*open_readonly*/ FALSE); gnc_window_set_progressbar_window (NULL); } diff --git a/gnucash/gnome-utils/gtkbuilder/dialog-totd.glade b/gnucash/gnome-utils/gtkbuilder/dialog-totd.glade index 09aa5b61b8..4515ebca53 100644 --- a/gnucash/gnome-utils/gtkbuilder/dialog-totd.glade +++ b/gnucash/gnome-utils/gtkbuilder/dialog-totd.glade @@ -3,7 +3,6 @@ - True False 6 GnuCash Tip Of The Day diff --git a/gnucash/gnome/assistant-hierarchy.c b/gnucash/gnome/assistant-hierarchy.c index 66258b1f16..5f9a8736e6 100644 --- a/gnucash/gnome/assistant-hierarchy.c +++ b/gnucash/gnome/assistant-hierarchy.c @@ -58,6 +58,7 @@ #include "gnc-path.h" #include "gnc-gui-query.h" #include "gnc-tree-view-account.h" +#include "gnc-ui.h" #include "gnc-ui-util.h" #include "io-example-account.h" #include "top-level.h" @@ -1317,7 +1318,7 @@ static void after_assistant(void) { qof_book_mark_session_dirty(gnc_get_current_book()); - gnc_ui_file_access_for_save_as(); + gnc_ui_file_access_for_save_as (gnc_ui_get_main_window (NULL)); } static void diff --git a/gnucash/gnome/dialog-new-user.c b/gnucash/gnome/dialog-new-user.c index bf5eaf2a0c..3cf6a9a462 100644 --- a/gnucash/gnome/dialog-new-user.c +++ b/gnucash/gnome/dialog-new-user.c @@ -67,7 +67,7 @@ after_hierarchy_assistant(void) gnc_set_first_startup (FALSE); qof_book_mark_session_dirty(gnc_get_current_book()); - gnc_ui_file_access_for_save_as(); + gnc_ui_file_access_for_save_as (gnc_ui_get_main_window (NULL)); } void diff --git a/gnucash/gnome/gnc-plugin-basic-commands.c b/gnucash/gnome/gnc-plugin-basic-commands.c index 96cbecb2a8..248c494d01 100644 --- a/gnucash/gnome/gnc-plugin-basic-commands.c +++ b/gnucash/gnome/gnc-plugin-basic-commands.c @@ -422,7 +422,7 @@ gnc_plugin_basic_commands_class_init (GncPluginBasicCommandsClass *klass) /** Initialize a new instance of a basic commands plugin. This * function currently does nothing. * - * @param page The new object instance created by the object + * @param plugin The new object instance created by the object * system. */ static void gnc_plugin_basic_commands_init (GncPluginBasicCommands *plugin) @@ -456,7 +456,7 @@ gnc_main_window_cmd_file_new (GtkAction *action, GncMainWindowActionData *data) if (!gnc_main_window_all_finish_pending()) return; - gnc_file_new (); + gnc_file_new (GTK_WINDOW (data->window)); } static void @@ -469,9 +469,9 @@ gnc_main_window_cmd_file_open (GtkAction *action, GncMainWindowActionData *data) gnc_window_set_progressbar_window (GNC_WINDOW(data->window)); #ifdef HAVE_DBI_DBI_H - gnc_ui_file_access_for_open(); + gnc_ui_file_access_for_open (GTK_WINDOW (data->window)); #else - gnc_file_open (); + gnc_file_open (GTK_WINDOW (data->window)); #endif gnc_window_set_progressbar_window (NULL); } @@ -485,7 +485,7 @@ gnc_main_window_cmd_file_save (GtkAction *action, GncMainWindowActionData *data) return; gnc_window_set_progressbar_window (GNC_WINDOW(data->window)); - gnc_file_save (); + gnc_file_save (GTK_WINDOW (data->window)); gnc_window_set_progressbar_window (NULL); } @@ -499,9 +499,9 @@ gnc_main_window_cmd_file_save_as (GtkAction *action, GncMainWindowActionData *da gnc_window_set_progressbar_window (GNC_WINDOW(data->window)); #ifdef HAVE_DBI_DBI_H - gnc_ui_file_access_for_save_as(); + gnc_ui_file_access_for_save_as (GTK_WINDOW (data->window)); #else - gnc_file_save_as (); + gnc_file_save_as (GTK_WINDOW (data->window)); #endif gnc_window_set_progressbar_window (NULL); } @@ -515,7 +515,7 @@ gnc_main_window_cmd_file_revert (GtkAction *action, GncMainWindowActionData *dat return; gnc_window_set_progressbar_window (GNC_WINDOW(data->window)); - gnc_file_revert(); + gnc_file_revert(GTK_WINDOW (data->window)); gnc_window_set_progressbar_window (NULL); } @@ -526,7 +526,7 @@ gnc_main_window_cmd_file_export_accounts (GtkAction *action, GncMainWindowAction gnc_window_set_progressbar_window (GNC_WINDOW(data->window)); #ifdef HAVE_DBI_DBI_H - gnc_ui_file_access_for_export(); + gnc_ui_file_access_for_export (GTK_WINDOW (data->window)); #else gnc_file_export (); #endif diff --git a/gnucash/gnome/top-level.c b/gnucash/gnome/top-level.c index 16d7f49939..6d6ee938ee 100644 --- a/gnucash/gnome/top-level.c +++ b/gnucash/gnome/top-level.c @@ -295,6 +295,8 @@ cleanup: g_error_free(error); if (file_guid) g_free(file_guid); + + gnc_totd_dialog_reparent (); } diff --git a/gnucash/gnucash-bin.c b/gnucash/gnucash-bin.c index 1569a416d1..0152a3a44e 100644 --- a/gnucash/gnucash-bin.c +++ b/gnucash/gnucash-bin.c @@ -646,7 +646,7 @@ inner_main (void *closure, int argc, char **argv) if (!nofile && (fn = get_file_to_load())) { gnc_update_splash_screen(_("Loading data..."), GNC_SPLASH_PERCENTAGE_UNKNOWN); - gnc_file_open_file(fn, /*open_readonly*/ FALSE); + gnc_file_open_file(gnc_get_splash_screen(), fn, /*open_readonly*/ FALSE); g_free(fn); } else if (gnc_prefs_get_bool(GNC_PREFS_GROUP_NEW_USER, GNC_PREF_FIRST_STARTUP)) diff --git a/gnucash/import-export/aqb/gnc-file-aqb-import.c b/gnucash/import-export/aqb/gnc-file-aqb-import.c index fd62912ca0..b7cbbddf87 100644 --- a/gnucash/import-export/aqb/gnc-file-aqb-import.c +++ b/gnucash/import-export/aqb/gnc-file-aqb-import.c @@ -68,7 +68,8 @@ typedef GWEN_SYNCIO GWEN_IO_LAYER; static QofLogModule log_module = GNC_MOD_IMPORT; void -gnc_file_aqbanking_import(const gchar *aqbanking_importername, +gnc_file_aqbanking_import(GtkWindow *parent, + const gchar *aqbanking_importername, const gchar *aqbanking_profilename, gboolean execute_transactions) { @@ -96,7 +97,7 @@ gnc_file_aqbanking_import(const gchar *aqbanking_importername, /* Select a file */ default_dir = gnc_get_default_directory(GNC_PREFS_GROUP_AQBANKING); - selected_filename = gnc_file_dialog(_("Select a file to import"), + selected_filename = gnc_file_dialog(parent, _("Select a file to import"), NULL, default_dir, GNC_FILE_DIALOG_IMPORT); g_free(default_dir); @@ -141,7 +142,7 @@ gnc_file_aqbanking_import(const gchar *aqbanking_importername, if (!importer) { g_warning("Import module %s not found", aqbanking_importername); - gnc_error_dialog(NULL, "%s", + gnc_error_dialog(parent, "%s", _("Import module for DTAUS import not found.")); goto cleanup; } @@ -229,7 +230,7 @@ gnc_file_aqbanking_import(const gchar *aqbanking_importername, /* Before importing the results, if this is a new book, let user specify * book options, since they affect how transactions are created */ if (gnc_is_new_book()) - gnc_new_book_option_display (GTK_WIDGET (gnc_ui_get_main_window(NULL))); + gnc_new_book_option_display (GTK_WIDGET (parent)); /* Import the results */ ieci = gnc_ab_import_context(context, AWAIT_TRANSACTIONS, @@ -319,7 +320,7 @@ gnc_file_aqbanking_import(const gchar *aqbanking_importername, if (!successful) { g_warning("%s", errstr->str); - gnc_error_dialog(NULL, + gnc_error_dialog(parent, _("An error occurred while executing jobs: %d of %d failed. " "Please check the log window or gnucash.trace for the exact " "error message.\n\n%s") @@ -329,13 +330,13 @@ gnc_file_aqbanking_import(const gchar *aqbanking_importername, { if (num_jobs == 0) { - gnc_info_dialog(NULL, + gnc_info_dialog(parent, _("No jobs to be send.") ); } else { - gnc_info_dialog(NULL, ngettext + gnc_info_dialog(parent, ngettext ("The job was executed successfully, but as a precaution " "please check the log window for potential errors.", "All %d jobs were executed successfully, but as a precaution " diff --git a/gnucash/import-export/aqb/gnc-file-aqb-import.h b/gnucash/import-export/aqb/gnc-file-aqb-import.h index 85e8d96860..a09d069224 100644 --- a/gnucash/import-export/aqb/gnc-file-aqb-import.h +++ b/gnucash/import-export/aqb/gnc-file-aqb-import.h @@ -57,7 +57,8 @@ G_BEGIN_DECLS * transactions as online jobs over aqbanking/HBCI. If FALSE, just import the * transactions and that's it. */ -void gnc_file_aqbanking_import (const gchar *aqbanking_importername, +void gnc_file_aqbanking_import (GtkWindow *parent, + const gchar *aqbanking_importername, const gchar *aqbanking_formatname, gboolean exec_as_aqbanking_jobs); diff --git a/gnucash/import-export/aqb/gnc-plugin-aqbanking.c b/gnucash/import-export/aqb/gnc-plugin-aqbanking.c index 7ac5dfed0a..fa0d886127 100644 --- a/gnucash/import-export/aqb/gnc-plugin-aqbanking.c +++ b/gnucash/import-export/aqb/gnc-plugin-aqbanking.c @@ -664,7 +664,8 @@ gnc_plugin_ab_cmd_mt940_import(GtkAction *action, GncMainWindowActionData *data) gchar *format = gnc_prefs_get_string(GNC_PREFS_GROUP_AQBANKING, GNC_PREF_FORMAT_SWIFT940); gnc_main_window = data->window; - gnc_file_aqbanking_import("swift", format ? format : "swift-mt940", FALSE); + gnc_file_aqbanking_import (GTK_WINDOW (gnc_main_window), + "swift", format ? format : "swift-mt940", FALSE); g_free(format); } @@ -674,7 +675,8 @@ gnc_plugin_ab_cmd_mt942_import(GtkAction *action, GncMainWindowActionData *data) gchar *format = gnc_prefs_get_string(GNC_PREFS_GROUP_AQBANKING, GNC_PREF_FORMAT_SWIFT942); gnc_main_window = data->window; - gnc_file_aqbanking_import("swift", format ? format : "swift-mt942", FALSE); + gnc_file_aqbanking_import (GTK_WINDOW (gnc_main_window), + "swift", format ? format : "swift-mt942", FALSE); g_free(format); } @@ -684,7 +686,8 @@ gnc_plugin_ab_cmd_dtaus_import(GtkAction *action, GncMainWindowActionData *data) gchar *format = gnc_prefs_get_string(GNC_PREFS_GROUP_AQBANKING, GNC_PREF_FORMAT_DTAUS); gnc_main_window = data->window; - gnc_file_aqbanking_import("dtaus", format ? format : "default", FALSE); + gnc_file_aqbanking_import (GTK_WINDOW (gnc_main_window), + "dtaus", format ? format : "default", FALSE); g_free(format); } @@ -695,7 +698,8 @@ gnc_plugin_ab_cmd_dtaus_importsend(GtkAction *action, gchar *format = gnc_prefs_get_string(GNC_PREFS_GROUP_AQBANKING, GNC_PREF_FORMAT_DTAUS); gnc_main_window = data->window; - gnc_file_aqbanking_import("dtaus", format ? format : "default", TRUE); + gnc_file_aqbanking_import (GTK_WINDOW (gnc_main_window), + "dtaus", format ? format : "default", TRUE); g_free(format); } diff --git a/gnucash/import-export/bi-import/dialog-bi-import-gui.c b/gnucash/import-export/bi-import/dialog-bi-import-gui.c index 92ad615f62..c7f302e5c6 100644 --- a/gnucash/import-export/bi-import/dialog-bi-import-gui.c +++ b/gnucash/import-export/bi-import/dialog-bi-import-gui.c @@ -176,7 +176,7 @@ gnc_plugin_bi_import_showGUI (GtkWindow *parent) } static gchar * -gnc_plugin_bi_import_getFilename(void) +gnc_plugin_bi_import_getFilename(GtkWindow *parent) { // prepare file import dialog gchar *filename = NULL; @@ -191,7 +191,7 @@ gnc_plugin_bi_import_getFilename(void) gtk_file_filter_set_name (filter, "text files (*.txt)"); gtk_file_filter_add_pattern (filter, "*.txt"); filters = g_list_append( filters, filter ); - filename = gnc_file_dialog(_("Import Bills or Invoices from csv"), filters, NULL, GNC_FILE_DIALOG_IMPORT); + filename = gnc_file_dialog(parent, _("Import Bills or Invoices from csv"), filters, NULL, GNC_FILE_DIALOG_IMPORT); return filename; } @@ -279,7 +279,7 @@ void gnc_bi_import_gui_buttonOpen_cb (GtkWidget *widget, gpointer data) gchar *filename = NULL; BillImportGui *gui = data; - filename = gnc_plugin_bi_import_getFilename(); + filename = gnc_plugin_bi_import_getFilename (gnc_ui_get_gtk_window (widget)); if (filename) { //printf("Setting filename"); // debug diff --git a/gnucash/import-export/customer-import/dialog-customer-import-gui.c b/gnucash/import-export/customer-import/dialog-customer-import-gui.c index d4d5c68d69..a4160867c1 100644 --- a/gnucash/import-export/customer-import/dialog-customer-import-gui.c +++ b/gnucash/import-export/customer-import/dialog-customer-import-gui.c @@ -154,7 +154,7 @@ gnc_plugin_customer_import_showGUI(void) } static gchar * -gnc_plugin_customer_import_getFilename(void) +gnc_plugin_customer_import_getFilename (GtkWindow *parent) { // prepare file import dialog gchar *filename; @@ -169,7 +169,8 @@ gnc_plugin_customer_import_getFilename(void) gtk_file_filter_set_name (filter, "text files (*.txt)"); gtk_file_filter_add_pattern (filter, "*.txt"); filters = g_list_append( filters, filter ); - filename = gnc_file_dialog(_("Import Customers from csv"), filters, NULL, GNC_FILE_DIALOG_IMPORT); + filename = gnc_file_dialog(parent, + _("Import Customers from csv"), filters, NULL, GNC_FILE_DIALOG_IMPORT); return filename; } @@ -256,7 +257,7 @@ void gnc_customer_import_gui_buttonOpen_cb (GtkWidget *widget, gpointer data) gchar *filename; CustomerImportGui *gui = data; - filename = gnc_plugin_customer_import_getFilename(); + filename = gnc_plugin_customer_import_getFilename (gnc_ui_get_gtk_window (widget)); if (filename) { gtk_entry_set_text( GTK_ENTRY(gui->entryFilename), filename ); diff --git a/gnucash/import-export/log-replay/gnc-log-replay.c b/gnucash/import-export/log-replay/gnc-log-replay.c index 0a61a7b89e..a559a160cd 100644 --- a/gnucash/import-export/log-replay/gnc-log-replay.c +++ b/gnucash/import-export/log-replay/gnc-log-replay.c @@ -544,7 +544,7 @@ static void process_trans_record( FILE *log_file) } } -void gnc_file_log_replay (void) +void gnc_file_log_replay (GtkWindow *parent) { char *selected_filename; char *default_dir; @@ -574,7 +574,8 @@ void gnc_file_log_replay (void) filter = gtk_file_filter_new(); gtk_file_filter_set_name(filter, "*.log"); gtk_file_filter_add_pattern(filter, "*.[Ll][Oo][Gg]"); - selected_filename = gnc_file_dialog(_("Select a .log file to replay"), + selected_filename = gnc_file_dialog(parent, + _("Select a .log file to replay"), g_list_prepend(NULL, filter), default_dir, GNC_FILE_DIALOG_OPEN); diff --git a/gnucash/import-export/log-replay/gnc-log-replay.h b/gnucash/import-export/log-replay/gnc-log-replay.h index 8487a08f7b..734a1c5a3d 100644 --- a/gnucash/import-export/log-replay/gnc-log-replay.h +++ b/gnucash/import-export/log-replay/gnc-log-replay.h @@ -25,9 +25,11 @@ #ifndef OFX_IMPORT_H #define OFX_IMPORT_H +#include + /** The gnc_file_log_replay() routine will pop up a standard file * selection dialogue asking the user to pick a log file to replay. If one * is selected the the .log file is opened and read. It's contents * are then silently merged in the current log file. */ -void gnc_file_log_replay (void); +void gnc_file_log_replay (GtkWindow *parent); #endif diff --git a/gnucash/import-export/log-replay/gnc-plugin-log-replay.c b/gnucash/import-export/log-replay/gnc-plugin-log-replay.c index 19247c2f6a..87b54ce1c0 100644 --- a/gnucash/import-export/log-replay/gnc-plugin-log-replay.c +++ b/gnucash/import-export/log-replay/gnc-plugin-log-replay.c @@ -144,7 +144,7 @@ gnc_plugin_log_replay_cmd_new_log_replay (GtkAction *action, GncMainWindowActionData *data) { gnc_suspend_gui_refresh(); - gnc_file_log_replay (); + gnc_file_log_replay (GTK_WINDOW (data->window)); gnc_resume_gui_refresh(); } diff --git a/gnucash/import-export/ofx/gnc-ofx-import.c b/gnucash/import-export/ofx/gnc-ofx-import.c index 4276e3ba51..cbfe10ad66 100644 --- a/gnucash/import-export/ofx/gnc-ofx-import.c +++ b/gnucash/import-export/ofx/gnc-ofx-import.c @@ -965,7 +965,7 @@ double ofx_get_investment_amount(const struct OfxTransactionData* data) } } -void gnc_file_ofx_import (void) +void gnc_file_ofx_import (GtkWindow *parent) { extern int ofx_PARSER_msg; extern int ofx_DEBUG_msg; @@ -987,7 +987,8 @@ void gnc_file_ofx_import (void) DEBUG("gnc_file_ofx_import(): Begin...\n"); default_dir = gnc_get_default_directory(GNC_PREFS_GROUP); - selected_filename = gnc_file_dialog(_("Select an OFX/QFX file to process"), + selected_filename = gnc_file_dialog(parent, + _("Select an OFX/QFX file to process"), NULL, default_dir, GNC_FILE_DIALOG_IMPORT); diff --git a/gnucash/import-export/ofx/gnc-ofx-import.h b/gnucash/import-export/ofx/gnc-ofx-import.h index 08421840bb..dfc8547dd0 100644 --- a/gnucash/import-export/ofx/gnc-ofx-import.h +++ b/gnucash/import-export/ofx/gnc-ofx-import.h @@ -25,10 +25,12 @@ #ifndef OFX_IMPORT_H #define OFX_IMPORT_H +#include + /** The gnc_file_ofx_import() routine will pop up a standard file * selection dialogue asking the user to pick a OFX/QFX file. If one * is selected the the OFX file is opened and read. It's contents * are merged into the existing session (if any). The current * session continues to remain open for editing. */ -void gnc_file_ofx_import (void); +void gnc_file_ofx_import (GtkWindow *parent); #endif diff --git a/gnucash/import-export/ofx/gnc-plugin-ofx.c b/gnucash/import-export/ofx/gnc-plugin-ofx.c index 67d23ca2af..c456261a60 100644 --- a/gnucash/import-export/ofx/gnc-plugin-ofx.c +++ b/gnucash/import-export/ofx/gnc-plugin-ofx.c @@ -141,7 +141,7 @@ static void gnc_plugin_ofx_cmd_import (GtkAction *action, GncMainWindowActionData *data) { - gnc_file_ofx_import (); + gnc_file_ofx_import (GTK_WINDOW (data->window)); } diff --git a/gnucash/import-export/qif-imp/assistant-qif-import.c b/gnucash/import-export/qif-imp/assistant-qif-import.c index b669a054e2..18c9fae52d 100644 --- a/gnucash/import-export/qif-imp/assistant-qif-import.c +++ b/gnucash/import-export/qif-imp/assistant-qif-import.c @@ -1365,7 +1365,7 @@ gnc_ui_qif_import_close_cb(GtkAssistant *gtkassistant, gpointer user_data) if (!wind->acct_tree_found) { qof_book_mark_session_dirty(gnc_get_current_book()); - gnc_ui_file_access_for_save_as(); + gnc_ui_file_access_for_save_as (gnc_ui_get_main_window (GTK_WIDGET (gtkassistant))); } gnc_close_gui_component_by_data( ASSISTANT_QIF_IMPORT_CM_CLASS, wind ); @@ -1617,7 +1617,8 @@ gnc_ui_qif_import_select_file_cb(GtkButton * button, filter = gtk_file_filter_new(); gtk_file_filter_set_name(filter, "*.qif"); gtk_file_filter_add_pattern(filter, "*.[Qq][Ii][Ff]"); - new_file_name = gnc_file_dialog(_("Select QIF File"), + new_file_name = gnc_file_dialog(gnc_ui_get_gtk_window (GTK_WIDGET (button)), + _("Select QIF File"), g_list_prepend (NULL, filter), default_dir, GNC_FILE_DIALOG_IMPORT); diff --git a/gnucash/report/report-gnome/gnc-plugin-page-report.c b/gnucash/report/report-gnome/gnc-plugin-page-report.c index 67743c81f3..cd472619dd 100644 --- a/gnucash/report/report-gnome/gnc-plugin-page-report.c +++ b/gnucash/report/report-gnome/gnc-plugin-page-report.c @@ -1486,7 +1486,8 @@ gnc_get_export_filename (SCM choice) title = g_strdup_printf (_("Save %s To File"), type); default_dir = gnc_get_default_directory(GNC_PREFS_GROUP_REPORT); - filepath = gnc_file_dialog (title, NULL, default_dir, GNC_FILE_DIALOG_EXPORT); + filepath = gnc_file_dialog (gnc_ui_get_main_window (NULL), + title, NULL, default_dir, GNC_FILE_DIALOG_EXPORT); /* Try to test for extension on file name, add if missing */ if (g_strrstr(filepath, ".") == NULL)