[balsa/gtk3] Set up progress bar in an idle callback
- From: Peter Bloomfield <PeterB src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [balsa/gtk3] Set up progress bar in an idle callback
- Date: Thu, 21 Feb 2013 02:51:01 +0000 (UTC)
commit e4a8c35255943f7fd315969a26c3f27aacc44abc
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date: Wed Feb 20 21:48:50 2013 -0500
Set up progress bar in an idle callback
* src/main-window.c: set up progress bar in an idle callback.
ChangeLog | 4 ++++
src/main-window.c | 30 ++++++++++++++++++++++++++----
2 files changed, 30 insertions(+), 4 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 83451e1..5c5d615 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
2013-02-20 Peter Bloomfield
+ * src/main-window.c: set up progress bar in an idle callback.
+
+2013-02-20 Peter Bloomfield
+
* src/main-window.c: change button sensitivity in an idle
callback.
diff --git a/src/main-window.c b/src/main-window.c
index 91a06b6..554ccd9 100644
--- a/src/main-window.c
+++ b/src/main-window.c
@@ -5427,10 +5427,29 @@ balsa_window_decrease_activity(BalsaWindow * window, const gchar * message)
* from 0 to 1. If the bar is already in activity mode, the function
* returns false; if the initialization is successful it returns true.
**/
+
+typedef struct {
+ GtkProgressBar *progress_bar;
+ gchar *text;
+} BalsaWindowSetupProgressInfo;
+
+static gboolean
+bw_setup_progress_idle_cb(BalsaWindowSetupProgressInfo * info)
+{
+ gtk_progress_bar_set_text(info->progress_bar, info->text);
+ gtk_progress_bar_set_fraction(info->progress_bar, 0);
+
+ g_object_unref(info->progress_bar);
+ g_free(info->text);
+ g_free(info);
+
+ return FALSE;
+}
+
gboolean
balsa_window_setup_progress(BalsaWindow * window, const gchar * text)
{
- GtkProgressBar *progress_bar;
+ BalsaWindowSetupProgressInfo *info;
if (text) {
/* make sure the progress bar is currently unused */
@@ -5440,9 +5459,12 @@ balsa_window_setup_progress(BalsaWindow * window, const gchar * text)
} else
window->progress_type = BALSA_PROGRESS_NONE;
- progress_bar = GTK_PROGRESS_BAR(window->progress_bar);
- gtk_progress_bar_set_text(progress_bar, text);
- gtk_progress_bar_set_fraction(progress_bar, 0);
+ /* Update the display in an idle callback, in case we were called in
+ * a sub-thread.*/
+ info = g_new(BalsaWindowSetupProgressInfo, 1);
+ info->progress_bar = g_object_ref(window->progress_bar);
+ info->text = g_strdup(text);
+ g_idle_add((GSourceFunc) bw_setup_progress_idle_cb, info);
return TRUE;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]