Branch: refs/heads/master Author: Thomas Martitz kugel@rockbox.org Committer: Thomas Martitz kugel@rockbox.org Date: Sat, 24 May 2014 13:05:14 UTC Commit: b487d8dea3c2c3d448431ae91e06470b43d7d6bc https://github.com/geany/geany/commit/b487d8dea3c2c3d448431ae91e06470b43d7d6...
Log Message: ----------- infobars: Do not show reload and resave messages more than once since only the last one (respectively) is significant to the user.
Modified Paths: -------------- src/document.c src/documentprivate.h
Modified: src/document.c 52 lines changed, 36 insertions(+), 16 deletions(-) =================================================================== @@ -3148,6 +3148,8 @@ static void on_monitor_reload_file_response(GtkWidget *bar, gint response_id, Ge
if (response_id == GTK_RESPONSE_ACCEPT) document_reload_file(doc, doc->encoding); + + doc->priv->info_bars[MSG_TYPE_RELOAD] = NULL; }
@@ -3155,16 +3157,22 @@ static void monitor_reload_file(GeanyDocument *doc) { gchar *base_name = g_path_get_basename(doc->file_name);
- document_show_message(doc, GTK_MESSAGE_QUESTION, on_monitor_reload_file_response, - _("_Reload"), GTK_RESPONSE_ACCEPT, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - NULL, GTK_RESPONSE_NONE, - _("Do you want to reload it?"), - _("The file '%s' on the disk is more recent than the current buffer."), - base_name); + /* show this message only once */ + if (doc->priv->info_bars[MSG_TYPE_RELOAD] == NULL) + { + GtkWidget *bar;
- protect_document(doc); + bar = document_show_message(doc, GTK_MESSAGE_QUESTION, on_monitor_reload_file_response, + _("_Reload"), GTK_RESPONSE_ACCEPT, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + NULL, GTK_RESPONSE_NONE, + _("Do you want to reload it?"), + _("The file '%s' on the disk is more recent than the current buffer."), + base_name);
+ protect_document(doc); + doc->priv->info_bars[MSG_TYPE_RELOAD] = bar; + } g_free(base_name); }
@@ -3186,20 +3194,31 @@ static void on_monitor_resave_missing_file_response(GtkWidget *bar, /* don't prompt more than once */ SETPTR(doc->real_path, NULL); } + + doc->priv->info_bars[MSG_TYPE_RESAVE] = NULL; }
static void monitor_resave_missing_file(GeanyDocument *doc) { - document_show_message(doc, GTK_MESSAGE_WARNING, on_monitor_resave_missing_file_response, - GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - NULL, GTK_RESPONSE_NONE, - _("Try to resave the file?"), - _("File "%s" was not found on disk!"), - doc->file_name); + GtkWidget *bar;
- protect_document(doc); + if (doc->priv->info_bars[MSG_TYPE_RESAVE] == NULL) + { + GtkWidget *bar; + + bar = document_show_message(doc, GTK_MESSAGE_WARNING, + on_monitor_resave_missing_file_response, + GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + NULL, GTK_RESPONSE_NONE, + _("Try to resave the file?"), + _("File "%s" was not found on disk!"), + doc->file_name); + + protect_document(doc); + doc->priv->info_bars[MSG_TYPE_RESAVE] = bar; + } }
@@ -3253,6 +3272,7 @@ gboolean document_check_disk_status(GeanyDocument *doc, gboolean force) } else if (doc->priv->mtime < st.st_mtime) { + /* make sure the user is not prompted again after he cancelled the "reload file?" message */ doc->priv->mtime = st.st_mtime; monitor_reload_file(doc); /* doc may be closed now */
Modified: src/documentprivate.h 9 lines changed, 9 insertions(+), 0 deletions(-) =================================================================== @@ -53,6 +53,13 @@ typedef struct FileEncoding } FileEncoding;
+enum +{ + MSG_TYPE_RELOAD, + MSG_TYPE_RESAVE, + + NUM_MSG_TYPES +};
/* Private GeanyDocument fields */ typedef struct GeanyDocumentPrivate @@ -89,6 +96,8 @@ typedef struct GeanyDocumentPrivate /* Whether it's temoporarily protected (read-only and saving is prevented). Does * not imply doc->readonly as writable files can be protected */ gint protected; + /* Save pointer to info bars allowing to cancel them programatically (to avoid multiple ones) */ + GtkWidget *info_bars[NUM_MSG_TYPES]; } GeanyDocumentPrivate;
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).