aboutsummaryrefslogtreecommitdiffstats
path: root/e-util
diff options
context:
space:
mode:
authorMichael Meeks <michael.meeks@novell.com>2010-04-22 00:06:38 +0800
committerMichael Meeks <michael.meeks@novell.com>2010-04-22 00:06:38 +0800
commita84b1a325147e6321b90f491a1dc686e588869dc (patch)
tree409a66488e99ed288c9ff2b4eb90f1993ae537ab /e-util
parente9c4388490925de25b029fa0d6437a34a6386c05 (diff)
parentece7dcdcea82d0e1fbc104cf48b2928a449b8748 (diff)
downloadgsoc2013-evolution-a84b1a325147e6321b90f491a1dc686e588869dc.tar.gz
gsoc2013-evolution-a84b1a325147e6321b90f491a1dc686e588869dc.tar.zst
gsoc2013-evolution-a84b1a325147e6321b90f491a1dc686e588869dc.zip
Merge commit 'origin/gnome-2-30' into express2
Diffstat (limited to 'e-util')
-rw-r--r--e-util/e-activity.c2
-rw-r--r--e-util/e-print.c33
-rw-r--r--e-util/gconf-bridge.c36
3 files changed, 49 insertions, 22 deletions
diff --git a/e-util/e-activity.c b/e-util/e-activity.c
index 9f8faf75cb..f8a3510049 100644
--- a/e-util/e-activity.c
+++ b/e-util/e-activity.c
@@ -234,7 +234,7 @@ activity_describe (EActivity *activity)
* complete is known. */
g_string_printf (
string, _("%s (%d%% complete)"), text,
- (gint) (percent * 100.0 + 0.5));
+ (gint) (percent));
}
return g_string_free (string, FALSE);
diff --git a/e-util/e-print.c b/e-util/e-print.c
index 8faeafc0f5..bb5ce9067a 100644
--- a/e-util/e-print.c
+++ b/e-util/e-print.c
@@ -92,17 +92,12 @@ load_settings (GKeyFile *key_file)
GtkPrintSettings *settings;
GError *error = NULL;
- /* XXX Use gtk_print_settings_load_key_file() here once
- * GTK+ 2.14 becomes available. */
+ settings = gtk_print_settings_new ();
- if (!g_key_file_has_group (key_file, PRINT_SETTINGS_GROUP_NAME))
- return gtk_print_settings_new ();
-
- settings = gtk_print_settings_new_from_key_file (
- key_file, NULL, &error);
+ gtk_print_settings_load_key_file (
+ settings, key_file, PRINT_SETTINGS_GROUP_NAME, &error);
if (error != NULL) {
- settings = gtk_print_settings_new ();
g_warning ("%s", error->message);
g_error_free (error);
}
@@ -114,6 +109,17 @@ static void
save_settings (GtkPrintSettings *settings,
GKeyFile *key_file)
{
+ /* XXX GtkPrintSettings does not distinguish between settings
+ * that should persist and one-time-only settings, such as
+ * page range or number of copies. All print settings are
+ * persistent by default and we opt out particular keys by
+ * popular demand. */
+
+ gtk_print_settings_unset (settings, GTK_PRINT_SETTINGS_N_COPIES);
+ gtk_print_settings_unset (settings, GTK_PRINT_SETTINGS_PAGE_RANGES);
+ gtk_print_settings_unset (settings, GTK_PRINT_SETTINGS_PAGE_SET);
+ gtk_print_settings_unset (settings, GTK_PRINT_SETTINGS_PRINT_PAGES);
+
gtk_print_settings_to_key_file (settings, key_file, NULL);
}
@@ -123,17 +129,12 @@ load_page_setup (GKeyFile *key_file)
GtkPageSetup *page_setup;
GError *error = NULL;
- /* XXX Use gtk_page_setup_load_key_file() here once
- * GTK+ 2.14 becomes available. */
-
- if (!g_key_file_has_group (key_file, PAGE_SETUP_GROUP_NAME))
- return gtk_page_setup_new ();
+ page_setup = gtk_page_setup_new ();
- page_setup = gtk_page_setup_new_from_key_file (
- key_file, NULL, &error);
+ gtk_page_setup_load_key_file (
+ page_setup, key_file, PAGE_SETUP_GROUP_NAME, &error);
if (error != NULL) {
- page_setup = gtk_page_setup_new ();
g_warning ("%s", error->message);
g_error_free (error);
}
diff --git a/e-util/gconf-bridge.c b/e-util/gconf-bridge.c
index d0f884d8fa..d67a238080 100644
--- a/e-util/gconf-bridge.c
+++ b/e-util/gconf-bridge.c
@@ -53,6 +53,8 @@ typedef struct {
that have not received change notification
yet. */
+ GConfValue *use_first_value; /* Not NULL when the object is a Widget and wasn't realized */
+
GObject *object;
GParamSpec *prop;
gulong prop_notify_id;
@@ -263,6 +265,9 @@ prop_binding_sync_prop_to_pref (PropBinding *binding)
binding->prop->name,
&value);
+ if (binding->use_first_value) {
+ gconf_value = binding->use_first_value;
+ } else
switch (value.g_type) {
case G_TYPE_STRING:
gconf_value = gconf_value_new (GCONF_VALUE_STRING);
@@ -356,10 +361,17 @@ prop_binding_sync_prop_to_pref (PropBinding *binding)
/* Set to GConf */
gconf_client_set (bridge->client, binding->key, gconf_value, NULL);
- /* Store until change notification comes in, so that we are able
- * to ignore it */
- binding->val_changes = g_slist_append (binding->val_changes,
- gconf_value);
+ if (binding->use_first_value) {
+ gconf_value_free (binding->use_first_value);
+ binding->use_first_value = NULL;
+
+ gconf_client_notify (bridge->client, binding->key);
+ } else {
+ /* Store until change notification comes in, so that we are able
+ * to ignore it */
+ binding->val_changes = g_slist_append (binding->val_changes,
+ gconf_value);
+ }
done:
g_value_unset (&value);
@@ -513,6 +525,7 @@ gconf_bridge_bind_property_full (GConfBridge *bridge,
binding->id = new_id ();
binding->delayed_mode = delayed_sync;
binding->val_changes = NULL;
+ binding->use_first_value = NULL;
binding->key = g_strdup (key);
binding->object = object;
binding->prop = pspec;
@@ -536,7 +549,15 @@ gconf_bridge_bind_property_full (GConfBridge *bridge,
val = gconf_client_get (bridge->client, key, NULL);
if (val) {
prop_binding_sync_pref_to_prop (binding, val);
- gconf_value_free (val);
+ #if GTK_CHECK_VERSION(2,19,7)
+ if (GTK_IS_WIDGET (object) && !gtk_widget_get_realized (GTK_WIDGET (object))) {
+ #else
+ if (GTK_IS_WIDGET (object) && !GTK_WIDGET_REALIZED (object)) {
+ #endif
+ binding->use_first_value = val;
+ } else {
+ gconf_value_free (val);
+ }
}
/* Handle case where watched object gets destroyed */
@@ -627,6 +648,11 @@ prop_binding_unbind (PropBinding *binding)
(binding->val_changes, binding->val_changes);
}
+ if (binding->use_first_value) {
+ gconf_value_free (binding->use_first_value);
+ binding->use_first_value = NULL;
+ }
+
/* The object might have been destroyed .. */
if (binding->object) {
g_signal_handler_disconnect (binding->object,