evolution r35090 - in branches/mbarnes-composer: . addressbook addressbook/gui/component addressbook/gui/contact-list-editor addressbook/gui/merging addressbook/gui/widgets calendar calendar/common calendar/conduits/calendar calendar/conduits/memo calendar/conduits/todo calendar/gui calendar/gui/dialogs composer e-util help help/es help/quickref help/quickref/pl mail plugins/backup-restore plugins/exchange-operations plugins/external-editor plugins/groupwise-features plugins/import-ics-attachments plugins/itip-formatter plugins/save-calendar po shell widgets widgets/e-timezone-dialog widgets/misc widgets/table widgets/text
- From: mbarnes svn gnome org
- To: svn-commits-list gnome org
- Subject: evolution r35090 - in branches/mbarnes-composer: . addressbook addressbook/gui/component addressbook/gui/contact-list-editor addressbook/gui/merging addressbook/gui/widgets calendar calendar/common calendar/conduits/calendar calendar/conduits/memo calendar/conduits/todo calendar/gui calendar/gui/dialogs composer e-util help help/es help/quickref help/quickref/pl mail plugins/backup-restore plugins/exchange-operations plugins/external-editor plugins/groupwise-features plugins/import-ics-attachments plugins/itip-formatter plugins/save-calendar po shell widgets widgets/e-timezone-dialog widgets/misc widgets/table widgets/text
- Date: Tue, 26 Feb 2008 05:33:37 +0000 (GMT)
Author: mbarnes
Date: Tue Feb 26 05:33:35 2008
New Revision: 35090
URL: http://svn.gnome.org/viewvc/evolution?rev=35090&view=rev
Log:
Merge revisions 34994:35089 from trunk.
Added:
branches/mbarnes-composer/help/quickref/pl/
- copied from r35089, /trunk/help/quickref/pl/
Modified:
branches/mbarnes-composer/ChangeLog
branches/mbarnes-composer/NEWS
branches/mbarnes-composer/addressbook/ChangeLog
branches/mbarnes-composer/addressbook/gui/component/addressbook-migrate.c
branches/mbarnes-composer/addressbook/gui/component/addressbook.c
branches/mbarnes-composer/addressbook/gui/contact-list-editor/e-contact-list-editor.c
branches/mbarnes-composer/addressbook/gui/merging/eab-contact-merging.c
branches/mbarnes-composer/addressbook/gui/widgets/e-addressbook-reflow-adapter.c
branches/mbarnes-composer/calendar/ChangeLog
branches/mbarnes-composer/calendar/common/authentication.c
branches/mbarnes-composer/calendar/common/authentication.h
branches/mbarnes-composer/calendar/conduits/calendar/calendar-conduit.c
branches/mbarnes-composer/calendar/conduits/memo/memo-conduit.c
branches/mbarnes-composer/calendar/conduits/todo/todo-conduit.c
branches/mbarnes-composer/calendar/gui/calendar-config.c
branches/mbarnes-composer/calendar/gui/comp-editor-factory.c
branches/mbarnes-composer/calendar/gui/comp-util.c
branches/mbarnes-composer/calendar/gui/dialogs/comp-editor.c
branches/mbarnes-composer/calendar/gui/dialogs/e-send-options-utils.c
branches/mbarnes-composer/calendar/gui/dialogs/recurrence-page.c
branches/mbarnes-composer/calendar/gui/e-cal-model-tasks.c
branches/mbarnes-composer/calendar/gui/e-cal-model.c
branches/mbarnes-composer/calendar/gui/e-calendar-table.c
branches/mbarnes-composer/calendar/gui/e-calendar-table.etspec
branches/mbarnes-composer/calendar/gui/e-calendar-view.c
branches/mbarnes-composer/calendar/gui/e-day-view-main-item.c
branches/mbarnes-composer/calendar/gui/e-day-view-top-item.c
branches/mbarnes-composer/calendar/gui/e-day-view.c
branches/mbarnes-composer/calendar/gui/e-itip-control.c
branches/mbarnes-composer/calendar/gui/e-memo-table.c
branches/mbarnes-composer/calendar/gui/e-memos.c
branches/mbarnes-composer/calendar/gui/e-tasks.c
branches/mbarnes-composer/calendar/gui/e-week-view.c
branches/mbarnes-composer/calendar/gui/gnome-cal.c
branches/mbarnes-composer/calendar/gui/itip-utils.c
branches/mbarnes-composer/calendar/gui/migration.c
branches/mbarnes-composer/calendar/gui/print.c
branches/mbarnes-composer/composer/ChangeLog
branches/mbarnes-composer/composer/e-msg-composer.c
branches/mbarnes-composer/configure.in
branches/mbarnes-composer/e-util/ChangeLog
branches/mbarnes-composer/e-util/e-config.c
branches/mbarnes-composer/e-util/e-text-event-processor-emacs-like.c
branches/mbarnes-composer/help/ChangeLog
branches/mbarnes-composer/help/es/es.po
branches/mbarnes-composer/help/quickref/Makefile.am
branches/mbarnes-composer/mail/ChangeLog
branches/mbarnes-composer/mail/em-composer-utils.c
branches/mbarnes-composer/mail/em-folder-browser.c
branches/mbarnes-composer/mail/em-folder-view.c
branches/mbarnes-composer/mail/em-format-html.c
branches/mbarnes-composer/mail/em-format-quote.c
branches/mbarnes-composer/mail/em-popup.c
branches/mbarnes-composer/mail/mail-component.c
branches/mbarnes-composer/mail/mail-folder-cache.c
branches/mbarnes-composer/mail/mail-folder-cache.h
branches/mbarnes-composer/mail/mail-ops.c
branches/mbarnes-composer/mail/mail-ops.h
branches/mbarnes-composer/mail/mail-send-recv.c
branches/mbarnes-composer/mail/message-list.c
branches/mbarnes-composer/plugins/backup-restore/ChangeLog
branches/mbarnes-composer/plugins/backup-restore/backup.c
branches/mbarnes-composer/plugins/exchange-operations/ChangeLog
branches/mbarnes-composer/plugins/exchange-operations/exchange-account-setup.c
branches/mbarnes-composer/plugins/exchange-operations/exchange-delegates-user.c
branches/mbarnes-composer/plugins/exchange-operations/exchange-folder-subscription.c
branches/mbarnes-composer/plugins/external-editor/ChangeLog
branches/mbarnes-composer/plugins/external-editor/external-editor.c
branches/mbarnes-composer/plugins/groupwise-features/ChangeLog
branches/mbarnes-composer/plugins/groupwise-features/install-shared.c
branches/mbarnes-composer/plugins/groupwise-features/send-options.c
branches/mbarnes-composer/plugins/groupwise-features/share-folder-common.c
branches/mbarnes-composer/plugins/import-ics-attachments/ChangeLog
branches/mbarnes-composer/plugins/import-ics-attachments/icsimporter.c
branches/mbarnes-composer/plugins/itip-formatter/ChangeLog
branches/mbarnes-composer/plugins/itip-formatter/itip-formatter.c
branches/mbarnes-composer/plugins/itip-formatter/itip-view.c
branches/mbarnes-composer/plugins/save-calendar/ChangeLog
branches/mbarnes-composer/plugins/save-calendar/ical-format.c
branches/mbarnes-composer/po/ChangeLog
branches/mbarnes-composer/po/ar.po
branches/mbarnes-composer/po/ca.po
branches/mbarnes-composer/po/de.po
branches/mbarnes-composer/po/el.po
branches/mbarnes-composer/po/en_GB.po
branches/mbarnes-composer/po/es.po
branches/mbarnes-composer/po/et.po
branches/mbarnes-composer/po/eu.po
branches/mbarnes-composer/po/fi.po
branches/mbarnes-composer/po/gl.po
branches/mbarnes-composer/po/it.po
branches/mbarnes-composer/po/ja.po
branches/mbarnes-composer/po/ko.po
branches/mbarnes-composer/po/mk.po
branches/mbarnes-composer/po/nb.po
branches/mbarnes-composer/po/ne.po
branches/mbarnes-composer/po/nl.po
branches/mbarnes-composer/po/oc.po
branches/mbarnes-composer/po/pl.po
branches/mbarnes-composer/po/pt.po
branches/mbarnes-composer/po/pt_BR.po
branches/mbarnes-composer/po/sl.po
branches/mbarnes-composer/po/sv.po
branches/mbarnes-composer/po/th.po
branches/mbarnes-composer/po/tr.po
branches/mbarnes-composer/po/vi.po
branches/mbarnes-composer/shell/ChangeLog
branches/mbarnes-composer/shell/e-shell-nm.c
branches/mbarnes-composer/shell/main.c
branches/mbarnes-composer/widgets/ChangeLog
branches/mbarnes-composer/widgets/e-timezone-dialog/e-timezone-dialog.c
branches/mbarnes-composer/widgets/e-timezone-dialog/e-timezone-dialog.glade
branches/mbarnes-composer/widgets/misc/ChangeLog
branches/mbarnes-composer/widgets/misc/e-calendar-item.c
branches/mbarnes-composer/widgets/misc/e-cursors.c
branches/mbarnes-composer/widgets/table/ChangeLog
branches/mbarnes-composer/widgets/table/e-table-item.c
branches/mbarnes-composer/widgets/text/e-text.c
Modified: branches/mbarnes-composer/NEWS
==============================================================================
--- branches/mbarnes-composer/NEWS (original)
+++ branches/mbarnes-composer/NEWS Tue Feb 26 05:33:35 2008
@@ -1,3 +1,50 @@
+Evolution 2.21.91 2008-02-11
+----------------------------
+
+New in 2.21.91
+ Documentation update for 2.22. (PC Radhika)
+
+Bug Fixes:
+ #240073 - Fix regression in strike out completed task (Milan Crha)
+ #249501 - Fix for attachments with '%' in the filename to be handled well (Milan Crha)
+ #395939 - Free alarms (Milan Crha)
+ #411576 - Give gconf option to have same fonts in vertical view column. (Srinivasa Ragavan)
+ #468427 - Fixes lots of crashes around itip-formatter (Srinivasa Ragavan)
+ #502571 - Name change to Crash Detection (Srinivasa Ragavan)
+ #506948 - Unescape while copying urls (Srinivasa Ragavan)
+ #509741 - Crash while asking certificate popup (Matthew Barnes)
+ #510642 - Improved error messages (Suman Manjunath)
+ #514736 - Added application/ms-tnef to supported mime type. (Paul Bolle)
+ #514771 - Fixes a crash while decoding attachments (Paul Bolle)
+ #511600 - Doc fixes (PC Radhika)
+ #511602 - Doc fixes (PC Radhila)
+ #512623 - Fix keystates for thread expand (Milan Crha)
+ #513285 - Do not use entities in doc (Wouter Bolsterlee)
+ #513395 - Make sure that camel url isn't null (Jeff Cai)
+ #515054 - Better spam support - Upsync SPAM flags (Milan Crha)
+
+Other Contributors:
+ Windows build fixes (Tor Lillqvist)
+ G_STRFUNC build fixes (Matthew Barnes)
+ Fix for Google Calendar Alarm (Srinivasa Ragavan)
+
+Updated Translations:
+ Kjartan Maraas (nb)
+ Jorge Gonzalez (es)
+ Daniel Nylander (sv)
+ Inaki Larranaga Murgoitio (eu)
+ StÃphane Raimbault (fr)
+ Claude Paroz (fr)
+ Duarte Loreto (pt)
+ Chao-Hsiung Liao (zh_HK)
+ Chao-Hsiung Liao (zh_TW)
+ Andre Klapper (de)
+ Yannig Marchegay (oc)
+ Shankar Prasad (kn)
+ Djihed Afifi (ar)
+ Sandeep Shedmake (mr)
+ Washington Lins (pt_BR)
+
Evolution 2.21.90 2008-01-28
----------------------------
Modified: branches/mbarnes-composer/addressbook/gui/component/addressbook-migrate.c
==============================================================================
--- branches/mbarnes-composer/addressbook/gui/component/addressbook-migrate.c (original)
+++ branches/mbarnes-composer/addressbook/gui/component/addressbook-migrate.c Tue Feb 26 05:33:35 2008
@@ -216,6 +216,8 @@
} while (conflict);
+ g_strfreev (p);
+
return g_string_free (s, FALSE);
}
Modified: branches/mbarnes-composer/addressbook/gui/component/addressbook.c
==============================================================================
--- branches/mbarnes-composer/addressbook/gui/component/addressbook.c (original)
+++ branches/mbarnes-composer/addressbook/gui/component/addressbook.c Tue Feb 26 05:33:35 2008
@@ -211,9 +211,9 @@
g_free (password_prompt);
remember = get_remember_password (source);
- pass_dup = e_passwords_ask_password (prompt, component_name, uri, prompt,
- flags, &remember,
- NULL);
+ pass_dup = e_passwords_ask_password (
+ _("Enter password"), component_name,
+ uri, prompt, flags, &remember, NULL);
if (remember != get_remember_password (source))
set_remember_password (source, remember);
Modified: branches/mbarnes-composer/addressbook/gui/contact-list-editor/e-contact-list-editor.c
==============================================================================
--- branches/mbarnes-composer/addressbook/gui/contact-list-editor/e-contact-list-editor.c (original)
+++ branches/mbarnes-composer/addressbook/gui/contact-list-editor/e-contact-list-editor.c Tue Feb 26 05:33:35 2008
@@ -1387,6 +1387,7 @@
gint email_num = -1;
GList *list, *iter;
GList *values;
+ char *value;
destination = e_destination_new ();
@@ -1407,16 +1408,17 @@
contact_uid = param_data;
else if (!g_ascii_strcasecmp (param_name, EVC_X_DEST_EMAIL_NUM))
email_num = atoi (param_data);
- else if (!g_ascii_strcasecmp (param_name, EVC_X_DEST_NAME))
- e_destination_set_name (destination, param_data);
- else if (!g_ascii_strcasecmp (param_name, EVC_X_DEST_EMAIL))
- e_destination_set_email (destination, param_data);
else if (!g_ascii_strcasecmp (param_name, EVC_X_DEST_HTML_MAIL))
e_destination_set_html_mail_pref (
destination,
!g_ascii_strcasecmp (param_data, "true"));
}
+ value = e_vcard_attribute_get_value (attr);
+ if (value)
+ e_destination_set_raw (destination, value);
+ g_free (value);
+
if (contact_uid != NULL)
e_destination_set_contact_uid (
destination, contact_uid, email_num);
Modified: branches/mbarnes-composer/addressbook/gui/merging/eab-contact-merging.c
==============================================================================
--- branches/mbarnes-composer/addressbook/gui/merging/eab-contact-merging.c (original)
+++ branches/mbarnes-composer/addressbook/gui/merging/eab-contact-merging.c Tue Feb 26 05:33:35 2008
@@ -343,6 +343,7 @@
value = 1;
break;
case GTK_RESPONSE_CANCEL:
+ default:
value = 0;
break;
}
Modified: branches/mbarnes-composer/addressbook/gui/widgets/e-addressbook-reflow-adapter.c
==============================================================================
--- branches/mbarnes-composer/addressbook/gui/widgets/e-addressbook-reflow-adapter.c (original)
+++ branches/mbarnes-composer/addressbook/gui/widgets/e-addressbook-reflow-adapter.c Tue Feb 26 05:33:35 2008
@@ -181,6 +181,7 @@
if (contact1 && contact2) {
const char *file_as1, *file_as2;
+ const char *uid1, *uid2;
file_as1 = e_contact_get_const (contact1, E_CONTACT_FILE_AS);
file_as2 = e_contact_get_const (contact2, E_CONTACT_FILE_AS);
if (file_as1 && file_as2)
@@ -189,8 +190,14 @@
return -1;
if (file_as2)
return 1;
- return strcmp(e_contact_get_const (contact1, E_CONTACT_UID),
- e_contact_get_const (contact2, E_CONTACT_UID));
+ uid1 = e_contact_get_const (contact1, E_CONTACT_UID);
+ uid2 = e_contact_get_const (contact2, E_CONTACT_UID);
+ if (uid1 && uid2)
+ return strcmp(uid1, uid2);
+ if (uid1)
+ return -1;
+ if (uid2)
+ return 1;
}
if (contact1)
return -1;
Modified: branches/mbarnes-composer/calendar/common/authentication.c
==============================================================================
--- branches/mbarnes-composer/calendar/common/authentication.c (original)
+++ branches/mbarnes-composer/calendar/common/authentication.c Tue Feb 26 05:33:35 2008
@@ -30,6 +30,7 @@
#include <libedataserver/e-source.h>
#include <libedataserverui/e-passwords.h>
#include "authentication.h"
+#include <libedataserver/e-url.h>
static GHashTable *source_lists_hash = NULL;
@@ -55,6 +56,44 @@
return password;
}
+static char *
+build_pass_key (ECal *ecal)
+{
+ char *euri_str;
+ const char *uri;
+ EUri *euri;
+
+ uri = e_cal_get_uri (ecal);
+
+ euri = e_uri_new (uri);
+ euri_str = e_uri_to_string (euri, FALSE);
+
+ e_uri_free (euri);
+ return euri_str;
+}
+
+void
+auth_cal_forget_password (ECal *ecal)
+{
+ ESource *source = NULL;
+ const char *auth_domain = NULL, *component_name = NULL, *auth_type = NULL;
+ char *key = NULL;
+
+ source = e_cal_get_source (ecal);
+ auth_domain = e_source_get_property (source, "auth-domain");
+ component_name = auth_domain ? auth_domain : "Calendar";
+
+ auth_type = e_source_get_property (source, "auth-type");
+ if (auth_type)
+ key = build_pass_key (ecal);
+ else
+ key = e_source_get_uri (source);
+
+ e_passwords_forget_password (component_name, key);
+
+ g_free (key);
+}
+
ECal *
auth_new_cal_from_default (ECalSourceType type)
{
Modified: branches/mbarnes-composer/calendar/common/authentication.h
==============================================================================
--- branches/mbarnes-composer/calendar/common/authentication.h (original)
+++ branches/mbarnes-composer/calendar/common/authentication.h Tue Feb 26 05:33:35 2008
@@ -30,5 +30,6 @@
ECal *auth_new_cal_from_default (ECalSourceType type);
ECal *auth_new_cal_from_source (ESource *source, ECalSourceType type);
ECal *auth_new_cal_from_uri (const char *uri, ECalSourceType type);
+void auth_cal_forget_password (ECal *ecal);
#endif
Modified: branches/mbarnes-composer/calendar/conduits/calendar/calendar-conduit.c
==============================================================================
--- branches/mbarnes-composer/calendar/conduits/calendar/calendar-conduit.c (original)
+++ branches/mbarnes-composer/calendar/conduits/calendar/calendar-conduit.c Tue Feb 26 05:33:35 2008
@@ -840,6 +840,8 @@
static char record[0xffff];
#endif
+ memset(&p, 0, sizeof (p));
+
g_assert (local->comp != NULL);
g_assert (local->appt != NULL );
Modified: branches/mbarnes-composer/calendar/conduits/memo/memo-conduit.c
==============================================================================
--- branches/mbarnes-composer/calendar/conduits/memo/memo-conduit.c (original)
+++ branches/mbarnes-composer/calendar/conduits/memo/memo-conduit.c Tue Feb 26 05:33:35 2008
@@ -473,6 +473,8 @@
static char record[0xffff];
#endif
+ memset(&p, 0, sizeof (p));
+
g_assert (local->comp != NULL);
g_assert (local->memo != NULL );
Modified: branches/mbarnes-composer/calendar/conduits/todo/todo-conduit.c
==============================================================================
--- branches/mbarnes-composer/calendar/conduits/todo/todo-conduit.c (original)
+++ branches/mbarnes-composer/calendar/conduits/todo/todo-conduit.c Tue Feb 26 05:33:35 2008
@@ -621,6 +621,8 @@
memset (&p, 0, sizeof (GnomePilotRecord));
+ memset(&p, 0, sizeof (p));
+
p.ID = local->local.ID;
p.category = local->local.category;
p.attr = local->local.attr;
Modified: branches/mbarnes-composer/calendar/gui/calendar-config.c
==============================================================================
--- branches/mbarnes-composer/calendar/gui/calendar-config.c (original)
+++ branches/mbarnes-composer/calendar/gui/calendar-config.c Tue Feb 26 05:33:35 2008
@@ -1572,6 +1572,7 @@
sexp = g_strdup_printf ("(not (completed-before? (make-time \"%s\")))", isodate);
else
sexp = g_strdup_printf ("(completed-before? (make-time \"%s\"))", isodate);
+ g_free (isodate);
}
}
Modified: branches/mbarnes-composer/calendar/gui/comp-editor-factory.c
==============================================================================
--- branches/mbarnes-composer/calendar/gui/comp-editor-factory.c (original)
+++ branches/mbarnes-composer/calendar/gui/comp-editor-factory.c Tue Feb 26 05:33:35 2008
@@ -281,6 +281,7 @@
/* Set the object on the editor */
comp_editor_edit_comp (editor, comp);
comp_editor_focus (editor);
+ g_object_unref (comp);
oc->editor_count++;
g_signal_connect (editor, "destroy", G_CALLBACK (editor_destroy_cb), oc);
Modified: branches/mbarnes-composer/calendar/gui/comp-util.c
==============================================================================
--- branches/mbarnes-composer/calendar/gui/comp-util.c (original)
+++ branches/mbarnes-composer/calendar/gui/comp-util.c Tue Feb 26 05:33:35 2008
@@ -207,7 +207,8 @@
gboolean
cal_comp_is_on_server (ECalComponent *comp, ECal *client)
{
- const char *uid, *rid = NULL;
+ const char *uid;
+ char *rid = NULL;
icalcomponent *icalcomp;
GError *error = NULL;
@@ -232,6 +233,7 @@
if (e_cal_get_object (client, uid, rid, &icalcomp, &error)) {
icalcomponent_free (icalcomp);
+ g_free (rid);
return TRUE;
}
@@ -240,6 +242,7 @@
g_warning (G_STRLOC ": %s", error->message);
g_clear_error (&error);
+ g_free (rid);
return FALSE;
}
Modified: branches/mbarnes-composer/calendar/gui/dialogs/comp-editor.c
==============================================================================
--- branches/mbarnes-composer/calendar/gui/dialogs/comp-editor.c (original)
+++ branches/mbarnes-composer/calendar/gui/dialogs/comp-editor.c Tue Feb 26 05:33:35 2008
@@ -279,21 +279,16 @@
for (i = 0; urls[i] != NULL; i++) {
str = g_strstrip (urls[i]);
- if (urls[i][0] == '#') {
- g_free(str);
+ if (urls[i][0] == '#')
continue;
- }
if (!g_ascii_strncasecmp (str, "mailto:", 7)) {
/* TODO does not handle mailto now */
- g_free (str);
} else {
url = camel_url_new (str, NULL);
- if (url == NULL) {
- g_free (str);
+ if (url == NULL)
continue;
- }
if (!g_ascii_strcasecmp (url->protocol, "file"))
e_attachment_bar_attach
@@ -306,11 +301,10 @@
str, "attachment");
camel_url_free (url);
- g_free (str);
}
}
- g_free (urls);
+ g_strfreev (urls);
success = TRUE;
break;
case DND_TYPE_TEXT_VCARD:
Modified: branches/mbarnes-composer/calendar/gui/dialogs/e-send-options-utils.c
==============================================================================
--- branches/mbarnes-composer/calendar/gui/dialogs/e-send-options-utils.c (original)
+++ branches/mbarnes-composer/calendar/gui/dialogs/e-send-options-utils.c Tue Feb 26 05:33:35 2008
@@ -183,9 +183,14 @@
if (gopts->delay_enabled) {
struct icaltimetype temp;
+ char *str;
+
icaltimezone *zone = calendar_config_get_icaltimezone ();
temp = icaltime_from_timet_with_zone (gopts->delay_until, FALSE, zone);
- prop = icalproperty_new_x (icaltime_as_ical_string (temp));
+
+ str = icaltime_as_ical_string (temp);
+ prop = icalproperty_new_x (str);
+ g_free (str);
icalproperty_set_x_name (prop, "X-EVOLUTION-OPTIONS-DELAY");
icalcomponent_add_property (icalcomp, prop);
}
Modified: branches/mbarnes-composer/calendar/gui/dialogs/recurrence-page.c
==============================================================================
--- branches/mbarnes-composer/calendar/gui/dialogs/recurrence-page.c (original)
+++ branches/mbarnes-composer/calendar/gui/dialogs/recurrence-page.c Tue Feb 26 05:33:35 2008
@@ -857,7 +857,7 @@
/* If our component has not been set yet through ::fill_widgets(), we
* cannot preview the recurrence.
*/
- if (!priv->comp || e_cal_component_is_instance (priv->comp))
+ if (!priv || !priv->comp || e_cal_component_is_instance (priv->comp))
return;
/* Create a scratch component with the start/end and
Modified: branches/mbarnes-composer/calendar/gui/e-cal-model-tasks.c
==============================================================================
--- branches/mbarnes-composer/calendar/gui/e-cal-model-tasks.c (original)
+++ branches/mbarnes-composer/calendar/gui/e-cal-model-tasks.c Tue Feb 26 05:33:35 2008
@@ -699,6 +699,8 @@
case ICAL_STATUS_CANCELLED:
ensure_task_not_complete (comp_data);
+ /* do this again, because the previous function changed status to NEEDSACTION */
+ icalproperty_set_status (prop, status);
break;
case ICAL_STATUS_COMPLETED:
Modified: branches/mbarnes-composer/calendar/gui/e-cal-model.c
==============================================================================
--- branches/mbarnes-composer/calendar/gui/e-cal-model.c (original)
+++ branches/mbarnes-composer/calendar/gui/e-cal-model.c Tue Feb 26 05:33:35 2008
@@ -242,6 +242,7 @@
}
priv->clients = NULL;
+ priv->default_client = NULL;
}
if (G_OBJECT_CLASS (e_cal_model_parent_class)->dispose)
@@ -1296,7 +1297,8 @@
ECalModelComponent *comp_data = g_ptr_array_index (priv->objects, i);
if (comp_data) {
- const char *uid, *rid;
+ const char *uid;
+ char *rid = NULL;
gboolean has_rid = (id->rid && *id->rid);
uid = icalcomponent_get_uid (comp_data->icalcomp);
@@ -1305,11 +1307,15 @@
if (uid && *uid) {
if ((!client || comp_data->client == client) && !strcmp (id->uid, uid)) {
if (has_rid) {
- if (!(rid && *rid && !strcmp (rid, id->rid)))
+ if (!(rid && *rid && !strcmp (rid, id->rid))) {
+ g_free (rid);
continue;
+ }
}
+ g_free (rid);
return comp_data;
}
+ g_free (rid);
}
}
}
@@ -1699,6 +1705,9 @@
return;
}
+ if (model->priv->default_client == client_data->client)
+ model->priv->default_client = NULL;
+
/* Remove the client from the list */
model->priv->clients = g_list_remove (model->priv->clients, client_data);
@@ -1746,7 +1755,6 @@
redo_queries (ECalModel *model)
{
ECalModelPrivate *priv;
- char *iso_start, *iso_end;
GList *l;
int len;
@@ -1756,6 +1764,8 @@
g_free (priv->full_sexp);
if (priv->start != -1 && priv->end != -1) {
+ char *iso_start, *iso_end;
+
iso_start = isodate_from_time_t (priv->start);
iso_end = isodate_from_time_t (priv->end);
@@ -1764,6 +1774,8 @@
" %s)",
iso_start, iso_end,
priv->search_sexp ? priv->search_sexp : "");
+ g_free (iso_start);
+ g_free (iso_end);
} else if (priv->search_sexp) {
priv->full_sexp = g_strdup (priv->search_sexp);
} else {
Modified: branches/mbarnes-composer/calendar/gui/e-calendar-table.c
==============================================================================
--- branches/mbarnes-composer/calendar/gui/e-calendar-table.c (original)
+++ branches/mbarnes-composer/calendar/gui/e-calendar-table.c Tue Feb 26 05:33:35 2008
@@ -220,6 +220,39 @@
return 0;
}
+static gint
+status_from_string (const char *str)
+{
+ int status = -2;
+
+ if (!str || !str[0])
+ status = -1;
+ else if (!g_utf8_collate (str, _("Not Started")))
+ status = 0;
+ else if (!g_utf8_collate (str, _("In Progress")))
+ status = 1;
+ else if (!g_utf8_collate (str, _("Completed")))
+ status = 2;
+ else if (!g_utf8_collate (str, _("Canceled")))
+ status = 3;
+
+ return status;
+}
+
+static gint
+status_compare_cb (gconstpointer a, gconstpointer b)
+{
+ int sa = status_from_string ((const char *)a);
+ int sb = status_from_string ((const char *)b);
+
+ if (sa < sb)
+ return -1;
+ else if (sa > sb)
+ return 1;
+
+ return 0;
+}
+
static void
row_appended_cb (ECalModel *model, ECalendarTable *cal_table)
{
@@ -412,6 +445,8 @@
percent_compare_cb);
e_table_extras_add_compare (extras, "priority-compare",
priority_compare_cb);
+ e_table_extras_add_compare (extras, "status-compare",
+ status_compare_cb);
/* Create pixmaps */
@@ -846,6 +881,7 @@
icalcomponent_new_clone (child));
icalcomponent_free (child);
}
+ g_free (child);
}
/**
@@ -880,6 +916,7 @@
/* free memory */
icalcomponent_free (cal_table->tmp_vcal);
+ g_free (comp_str);
cal_table->tmp_vcal = NULL;
}
@@ -1038,6 +1075,7 @@
tedit = COMP_EDITOR (task_editor_new (client, flags));
comp_editor_edit_comp (tedit, comp);
+ g_object_unref (comp);
if (flags & COMP_EDITOR_IS_ASSIGNED)
task_editor_show_assignment (TASK_EDITOR (tedit));
Modified: branches/mbarnes-composer/calendar/gui/e-calendar-table.etspec
==============================================================================
--- branches/mbarnes-composer/calendar/gui/e-calendar-table.etspec (original)
+++ branches/mbarnes-composer/calendar/gui/e-calendar-table.etspec Tue Feb 26 05:33:35 2008
@@ -7,7 +7,7 @@
<ETableColumn model_col= "12" _title="Due date" expansion="2.0" minimum_width="10" resizable="true" cell="dateedit" compare="date-compare" priority="-2"/>
<ETableColumn model_col= "15" _title="% Complete" expansion="1.0" minimum_width="10" resizable="true" cell="percent" compare="percent-compare" priority="-3"/>
<ETableColumn model_col= "16" _title="Priority" expansion="1.0" minimum_width="10" resizable="true" cell="priority" compare="priority-compare" priority="-3"/>
- <ETableColumn model_col="17" _title="Status" expansion="1.0" minimum_width="10" resizable="true" cell="calstatus" compare="collate" priority="-1"/>
+ <ETableColumn model_col="17" _title="Status" expansion="1.0" minimum_width="10" resizable="true" cell="calstatus" compare="status-compare" priority="-1"/>
<ETableColumn model_col="0" _title="Categories" cell="calstring" compare="stringcase" expansion="1.0" minimum_width="10" resizable="true" priority="-2"/>
<ETableState>
Modified: branches/mbarnes-composer/calendar/gui/e-calendar-view.c
==============================================================================
--- branches/mbarnes-composer/calendar/gui/e-calendar-view.c (original)
+++ branches/mbarnes-composer/calendar/gui/e-calendar-view.c Tue Feb 26 05:33:35 2008
@@ -693,7 +693,7 @@
e_cal_component_get_uid (comp, &uid);
if (e_cal_component_is_instance (comp)) {
- const char *rid;
+ char *rid = NULL;
icalcomponent *icalcomp;
/* when cutting detached instances, only cut that instance */
@@ -706,6 +706,7 @@
} else
e_cal_remove_object_with_mod (event->comp_data->client, uid, NULL,
CALOBJ_MOD_ALL, &error);
+ g_free (rid);
} else
e_cal_remove_object (event->comp_data->client, uid, &error);
delete_error_dialog (error, E_CAL_COMPONENT_EVENT);
@@ -768,6 +769,7 @@
/* free memory */
icalcomponent_free (vcal_comp);
+ g_free (comp_str);
g_list_free (selected);
}
@@ -954,6 +956,7 @@
if (delete) {
const char *uid;
+ char *rid = NULL;
if ((itip_organizer_is_user (comp, event->comp_data->client) || itip_sentby_is_user (comp))
&& cancel_component_dialog ((GtkWindow *) gtk_widget_get_toplevel (GTK_WIDGET (cal_view)),
@@ -967,15 +970,16 @@
g_object_unref (comp);
return;
}
-
+ rid = e_cal_component_get_recurid_as_string (comp);
if (e_cal_util_component_is_instance (event->comp_data->icalcomp) || e_cal_util_component_has_recurrences (event->comp_data->icalcomp))
e_cal_remove_object_with_mod (event->comp_data->client, uid,
- e_cal_component_get_recurid_as_string (comp), CALOBJ_MOD_ALL, &error);
+ rid, CALOBJ_MOD_ALL, &error);
else
e_cal_remove_object (event->comp_data->client, uid, &error);
delete_error_dialog (error, E_CAL_COMPONENT_EVENT);
g_clear_error (&error);
+ g_free (rid);
}
g_object_unref (comp);
@@ -1065,7 +1069,8 @@
delete = delete_component_dialog (comp, FALSE, 1, vtype, GTK_WIDGET (cal_view));
if (delete) {
- const char *uid, *rid = NULL;
+ const char *uid;
+ char *rid = NULL;
ECalComponentDateTime dt;
icaltimezone *zone = NULL;
gboolean is_instance = FALSE;
@@ -1124,6 +1129,7 @@
delete_error_dialog (error, E_CAL_COMPONENT_EVENT);
g_clear_error (&error);
+ g_free (rid);
}
/* free memory */
@@ -2291,11 +2297,13 @@
for (property = icalcomponent_get_first_property (icalcomp, ICAL_CATEGORIES_PROPERTY);
property != NULL;
property = icalcomponent_get_next_property (icalcomp, ICAL_CATEGORIES_PROPERTY)) {
- const char *value = icalproperty_get_value_as_string (property);
+ char *value = icalproperty_get_value_as_string (property);
if (value && strcmp (category, value) == 0){
+ g_free (value);
return TRUE;
}
+ g_free (value);
}
return FALSE;
Modified: branches/mbarnes-composer/calendar/gui/e-day-view-main-item.c
==============================================================================
--- branches/mbarnes-composer/calendar/gui/e-day-view-main-item.c (original)
+++ branches/mbarnes-composer/calendar/gui/e-day-view-main-item.c Tue Feb 26 05:33:35 2008
@@ -373,21 +373,27 @@
/* If the event is TRANSPARENT, skip it. */
e_cal_component_get_transparency (comp, &transparency);
- if (transparency == E_CAL_COMPONENT_TRANSP_TRANSPARENT)
+ if (transparency == E_CAL_COMPONENT_TRANSP_TRANSPARENT) {
+ g_object_unref (comp);
continue;
+ }
/* We can skip the events in the first column since they will
draw over this anyway. */
- if (event->num_columns > 0 && event->start_row_or_col == 0)
+ if (event->num_columns > 0 && event->start_row_or_col == 0) {
+ g_object_unref (comp);
continue;
+ }
bar_y = event->start_minute * day_view->row_height / day_view->mins_per_row;
bar_h = event->end_minute * day_view->row_height / day_view->mins_per_row - bar_y;
bar_y -= y;
/* Skip it if it isn't visible. */
- if (bar_y >= height || bar_y + bar_h <= 0)
+ if (bar_y >= height || bar_y + bar_h <= 0) {
+ g_object_unref (comp);
continue;
+ }
gdk_draw_rectangle (drawable, gc, TRUE,
grid_x, bar_y,
@@ -427,14 +433,18 @@
/* If the event is TRANSPARENT, skip it. */
e_cal_component_get_transparency (comp, &transparency);
- if (transparency == E_CAL_COMPONENT_TRANSP_TRANSPARENT)
+ if (transparency == E_CAL_COMPONENT_TRANSP_TRANSPARENT) {
+ g_object_unref (comp);
continue;
+ }
if (!e_day_view_find_long_event_days (event,
day_view->days_shown,
day_view->day_starts,
- &start_day, &end_day))
+ &start_day, &end_day)) {
+ g_object_unref (comp);
continue;
+ }
for (day = start_day; day <= end_day; day++) {
grid_x = day_view->day_offsets[day] + 1 - x;
@@ -1099,21 +1109,27 @@
/* If the event is TRANSPARENT, skip it. */
e_cal_component_get_transparency (comp, &transparency);
- if (transparency == E_CAL_COMPONENT_TRANSP_TRANSPARENT)
+ if (transparency == E_CAL_COMPONENT_TRANSP_TRANSPARENT) {
+ g_object_unref (comp);
continue;
+ }
/* We can skip the events in the first column since they will
draw over this anyway. */
- if (event->num_columns > 0 && event->start_row_or_col == 0)
+ if (event->num_columns > 0 && event->start_row_or_col == 0) {
+ g_object_unref (comp);
continue;
+ }
bar_y = event->start_minute * day_view->row_height / day_view->mins_per_row;
bar_h = event->end_minute * day_view->row_height / day_view->mins_per_row - bar_y;
bar_y -= y;
/* Skip it if it isn't visible. */
- if (bar_y >= height || bar_y + bar_h <= 0)
+ if (bar_y >= height || bar_y + bar_h <= 0) {
+ g_object_unref (comp);
continue;
+ }
cairo_rectangle (cr, grid_x, bar_y,
E_DAY_VIEW_BAR_WIDTH - 2, bar_h);
@@ -1169,14 +1185,18 @@
/* If the event is TRANSPARENT, skip it. */
e_cal_component_get_transparency (comp, &transparency);
- if (transparency == E_CAL_COMPONENT_TRANSP_TRANSPARENT)
+ if (transparency == E_CAL_COMPONENT_TRANSP_TRANSPARENT) {
+ g_object_unref (comp);
continue;
+ }
if (!e_day_view_find_long_event_days (event,
day_view->days_shown,
day_view->day_starts,
- &start_day, &end_day))
+ &start_day, &end_day)) {
+ g_object_unref (comp);
continue;
+ }
for (day = start_day; day <= end_day; day++) {
grid_x = day_view->day_offsets[day] + 1 - x;
Modified: branches/mbarnes-composer/calendar/gui/e-day-view-top-item.c
==============================================================================
--- branches/mbarnes-composer/calendar/gui/e-day-view-top-item.c (original)
+++ branches/mbarnes-composer/calendar/gui/e-day-view-top-item.c Tue Feb 26 05:33:35 2008
@@ -428,8 +428,10 @@
/* If we are editing the event we don't show the icons or the start
& end times. */
if (day_view->editing_event_day == E_DAY_VIEW_LONG_EVENT
- && day_view->editing_event_num == event_num)
+ && day_view->editing_event_num == event_num) {
+ g_object_unref (comp);
return;
+ }
/* Determine the position of the label, so we know where to place the
icons. Note that since the top canvas never scrolls we don't need
@@ -1048,8 +1050,11 @@
/* If we are editing the event we don't show the icons or the start
& end times. */
if (day_view->editing_event_day == E_DAY_VIEW_LONG_EVENT
- && day_view->editing_event_num == event_num)
+ && day_view->editing_event_num == event_num) {
+ g_object_unref (comp);
+ cairo_destroy (cr);
return;
+ }
/* Determine the position of the label, so we know where to place the
icons. Note that since the top canvas never scrolls we don't need
Modified: branches/mbarnes-composer/calendar/gui/e-day-view.c
==============================================================================
--- branches/mbarnes-composer/calendar/gui/e-day-view.c (original)
+++ branches/mbarnes-composer/calendar/gui/e-day-view.c Tue Feb 26 05:33:35 2008
@@ -517,7 +517,8 @@
static void
process_component (EDayView *day_view, ECalModelComponent *comp_data)
{
- const char *uid, *rid;
+ const char *uid;
+ char *rid = NULL;
ECalComponent *comp;
AddEventData add_event_data;
@@ -546,6 +547,7 @@
e_day_view_add_event (comp, comp_data->instance_start, comp_data->instance_end, &add_event_data);
g_object_unref (comp);
+ g_free (rid);
}
static void
@@ -619,7 +621,8 @@
for (i = row + count; i > row; i--) {
gint day, event_num;
- const char *uid, *rid = NULL;
+ const char *uid = NULL;
+ char *rid = NULL;
ECalModelComponent *comp_data;
comp_data = e_cal_model_get_component_at (E_CAL_MODEL (etm), i - 1);
@@ -637,6 +640,7 @@
if (e_day_view_find_event_from_uid (day_view, comp_data->client, uid, rid, &day, &event_num))
e_day_view_remove_event_cb (day_view, day, event_num, NULL);
+ g_free (rid);
}
gtk_widget_queue_draw (day_view->top_canvas);
@@ -2641,7 +2645,8 @@
{
EDayViewEvent *event;
gint day, event_num;
- const char *u, *r;
+ const char *u;
+ char *r = NULL;
if (!uid)
return FALSE;
@@ -2661,8 +2666,11 @@
r = icaltime_as_ical_string (icalcomponent_get_recurrenceid (event->comp_data->icalcomp));
if (!r || !*r)
continue;
- if (strcmp (rid, r) != 0)
+ if (strcmp (rid, r) != 0) {
+ g_free (r);
continue;
+ }
+ g_free (r);
}
*day_return = day;
@@ -5779,6 +5787,7 @@
text_x, item_y);
g_object_unref (layout);
+ g_object_unref (comp);
}
@@ -5798,13 +5807,17 @@
e_day_view_reshape_day_event (day_view, day, event_num);
event = &g_array_index (day_view->events[day], EDayViewEvent, event_num);
current_comp_string = icalcomponent_as_ical_string (event->comp_data->icalcomp);
- if (day_view->last_edited_comp_string == NULL)
+ if (day_view->last_edited_comp_string == NULL) {
+ g_free (current_comp_string);
continue;
+ }
+
if (strncmp (current_comp_string, day_view->last_edited_comp_string,50) == 0) {
e_canvas_item_grab_focus (event->canvas_item, TRUE);
g_free (day_view->last_edited_comp_string);
day_view-> last_edited_comp_string = NULL;
}
+ g_free (current_comp_string);
}
}
@@ -8922,6 +8935,7 @@
}
icalcomponent_free (vcal);
+ g_free (comp_str);
}
}
@@ -9057,8 +9071,10 @@
e_cal_component_commit_sequence (comp);
if (e_cal_component_is_instance (comp)) {
- if (!recur_component_dialog (client, comp, &mod, NULL, FALSE))
+ if (!recur_component_dialog (client, comp, &mod, NULL, FALSE)) {
+ g_object_unref (comp);
return;
+ }
if (mod == CALOBJ_MOD_THIS) {
e_cal_component_set_rdate_list (comp, NULL);
Modified: branches/mbarnes-composer/calendar/gui/e-itip-control.c
==============================================================================
--- branches/mbarnes-composer/calendar/gui/e-itip-control.c (original)
+++ branches/mbarnes-composer/calendar/gui/e-itip-control.c Tue Feb 26 05:33:35 2008
@@ -1914,6 +1914,7 @@
{
EItipControlPrivate *priv;
struct icaltimetype stamp;
+ char *str;
icalproperty *prop;
icalcomponent *clone;
GtkWidget *dialog;
@@ -1931,7 +1932,9 @@
* and you then look at it in Outlook).
*/
stamp = icaltime_current_time_with_zone (icaltimezone_get_utc_timezone ());
- prop = icalproperty_new_x (icaltime_as_ical_string (stamp));
+ str = icaltime_as_ical_string (stamp);
+ prop = icalproperty_new_x (str);
+ g_free (str);
icalproperty_set_x_name (prop, "X-MICROSOFT-CDO-REPLYTIME");
icalcomponent_add_property (priv->ical_comp, prop);
Modified: branches/mbarnes-composer/calendar/gui/e-memo-table.c
==============================================================================
--- branches/mbarnes-composer/calendar/gui/e-memo-table.c (original)
+++ branches/mbarnes-composer/calendar/gui/e-memo-table.c Tue Feb 26 05:33:35 2008
@@ -555,6 +555,7 @@
icalcomponent_new_clone (child));
icalcomponent_free (child);
}
+ g_free (comp_str);
}
static void
@@ -609,6 +610,7 @@
/* free memory */
icalcomponent_free (memo_table->tmp_vcal);
+ g_free (comp_str);
memo_table->tmp_vcal = NULL;
}
@@ -763,6 +765,7 @@
medit = COMP_EDITOR (memo_editor_new (comp_data->client, flags));
comp_editor_edit_comp (medit, comp);
+ g_object_unref (comp);
e_comp_editor_registry_add (comp_editor_registry, medit, FALSE);
}
Modified: branches/mbarnes-composer/calendar/gui/e-memos.c
==============================================================================
--- branches/mbarnes-composer/calendar/gui/e-memos.c (original)
+++ branches/mbarnes-composer/calendar/gui/e-memos.c Tue Feb 26 05:33:35 2008
@@ -421,6 +421,7 @@
}
icalcomponent_free (vcal);
+ g_free (comp_str);
}
}
Modified: branches/mbarnes-composer/calendar/gui/e-tasks.c
==============================================================================
--- branches/mbarnes-composer/calendar/gui/e-tasks.c (original)
+++ branches/mbarnes-composer/calendar/gui/e-tasks.c Tue Feb 26 05:33:35 2008
@@ -518,6 +518,7 @@
}
icalcomponent_free (vcal);
+ g_free (comp_str);
}
}
@@ -962,6 +963,9 @@
priv = tasks->priv;
source = e_cal_get_source (ecal);
+
+ if (status == E_CALENDAR_STATUS_AUTHENTICATION_FAILED)
+ auth_cal_forget_password (ecal);
switch (status) {
case E_CALENDAR_STATUS_OK :
@@ -1008,6 +1012,9 @@
source = e_cal_get_source (ecal);
+ if (status == E_CALENDAR_STATUS_AUTHENTICATION_FAILED)
+ auth_cal_forget_password (ecal);
+
switch (status) {
case E_CALENDAR_STATUS_OK :
g_signal_handlers_disconnect_matched (ecal, G_SIGNAL_MATCH_FUNC, 0, 0, NULL, default_client_cal_opened_cb, NULL);
Modified: branches/mbarnes-composer/calendar/gui/e-week-view.c
==============================================================================
--- branches/mbarnes-composer/calendar/gui/e-week-view.c (original)
+++ branches/mbarnes-composer/calendar/gui/e-week-view.c Tue Feb 26 05:33:35 2008
@@ -303,7 +303,8 @@
ECalComponent *comp = NULL;
AddEventData add_event_data;
/* rid is never used in this function? */
- const char *uid, *rid;
+ const char *uid;
+ char *rid = NULL;
/* If we don't have a valid date set yet, just return. */
if (!g_date_valid (&week_view->first_day_shown))
@@ -329,6 +330,7 @@
e_week_view_add_event (comp, comp_data->instance_start, comp_data->instance_end, FALSE, &add_event_data);
g_object_unref (comp);
+ g_free (rid);
}
static void
@@ -396,7 +398,8 @@
for (i = row + count; i > row; i--) {
gint event_num;
- const char *uid, *rid = NULL;
+ const char *uid;
+ char *rid = NULL;
ECalModelComponent *comp_data;
comp_data = e_cal_model_get_component_at (E_CAL_MODEL (etm), i - 1);
@@ -414,6 +417,7 @@
if (e_week_view_find_event_from_uid (week_view, comp_data->client, uid, rid, &event_num))
e_week_view_remove_event_cb (week_view, event_num, NULL);
+ g_free (rid);
}
gtk_widget_queue_draw (week_view->main_canvas);
@@ -2525,15 +2529,16 @@
e_week_view_reshape_event_span (week_view, event_num,
span_num);
- current_comp_string = icalcomponent_as_ical_string (event->comp_data->icalcomp);
if (week_view->last_edited_comp_string == NULL)
continue;
+ current_comp_string = icalcomponent_as_ical_string (event->comp_data->icalcomp);
if (strncmp (current_comp_string, week_view->last_edited_comp_string,50) == 0) {
EWeekViewEventSpan *span;
span = &g_array_index (week_view->spans, EWeekViewEventSpan, event->spans_index + span_num);
e_canvas_item_grab_focus (span->text_item, TRUE);
week_view->last_edited_comp_string = NULL;
}
+ g_free (current_comp_string);
}
}
@@ -3650,7 +3655,8 @@
num_events = week_view->events->len;
for (event_num = 0; event_num < num_events; event_num++) {
- const char *u, *r;
+ const char *u;
+ char *r = NULL;
event = &g_array_index (week_view->events, EWeekViewEvent,
event_num);
@@ -3664,8 +3670,11 @@
r = icaltime_as_ical_string (icalcomponent_get_recurrenceid (event->comp_data->icalcomp));
if (!r || !*r)
continue;
- if (strcmp (rid, r) != 0)
+ if (strcmp (rid, r) != 0) {
+ g_free (r);
continue;
+ }
+ g_free (r);
}
*event_num_return = event_num;
Modified: branches/mbarnes-composer/calendar/gui/gnome-cal.c
==============================================================================
--- branches/mbarnes-composer/calendar/gui/gnome-cal.c (original)
+++ branches/mbarnes-composer/calendar/gui/gnome-cal.c Tue Feb 26 05:33:35 2008
@@ -2642,6 +2642,10 @@
default:
break;
}
+
+ if (status == E_CALENDAR_STATUS_AUTHENTICATION_FAILED && source_type == E_CAL_SOURCE_TYPE_EVENT)
+ auth_cal_forget_password (ecal);
+
switch (status) {
case E_CALENDAR_STATUS_OK:
break;
@@ -3815,13 +3819,14 @@
GError *error = NULL;
if (e_cal_util_component_is_instance (m->data) || e_cal_util_component_has_recurrences (m->data)) {
- const char *rid = NULL;
+ char *rid = NULL;
struct icaltimetype recur_id = icalcomponent_get_recurrenceid (m->data);
if (!icaltime_is_null_time (recur_id) )
rid = icaltime_as_ical_string (recur_id);
e_cal_remove_object_with_mod (client, uid, rid, CALOBJ_MOD_ALL, &error);
+ g_free (rid);
} else {
e_cal_remove_object (client, uid, &error);
}
Modified: branches/mbarnes-composer/calendar/gui/itip-utils.c
==============================================================================
--- branches/mbarnes-composer/calendar/gui/itip-utils.c (original)
+++ branches/mbarnes-composer/calendar/gui/itip-utils.c Tue Feb 26 05:33:35 2008
@@ -844,7 +844,7 @@
prop != NULL;
prop = icalcomponent_get_next_property (icomp, ICAL_ATTENDEE_PROPERTY))
{
- const char *attendee;
+ char *attendee;
char *attendee_text;
icalparameter *param;
const char *attendee_sentby;
@@ -861,6 +861,7 @@
continue;
attendee_text = g_strdup (itip_strip_mailto (attendee));
+ g_free (attendee);
attendee_text = g_strstrip (attendee_text);
found = match = e_account_list_find(itip_addresses_get(), E_ACCOUNT_FIND_ID_ADDRESS, attendee_text) != NULL;
@@ -1167,7 +1168,7 @@
EDestination **destinations;
ECalComponent *comp = NULL;
icalcomponent *top_level = NULL;
- char *ical_string;
+ char *ical_string = NULL;
gchar *from;
gchar *content_type;
gchar *subject;
@@ -1274,6 +1275,7 @@
g_free (from);
g_free (content_type);
g_free (subject);
+ g_free (ical_string);
return retval;
}
@@ -1294,7 +1296,7 @@
GList *users = NULL;
gchar *from;
gchar *subject;
- char *ical_string;
+ char *ical_string = NULL;
gboolean retval = FALSE;
/* Tidy up the comp */
@@ -1437,7 +1439,7 @@
g_free (from);
g_free (subject);
-
+ g_free (ical_string);
return retval;
}
@@ -1595,7 +1597,7 @@
SoupSession *session;
SoupMessage *msg;
SoupURI *real_uri;
- char *ical_string;
+ char *ical_string = NULL;
toplevel = e_cal_util_new_top_level ();
icalcomponent_set_method (toplevel, ICAL_METHOD_PUBLISH);
@@ -1607,7 +1609,6 @@
icomp = comp_fb_normalize (icalcomp);
icalcomponent_add_component (toplevel, icomp);
- ical_string = icalcomponent_as_ical_string (toplevel);
/* Publish the component */
session = soup_session_async_new ();
@@ -1630,7 +1631,9 @@
g_object_unref (session);
return FALSE;
}
+
soup_message_set_flags (msg, SOUP_MESSAGE_NO_REDIRECT);
+ ical_string = icalcomponent_as_ical_string (toplevel);
soup_message_set_request (msg, "text/calendar", SOUP_MEMORY_TEMPORARY,
ical_string, strlen (ical_string));
@@ -1642,11 +1645,13 @@
msg->reason_phrase);
g_object_unref (msg);
g_object_unref (session);
+ g_free (ical_string);
return FALSE;
}
g_object_unref (msg);
g_object_unref (session);
+ g_free (ical_string);
return TRUE;
}
Modified: branches/mbarnes-composer/calendar/gui/migration.c
==============================================================================
--- branches/mbarnes-composer/calendar/gui/migration.c (original)
+++ branches/mbarnes-composer/calendar/gui/migration.c Tue Feb 26 05:33:35 2008
@@ -279,6 +279,7 @@
break;
} while (conflict);
+ g_strfreev (p);
return g_string_free (s, FALSE);
}
Modified: branches/mbarnes-composer/calendar/gui/print.c
==============================================================================
--- branches/mbarnes-composer/calendar/gui/print.c (original)
+++ branches/mbarnes-composer/calendar/gui/print.c Tue Feb 26 05:33:35 2008
@@ -1992,8 +1992,10 @@
x = left;
xend = right - 2;
- if (y > bottom)
+ if (y > bottom) {
+ g_object_unref (comp);
break;
+ }
/* Print the box to put the tick in. */
print_border (context, x + 2, x + 8, y + 6, y + 15, 0.1, -1.0);
Modified: branches/mbarnes-composer/composer/e-msg-composer.c
==============================================================================
--- branches/mbarnes-composer/composer/e-msg-composer.c (original)
+++ branches/mbarnes-composer/composer/e-msg-composer.c Tue Feb 26 05:33:35 2008
@@ -2089,16 +2089,13 @@
for (i = 0; urls[i] != NULL; i++) {
str = g_strstrip (urls[i]);
- if (str[0] == '#' || str[0] == '\0') {
- g_free (str);
+ if (str[0] == '#' || str[0] == '\0')
continue;
- }
handle_uri (composer, str, html_dnd);
- g_free (str);
}
- g_free (urls);
+ g_strfreev (urls);
success = TRUE;
break;
case DND_TYPE_TEXT_VCARD:
Modified: branches/mbarnes-composer/configure.in
==============================================================================
--- branches/mbarnes-composer/configure.in (original)
+++ branches/mbarnes-composer/configure.in Tue Feb 26 05:33:35 2008
@@ -1,7 +1,7 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.52)
-AC_INIT(evolution, 2.21.91, http://bugzilla.gnome.org/enter_bug.cgi?product=Evolution)
+AC_INIT(evolution, 2.21.92, http://bugzilla.gnome.org/enter_bug.cgi?product=Evolution)
AC_CONFIG_SRCDIR(README)
# Some requirements have versioned package names
@@ -13,7 +13,7 @@
# Required Packages
m4_define([glib_minimum_version], [2.15.3])
m4_define([gtk_minimum_version], [2.12.0])
-m4_define([eds_minimum_version], [2.21.91])
+m4_define([eds_minimum_version], [2.21.92])
m4_define([gnome_icon_theme_minimum_version], [2.19.91])
m4_define([gnome_vfs_minimum_version], [2.4.0])
m4_define([libbonobo_minimum_version], [2.20.3])
@@ -630,6 +630,8 @@
fi
AM_CONDITIONAL(ENABLE_CAIRO, [test x$enable_cairo_calendar = xyes])
+AC_DEFINE(HANDLE_LIBICAL_MEMORY, 1, [Define it once memory returned by libical is free'ed properly])
+
dnl **************************************************
dnl * Posix thread support
dnl **************************************************
@@ -1203,7 +1205,7 @@
case "$host" in
*solaris*)
- AC_PATH_PROGS(KILL_PROCESS_CMD, pkill)
+ KILL_PROCESS_CMD="/usr/bin/pkill -x"
;;
*)
AC_PATH_PROGS(KILL_PROCESS_CMD, killall pkill)
@@ -1898,6 +1900,7 @@
help/quickref/it/Makefile
help/quickref/fr/Makefile
help/quickref/oc/Makefile
+help/quickref/pl/Makefile
help/quickref/pt/Makefile
help/quickref/sv/Makefile
help/quickref/sq/Makefile
Modified: branches/mbarnes-composer/e-util/e-config.c
==============================================================================
--- branches/mbarnes-composer/e-util/e-config.c (original)
+++ branches/mbarnes-composer/e-util/e-config.c Tue Feb 26 05:33:35 2008
@@ -135,7 +135,7 @@
g_free(wn);
}
- while ( (cn = (struct _check_node *)e_dlist_remhead(&p->widgets)) ) {
+ while ( (cn = (struct _check_node *)e_dlist_remhead(&p->checks)) ) {
g_free(cn->pageid);
g_free(cn);
}
Modified: branches/mbarnes-composer/e-util/e-text-event-processor-emacs-like.c
==============================================================================
--- branches/mbarnes-composer/e-util/e-text-event-processor-emacs-like.c (original)
+++ branches/mbarnes-composer/e-util/e-text-event-processor-emacs-like.c Tue Feb 26 05:33:35 2008
@@ -131,18 +131,18 @@
*/
switch (event->type) {
case GDK_BUTTON_PRESS:
- if (event->button.button == 1) {
+ if (event->button.button == 1 || event->button.button == 2) {
command.action = E_TEP_GRAB;
command.time = event->button.time;
g_signal_emit_by_name (tep, "command", &command);
- if (event->button.state & GDK_SHIFT_MASK)
+ if (event->button.button == 1 && event->button.state & GDK_SHIFT_MASK)
command.action = E_TEP_SELECT;
else
command.action = E_TEP_MOVE;
command.position = E_TEP_VALUE;
command.value = event->button.position;
command.time = event->button.time;
- tep_el->mouse_down = TRUE;
+ tep_el->mouse_down = event->button.button == 1;
}
break;
case GDK_2BUTTON_PRESS:
Modified: branches/mbarnes-composer/help/quickref/Makefile.am
==============================================================================
--- branches/mbarnes-composer/help/quickref/Makefile.am (original)
+++ branches/mbarnes-composer/help/quickref/Makefile.am Tue Feb 26 05:33:35 2008
@@ -1,3 +1,3 @@
-SUBDIRS = C de es fr hu it oc pt sv sq
+SUBDIRS = C de es fr hu it oc pl pt sv sq
EXTRA_DIST = evolution-logo.eps
Modified: branches/mbarnes-composer/mail/em-composer-utils.c
==============================================================================
--- branches/mbarnes-composer/mail/em-composer-utils.c (original)
+++ branches/mbarnes-composer/mail/em-composer-utils.c Tue Feb 26 05:33:35 2008
@@ -746,6 +746,7 @@
e_msg_composer_drop_editor_undo (composer);
gtk_widget_show ((GtkWidget *) composer);
+ gdk_window_raise (((GtkWidget *) composer)->window);
}
/**
Modified: branches/mbarnes-composer/mail/em-folder-browser.c
==============================================================================
--- branches/mbarnes-composer/mail/em-folder-browser.c (original)
+++ branches/mbarnes-composer/mail/em-folder-browser.c Tue Feb 26 05:33:35 2008
@@ -2009,8 +2009,32 @@
/* Fixme */
sstate = camel_object_meta_get(folder, "evolution:search_state");
- g_object_set(emfb->search, "state", sstate, NULL);
- g_free(sstate);
+ if (sstate) {
+ g_object_set(emfb->search, "state", sstate, NULL);
+ g_free(sstate);
+ } else {
+ gboolean outgoing;
+ outgoing = em_utils_folder_is_drafts (emfv->folder, emfv->folder_uri)
+ || em_utils_folder_is_sent (emfv->folder, emfv->folder_uri)
+ || em_utils_folder_is_outbox (emfv->folder, emfv->folder_uri);
+
+ e_search_bar_set_text ((ESearchBar *)emfb->search, "");
+
+ if (outgoing) {
+ e_search_bar_set_item_id ((ESearchBar *)emfb->search, 1);
+ ((ESearchBar *)emfb->search)->block_search = TRUE;
+ e_search_bar_set_item_menu ((ESearchBar *)emfb->search, 1);
+ ((ESearchBar *)emfb->search)->block_search = FALSE;
+
+ } else {
+ e_search_bar_set_item_id ((ESearchBar *)emfb->search, 0);
+ ((ESearchBar *)emfb->search)->block_search = TRUE;
+ e_search_bar_set_item_menu ((ESearchBar *)emfb->search, 0);
+ ((ESearchBar *)emfb->search)->block_search = FALSE;
+
+ }
+ e_search_bar_paint ((ESearchBar *)emfb->search);
+ }
/* set the query manually, so we dont pop up advanced or saved search stuff */
Modified: branches/mbarnes-composer/mail/em-folder-view.c
==============================================================================
--- branches/mbarnes-composer/mail/em-folder-view.c (original)
+++ branches/mbarnes-composer/mail/em-folder-view.c Tue Feb 26 05:33:35 2008
@@ -664,6 +664,7 @@
g_free (filename);
filename = g_strdup_printf ("current_wide_view-%s.xml", safe_id);
p->view_instance->current_view_filename = g_build_filename (collection->local_dir, filename, NULL);
+ g_free (filename);
g_free (safe_id);
}
g_free (id);
Modified: branches/mbarnes-composer/mail/em-format-html.c
==============================================================================
--- branches/mbarnes-composer/mail/em-format-html.c (original)
+++ branches/mbarnes-composer/mail/em-format-html.c Tue Feb 26 05:33:35 2008
@@ -309,6 +309,12 @@
if (emfh->mark_citations ^ state || emfh->citation_colour != citation_colour) {
emfh->mark_citations = state;
emfh->citation_colour = citation_colour;
+
+ if (state)
+ emfh->text_html_flags |= CAMEL_MIME_FILTER_TOHTML_MARK_CITATION;
+ else
+ emfh->text_html_flags &= ~CAMEL_MIME_FILTER_TOHTML_MARK_CITATION;
+
em_format_redraw((EMFormat *)emfh);
}
}
Modified: branches/mbarnes-composer/mail/em-format-quote.c
==============================================================================
--- branches/mbarnes-composer/mail/em-format-quote.c (original)
+++ branches/mbarnes-composer/mail/em-format-quote.c Tue Feb 26 05:33:35 2008
@@ -36,9 +36,11 @@
#include <libedataserver/e-iconv.h>
#include <glib/gi18n.h>
+#include <gconf/gconf-client.h>
#include "em-stripsig-filter.h"
#include "em-format-quote.h"
+#include "mail-config.h"
struct _EMFormatQuotePrivate {
int dummy;
@@ -148,8 +150,8 @@
((EMFormatClass *)emfq_parent)->format_clone(emf, folder, uid, msg, src);
camel_stream_reset(emfq->stream);
-
- emfq_format_empty_line(emf, emfq->stream, (CamelMimePart *)msg, NULL);
+ if (gconf_client_get_bool(mail_config_get_gconf_client(), "/apps/evolution/mail/composer/top_signature", NULL))
+ emfq_format_empty_line(emf, emfq->stream, (CamelMimePart *)msg, NULL);
handle = em_format_find_handler(emf, "x-evolution/message/prefix");
if (handle)
handle->handler(emf, emfq->stream, (CamelMimePart *)msg, handle);
@@ -391,9 +393,7 @@
if (emfq->flags & EM_FORMAT_QUOTE_CITE)
camel_stream_printf(stream, "<!--+GtkHTML:<DATA class=\"ClueFlow\" key=\"orig\" value=\"1\">-->\n"
- "<blockquote type=cite>\n"
- "<font color=\"#%06x\">\n",
- emfq->citation_colour & 0xffffff);
+ "<blockquote type=cite>\n");
if (((CamelMimePart *)emf->message) != part) {
camel_stream_printf(stream, "%s</br>\n", _("-------- Forwarded Message --------"));
@@ -404,7 +404,7 @@
em_format_part (emf, stream, part);
if (emfq->flags & EM_FORMAT_QUOTE_CITE)
- camel_stream_write_string(stream, "</blockquote></font><!--+GtkHTML:<DATA class=\"ClueFlow\" clear=\"orig\">-->");
+ camel_stream_write_string(stream, "</blockquote><!--+GtkHTML:<DATA class=\"ClueFlow\" clear=\"orig\">-->");
}
static void
Modified: branches/mbarnes-composer/mail/em-popup.c
==============================================================================
--- branches/mbarnes-composer/mail/em-popup.c (original)
+++ branches/mbarnes-composer/mail/em-popup.c Tue Feb 26 05:33:35 2008
@@ -652,7 +652,6 @@
EPopupTarget *target = ep->target;
CamelMimePart *part;
- printf("in emp_apps_open_in\n");
if (target->type == EM_POPUP_TARGET_ATTACHMENTS)
part = ((EAttachment *) ((EMPopupTargetAttachments *) target)->attachments->data)->body;
else
Modified: branches/mbarnes-composer/mail/mail-component.c
==============================================================================
--- branches/mbarnes-composer/mail/mail-component.c (original)
+++ branches/mbarnes-composer/mail/mail-component.c Tue Feb 26 05:33:35 2008
@@ -206,7 +206,7 @@
g_free(si);
}
-static void
+static gboolean
mc_add_store_done(CamelStore *store, CamelFolderInfo *info, void *data)
{
struct _store_info *si = data;
@@ -223,6 +223,8 @@
}
store_info_unref(si);
+
+ return TRUE;
}
/* Utility functions. */
@@ -489,6 +491,7 @@
g_free (priv->context_path);
g_mutex_free(priv->lock);
+ g_object_unref (priv->model);
g_object_unref (priv->logger);
g_free (priv);
@@ -831,11 +834,14 @@
mail_config_prune_proxies ();
switch (mc->priv->quit_state) {
case MC_QUIT_START: {
+ extern int camel_application_is_exiting;
int now = time(NULL)/60/60/24, days;
gboolean empty_junk;
GConfClient *gconf = mail_config_get_gconf_client();
+ camel_application_is_exiting = TRUE;
+
mail_vfolder_shutdown();
mc->priv->quit_expunge = gconf_client_get_bool(gconf, "/apps/evolution/mail/trash/empty_on_exit", NULL)
Modified: branches/mbarnes-composer/mail/mail-folder-cache.c
==============================================================================
--- branches/mbarnes-composer/mail/mail-folder-cache.c (original)
+++ branches/mbarnes-composer/mail/mail-folder-cache.c Tue Feb 26 05:33:35 2008
@@ -723,7 +723,7 @@
int id; /* id for cancellation */
guint cancel:1; /* also tells us we're cancelled */
- void (*done)(CamelStore *store, CamelFolderInfo *info, void *data);
+ gboolean (*done)(CamelStore *store, CamelFolderInfo *info, void *data);
void *data;
};
@@ -782,11 +782,12 @@
UNLOCK(info_lock);
}
-static void
+static gboolean
update_folders(CamelStore *store, CamelFolderInfo *fi, void *data)
{
struct _update_data *ud = data;
struct _store_info *si;
+ gboolean res = TRUE;
d(printf("Got folderinfo for store %s\n", store->parent_object.provider->protocol));
@@ -803,8 +804,10 @@
UNLOCK(info_lock);
if (ud->done)
- ud->done(store, fi, ud->data);
+ res = ud->done (store, fi, ud->data);
g_free(ud);
+
+ return res;
}
@@ -906,7 +909,7 @@
void
mail_note_store(CamelStore *store, CamelOperation *op,
- void (*done)(CamelStore *store, CamelFolderInfo *info, void *data), void *data)
+ gboolean (*done)(CamelStore *store, CamelFolderInfo *info, void *data), void *data)
{
struct _store_info *si;
struct _update_data *ud;
Modified: branches/mbarnes-composer/mail/mail-folder-cache.h
==============================================================================
--- branches/mbarnes-composer/mail/mail-folder-cache.h (original)
+++ branches/mbarnes-composer/mail/mail-folder-cache.h Tue Feb 26 05:33:35 2008
@@ -29,10 +29,11 @@
/* Add a store whose folders should appear in the shell
The folders are scanned from the store, and/or added at
- runtime via the folder_created event */
+ runtime via the folder_created event.
+ The 'done' function returns if we can free folder info. */
void
mail_note_store (CamelStore *store, CamelOperation *op,
- void (*done) (CamelStore *store, CamelFolderInfo *info, void *data),
+ gboolean (*done) (CamelStore *store, CamelFolderInfo *info, void *data),
void *data);
/* de-note a store */
Modified: branches/mbarnes-composer/mail/mail-ops.c
==============================================================================
--- branches/mbarnes-composer/mail/mail-ops.c (original)
+++ branches/mbarnes-composer/mail/mail-ops.c Tue Feb 26 05:33:35 2008
@@ -1042,8 +1042,9 @@
CamelStore *store;
CamelFolderInfo *info;
- void (*done)(CamelStore *store, CamelFolderInfo *info, void *data);
+ gboolean (*done)(CamelStore *store, CamelFolderInfo *info, void *data);
void *data;
+ gboolean can_clear; /* whether we can clear folder info */
};
static gchar *
@@ -1078,13 +1079,15 @@
}
if (m->done)
- m->done (m->store, m->info, m->data);
+ m->can_clear = m->done (m->store, m->info, m->data);
+ else
+ m->can_clear = TRUE;
}
static void
get_folderinfo_free (struct _get_folderinfo_msg *m)
{
- if (m->info)
+ if (m->info && m->can_clear)
camel_store_free_folder_info(m->store, m->info);
camel_object_unref(m->store);
}
@@ -1098,7 +1101,7 @@
};
int
-mail_get_folderinfo (CamelStore *store, CamelOperation *op, void (*done)(CamelStore *store, CamelFolderInfo *info, void *data), void *data)
+mail_get_folderinfo (CamelStore *store, CamelOperation *op, gboolean (*done)(CamelStore *store, CamelFolderInfo *info, void *data), void *data)
{
struct _get_folderinfo_msg *m;
int id;
Modified: branches/mbarnes-composer/mail/mail-ops.h
==============================================================================
--- branches/mbarnes-composer/mail/mail-ops.h (original)
+++ branches/mbarnes-composer/mail/mail-ops.h Tue Feb 26 05:33:35 2008
@@ -103,7 +103,7 @@
/* get folder info asynchronously */
int mail_get_folderinfo (CamelStore *store, CamelOperation *op,
- void (*done)(CamelStore *store, CamelFolderInfo *info, void *data),
+ gboolean (*done)(CamelStore *store, CamelFolderInfo *info, void *data),
void *data);
/* remove an existing folder */
Modified: branches/mbarnes-composer/mail/mail-send-recv.c
==============================================================================
--- branches/mbarnes-composer/mail/mail-send-recv.c (original)
+++ branches/mbarnes-composer/mail/mail-send-recv.c Tue Feb 26 05:33:35 2008
@@ -778,12 +778,30 @@
/* ********************************************************************** */
+static void
+get_folders (CamelStore *store, GPtrArray *folders, CamelFolderInfo *info)
+{
+ CamelException ex;
+
+ camel_exception_init (&ex);
+
+ while (info) {
+ if (camel_store_can_refresh_folder (store, info, &ex))
+ g_ptr_array_add (folders, g_strdup (info->uri));
+ camel_exception_clear (&ex);
+
+ get_folders (store, folders, info->child);
+ info = info->next;
+ }
+}
+
struct _refresh_folders_msg {
MailMsg base;
struct _send_info *info;
GPtrArray *folders;
CamelStore *store;
+ CamelFolderInfo *finfo;
};
static gchar *
@@ -799,6 +817,8 @@
CamelFolder *folder;
CamelException ex = CAMEL_EXCEPTION_INITIALISER;
+ get_folders (m->store, m->folders, m->finfo);
+
for (i=0;i<m->folders->len;i++) {
folder = mail_tool_uri_to_folder(m->folders->pdata[i], 0, &ex);
if (folder) {
@@ -829,6 +849,8 @@
for (i=0;i<m->folders->len;i++)
g_free(m->folders->pdata[i]);
g_ptr_array_free(m->folders, TRUE);
+
+ camel_store_free_folder_info (m->store, m->finfo);
camel_object_unref(m->store);
}
@@ -840,24 +862,7 @@
(MailMsgFreeFunc) refresh_folders_free
};
-static void
-get_folders (CamelStore *store, GPtrArray *folders, CamelFolderInfo *info)
-{
- CamelException ex;
-
- camel_exception_init (&ex);
-
- while (info) {
- if (camel_store_can_refresh_folder (store, info, &ex))
- g_ptr_array_add (folders, g_strdup (info->uri));
- camel_exception_clear (&ex);
-
- get_folders (store, folders, info->child);
- info = info->next;
- }
-}
-
-static void
+static gboolean
receive_update_got_folderinfo(CamelStore *store, CamelFolderInfo *info, void *data)
{
if (info) {
@@ -865,18 +870,22 @@
struct _refresh_folders_msg *m;
struct _send_info *sinfo = data;
- get_folders(store, folders, info);
-
m = mail_msg_new(&refresh_folders_info);
m->store = store;
camel_object_ref(store);
m->folders = folders;
m->info = sinfo;
+ m->finfo = info;
mail_msg_unordered_push (m);
+
+ /* do not free folder info, we will free it later */
+ return FALSE;
} else {
receive_done ("", data);
}
+
+ return TRUE;
}
static void
Modified: branches/mbarnes-composer/mail/message-list.c
==============================================================================
--- branches/mbarnes-composer/mail/message-list.c (original)
+++ branches/mbarnes-composer/mail/message-list.c Tue Feb 26 05:33:35 2008
@@ -1493,8 +1493,11 @@
char **sender_name = NULL;
str = camel_message_info_from (msg_info);
if(str && str[0] != '\0'){
- sender_name=g_strsplit(str,"<",2);
- return (void *)(*sender_name);
+ char *res;
+ sender_name = g_strsplit (str,"<",2);
+ res = g_strdup (*sender_name);
+ g_strfreev (sender_name);
+ return (void *)(res);
}
else
return (void *)("");
Modified: branches/mbarnes-composer/plugins/backup-restore/backup.c
==============================================================================
--- branches/mbarnes-composer/plugins/backup-restore/backup.c (original)
+++ branches/mbarnes-composer/plugins/backup-restore/backup.c Tue Feb 26 05:33:35 2008
@@ -13,8 +13,8 @@
#include <libgnome/gnome-util.h>
#define EVOLUTION "evolution"
-#define EVOLUTION_DIR "~/.evolution/"
-#define EVOLUTION_DIR_BACKUP "~/.evolution-old/"
+#define EVOLUTION_DIR "$HOME/.evolution/"
+#define EVOLUTION_DIR_BACKUP "$HOME/.evolution-old/"
#define GCONF_DUMP_FILE "backup-restore-gconf.xml"
#define GCONF_DUMP_PATH EVOLUTION_DIR GCONF_DUMP_FILE
#define GCONF_DIR "/apps/evolution"
@@ -81,7 +81,7 @@
/* FIXME compression type?" */
/* FIXME date/time stamp?" */
/* FIXME backup location?" */
- command = g_strdup_printf ("cd ~ && tar zpcf %s .evolution .camel_certs", filename);
+ command = g_strdup_printf ("cd $HOME && tar cf - .evolution .camel_certs | gzip > %s", filename);
s (command);
g_free (command);
@@ -113,11 +113,11 @@
CANCEL (complete);
txt = _("Backup current Evolution data");
s ("mv " EVOLUTION_DIR " " EVOLUTION_DIR_BACKUP);
- s ("mv ~/.camel_certs ~/.camel_certs_old");
+ s ("mv $HOME/.camel_certs ~/.camel_certs_old");
CANCEL (complete);
txt = _("Extracting files from backup");
- command = g_strdup_printf ("cd ~ && tar zxf %s", filename);
+ command = g_strdup_printf ("cd $HOME && gzip -cd %s| tar xf -", filename);
s (command);
g_free (command);
@@ -129,7 +129,7 @@
txt = _("Removing temporary backup files");
s ("rm -rf " GCONF_DUMP_PATH);
s ("rm -rf " EVOLUTION_DIR_BACKUP);
- s ("rm -rf ~/.camel_certs_old");
+ s ("rm -rf $HOME/.camel_certs_old");
if (restart_arg) {
CANCEL (complete);
Modified: branches/mbarnes-composer/plugins/exchange-operations/exchange-account-setup.c
==============================================================================
--- branches/mbarnes-composer/plugins/exchange-operations/exchange-account-setup.c (original)
+++ branches/mbarnes-composer/plugins/exchange-operations/exchange-account-setup.c Tue Feb 26 05:33:35 2008
@@ -953,6 +953,7 @@
GtkVBox *vbx;
GtkHBox *hbx_size;
char *folder_name, *folder_size;
+ int mode;
service = CAMEL_SERVICE (camel_folder_get_parent_store (cml_folder));
if (!service)
@@ -965,10 +966,15 @@
if (g_ascii_strcasecmp (provider->protocol, "exchange"))
return NULL;
+ account = exchange_operations_get_exchange_account ();
+ exchange_account_is_offline (account, &mode);
+ if (mode == OFFLINE_MODE)
+ return NULL;
+
folder_name = (char*) camel_folder_get_name (cml_folder);
if (!folder_name)
folder_name = g_strdup ("name");
- account = exchange_operations_get_exchange_account ();
+
model = exchange_account_folder_size_get_model (account);
if (model)
folder_size = g_strdup_printf (_("%s KB"), exchange_folder_size_get_val (model, folder_name));
Modified: branches/mbarnes-composer/plugins/exchange-operations/exchange-delegates-user.c
==============================================================================
--- branches/mbarnes-composer/plugins/exchange-operations/exchange-delegates-user.c (original)
+++ branches/mbarnes-composer/plugins/exchange-operations/exchange-delegates-user.c Tue Feb 26 05:33:35 2008
@@ -30,8 +30,11 @@
#include <mail/mail-component.h>
#include <mail/mail-send-recv.h>
#include <camel/camel-multipart.h>
+#include <camel/camel-mime-utils.h>
#include <camel/camel-stream-mem.h>
#include <exchange-account.h>
+#include "exchange-delegates.h"
+#include <exchange/exchange-account.h>
#include <e2k-global-catalog.h>
#include <e2k-marshal.h>
#include <e2k-sid.h>
@@ -51,6 +54,8 @@
#undef GTK_DISABLE_DEPRECATED
#include <gtk/gtkoptionmenu.h>
+#include <glib.h>
+
#include <string.h>
Modified: branches/mbarnes-composer/plugins/exchange-operations/exchange-folder-subscription.c
==============================================================================
--- branches/mbarnes-composer/plugins/exchange-operations/exchange-folder-subscription.c (original)
+++ branches/mbarnes-composer/plugins/exchange-operations/exchange-folder-subscription.c Tue Feb 26 05:33:35 2008
@@ -240,6 +240,7 @@
g_free (folder_name);
switch (result) {
case EXCHANGE_ACCOUNT_FOLDER_OK:
+ exchange_account_rescan_tree (subscription_info->account);
break;
case EXCHANGE_ACCOUNT_FOLDER_ALREADY_EXISTS:
e_error_run (NULL, ERROR_DOMAIN ":folder-exists-error", NULL);
@@ -281,7 +282,7 @@
g_object_unref (folder);
path = g_strdup_printf ("/%s", user_email_address);
- exchange_account_open_folder (subscription_info->account, g_strdup_printf ("/%s", path));
+ exchange_account_open_folder (subscription_info->account, path);
g_free (path);
g_free (user_email_address);
gtk_widget_destroy (dialog);
@@ -296,6 +297,11 @@
GladeXML *glade_xml;
GtkWidget *dialog, *ok_button;
SubscriptionInfo *subscription_info;
+ int mode;
+
+ exchange_account_is_offline (account, &mode);
+ if (mode == OFFLINE_MODE)
+ return FALSE;
subscription_info = g_new0 (SubscriptionInfo, 1);
subscription_info->account = account;
Modified: branches/mbarnes-composer/plugins/external-editor/external-editor.c
==============================================================================
--- branches/mbarnes-composer/plugins/external-editor/external-editor.c (original)
+++ branches/mbarnes-composer/plugins/external-editor/external-editor.c Tue Feb 26 05:33:35 2008
@@ -41,6 +41,7 @@
camel_internet_address_add (cia, " ", address_tokens [i]);
d(printf ("\nAdding camel_internet_address[%s] \n", address_tokens [i]));
}
+ g_strfreev (address_tokens);
return cia;
}
@@ -139,6 +140,8 @@
g_signal_connect (GTK_OBJECT (composer), "save-draft", G_CALLBACK (em_utils_composer_save_draft_cb), NULL);
gtk_widget_show (GTK_WIDGET (composer));
+
+ g_strfreev (tokens);
}
}
#else
Modified: branches/mbarnes-composer/plugins/groupwise-features/install-shared.c
==============================================================================
--- branches/mbarnes-composer/plugins/groupwise-features/install-shared.c (original)
+++ branches/mbarnes-composer/plugins/groupwise-features/install-shared.c Tue Feb 26 05:33:35 2008
@@ -97,6 +97,7 @@
camel_exception_init (&ex);
if (!(store = (CamelStore *) camel_session_get_service (mail_component_peek_session(NULL), uri, CAMEL_PROVIDER_STORE, &ex))) {
camel_exception_clear (&ex);
+ g_strfreev (names);
return;
}
@@ -122,12 +123,15 @@
camel_exception_init (&ex);
if (!(provider = camel_provider_get(uri, &ex))) {
camel_exception_clear (&ex);
+ g_strfreev (names);
return;
}
/* make sure the new store belongs in the tree */
- if (!(provider->flags & CAMEL_PROVIDER_IS_STORAGE))
+ if (!(provider->flags & CAMEL_PROVIDER_IS_STORAGE)) {
+ g_strfreev (names);
return;
+ }
em_folder_tree_model_add_store (model, store, account->name);
camel_object_unref (store);
Modified: branches/mbarnes-composer/plugins/groupwise-features/send-options.c
==============================================================================
--- branches/mbarnes-composer/plugins/groupwise-features/send-options.c (original)
+++ branches/mbarnes-composer/plugins/groupwise-features/send-options.c Tue Feb 26 05:33:35 2008
@@ -374,6 +374,7 @@
if (so_uri) {
if (!strcmp (so_uri, uri)) {
g_free (so_uri), so_uri = NULL;
+ g_strfreev (temp);
return E_SOURCE (r->data);
}
g_free (so_uri), so_uri = NULL;
Modified: branches/mbarnes-composer/plugins/groupwise-features/share-folder-common.c
==============================================================================
--- branches/mbarnes-composer/plugins/groupwise-features/share-folder-common.c (original)
+++ branches/mbarnes-composer/plugins/groupwise-features/share-folder-common.c Tue Feb 26 05:33:35 2008
@@ -531,8 +531,9 @@
g_free (name);
}
e_gw_connection_free_container_list (container_list);
- if (names)
- g_strfreev(names);
}
+
+ if (names)
+ g_strfreev (names);
return id;
}
Modified: branches/mbarnes-composer/plugins/import-ics-attachments/icsimporter.c
==============================================================================
--- branches/mbarnes-composer/plugins/import-ics-attachments/icsimporter.c (original)
+++ branches/mbarnes-composer/plugins/import-ics-attachments/icsimporter.c Tue Feb 26 05:33:35 2008
@@ -235,6 +235,7 @@
markup = g_markup_printf_escaped ("<b>%s</b>", label_str);
gtk_label_set_markup (GTK_LABEL (label), markup);
+ g_free (markup);
hbox = gtk_hbox_new (FALSE, FALSE);
gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 6);
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 6);
Modified: branches/mbarnes-composer/plugins/itip-formatter/itip-formatter.c
==============================================================================
--- branches/mbarnes-composer/plugins/itip-formatter/itip-formatter.c (original)
+++ branches/mbarnes-composer/plugins/itip-formatter/itip-formatter.c Tue Feb 26 05:33:35 2008
@@ -141,7 +141,7 @@
for (prop = icalcomponent_get_first_property (ical_comp, ICAL_ATTENDEE_PROPERTY);
prop != NULL;
prop = icalcomponent_get_next_property (ical_comp, ICAL_ATTENDEE_PROPERTY)) {
- const char *attendee;
+ char *attendee;
char *text;
attendee = icalproperty_get_value_as_string (prop);
@@ -153,9 +153,11 @@
text = g_strstrip (text);
if (text && !g_ascii_strcasecmp (address, text)) {
g_free (text);
+ g_free (attendee);
break;
}
g_free (text);
+ g_free (attendee);
}
return prop;
@@ -219,7 +221,7 @@
prop = find_attendee (ical_comp, account->id->address);
if (prop) {
- const char *text;
+ char *text;
icalparameter *param;
param = icalproperty_get_first_parameter (prop, ICAL_CN_PARAMETER);
@@ -229,6 +231,7 @@
text = icalproperty_get_value_as_string (prop);
pitip->to_address = g_strdup (itip_strip_mailto (text));
+ g_free (text);
g_strstrip (pitip->to_address);
pitip->my_address = g_strdup (account->id->address);
@@ -268,7 +271,7 @@
prop = find_attendee_if_sentby (ical_comp, account->id->address);
if (prop) {
- const char *text;
+ char *text;
icalparameter *param;
param = icalproperty_get_first_parameter (prop, ICAL_CN_PARAMETER);
@@ -278,6 +281,7 @@
text = icalproperty_get_value_as_string (prop);
pitip->to_address = g_strdup (itip_strip_mailto (text));
+ g_free (text);
g_strstrip (pitip->to_address);
pitip->my_address = g_strdup (account->id->address);
@@ -300,7 +304,7 @@
{
EIterator *it;
icalproperty *prop;
- const char *organizer;
+ char *organizer;
icalparameter *param;
const char *organizer_sentby;
char *organizer_clean = NULL;
@@ -315,6 +319,7 @@
if (organizer) {
organizer_clean = g_strdup (itip_strip_mailto (organizer));
organizer_clean = g_strstrip (organizer_clean);
+ g_free (organizer);
}
param = icalproperty_get_first_parameter (prop, ICAL_SENTBY_PARAMETER);
@@ -718,7 +723,7 @@
FormatItipFindData *fd = NULL;
GSList *groups, *l, *sources_conflict = NULL, *all_sources = NULL;
const char *uid;
- const char *rid;
+ char *rid = NULL;
CamelURL *url;
char *uri;
ESource *source = NULL, *current_source = NULL;
@@ -784,7 +789,7 @@
fd = g_new0 (FormatItipFindData, 1);
fd->puri = pitip;
fd->uid = g_strdup (uid);
- fd->rid = g_strdup (rid);
+ fd->rid = rid;
if (pitip->start_time && pitip->end_time) {
start = isodate_from_time_t (pitip->start_time);
@@ -911,6 +916,7 @@
ESource *source;
GError *error = NULL;
gboolean result = TRUE;
+ char *str;
/* Set X-MICROSOFT-CDO-REPLYTIME to record the time at which
* the user accepted/declined the request. (Outlook ignores
@@ -922,7 +928,9 @@
* and you then look at it in Outlook).
*/
stamp = icaltime_current_time_with_zone (icaltimezone_get_utc_timezone ());
- prop = icalproperty_new_x (icaltime_as_ical_string (stamp));
+ str = icaltime_as_ical_string (stamp);
+ prop = icalproperty_new_x (str);
+ g_free (str);
icalproperty_set_x_name (prop, "X-MICROSOFT-CDO-REPLYTIME");
icalcomponent_add_property (pitip->ical_comp, prop);
@@ -1130,7 +1138,8 @@
{
ECalComponent *comp = NULL;
icalcomponent *icalcomp = NULL, *org_icalcomp;
- const char *uid, *rid;
+ const char *uid;
+ char *rid = NULL;
const char *delegate;
GError *error = NULL;
@@ -1245,6 +1254,7 @@
cleanup:
if (comp != NULL)
g_object_unref (comp);
+ g_free (rid);
}
static void
@@ -1598,12 +1608,17 @@
{
struct _itip_puri *pitip = data;
struct _opencal_msg *m;
+ char *start, *end;
+ start = isodate_from_time_t (pitip->start_time);
+ end = isodate_from_time_t (pitip->end_time);
m = mail_msg_new (&open_calendar_info);
- m->command = g_strdup_printf ("evolution \"calendar://?startdate=%s&enddate=%s\"",
- isodate_from_time_t (pitip->start_time), isodate_from_time_t (pitip->end_time));
+ m->command = g_strdup_printf ("evolution \"calendar://?startdate=%s&enddate=%s\"", start, end);
mail_msg_slow_ordered_push (m);
+ g_free (start);
+ g_free (end);
+
return FALSE;
}
Modified: branches/mbarnes-composer/plugins/itip-formatter/itip-view.c
==============================================================================
--- branches/mbarnes-composer/plugins/itip-formatter/itip-view.c (original)
+++ branches/mbarnes-composer/plugins/itip-formatter/itip-view.c Tue Feb 26 05:33:35 2008
@@ -349,64 +349,64 @@
/* The current account ID (i.e. the delegatee) is receiving a copy of the request/response. Here we ask the delegatee to respond/accept on behalf of the delegator. */
if (priv->organizer && priv->proxy)
- on_behalf_of = g_strdup_printf (_("Please respond on behalf of <b>%s</b>"), priv->proxy);
+ on_behalf_of = g_markup_printf_escaped (_("Please respond on behalf of <b>%s</b>"), priv->proxy);
else if (priv->attendee && priv->proxy)
- on_behalf_of = g_strdup_printf (_("Received on behalf of <b>%s</b>"), priv->proxy);
+ on_behalf_of = g_markup_printf_escaped (_("Received on behalf of <b>%s</b>"), priv->proxy);
switch (priv->mode) {
case ITIP_VIEW_MODE_PUBLISH:
if (priv->organizer_sentby)
- sender = g_strdup_printf (_("<b>%s</b> through %s has published the following meeting information:"), organizer, priv->organizer_sentby);
+ sender = g_markup_printf_escaped (_("<b>%s</b> through %s has published the following meeting information:"), organizer, priv->organizer_sentby);
else
- sender = g_strdup_printf (_("<b>%s</b> has published the following meeting information:"), organizer);
+ sender = g_markup_printf_escaped (_("<b>%s</b> has published the following meeting information:"), organizer);
break;
case ITIP_VIEW_MODE_REQUEST:
/* FIXME is the delegator stuff handled correctly here? */
if (priv->delegator) {
- sender = g_strdup_printf (_("<b>%s</b> has delegated the following meeting to you:"), priv->delegator);
+ sender = g_markup_printf_escaped (_("<b>%s</b> has delegated the following meeting to you:"), priv->delegator);
} else {
if (priv->organizer_sentby)
- sender = g_strdup_printf (_("<b>%s</b> through %s requests your presence at the following meeting:"), organizer, priv->organizer_sentby);
+ sender = g_markup_printf_escaped (_("<b>%s</b> through %s requests your presence at the following meeting:"), organizer, priv->organizer_sentby);
else
- sender = g_strdup_printf (_("<b>%s</b> requests your presence at the following meeting:"), organizer);
+ sender = g_markup_printf_escaped (_("<b>%s</b> requests your presence at the following meeting:"), organizer);
}
break;
case ITIP_VIEW_MODE_ADD:
/* FIXME What text for this? */
if (priv->organizer_sentby)
- sender = g_strdup_printf (_("<b>%s</b> through %s wishes to add to an existing meeting:"), organizer, priv->organizer_sentby);
+ sender = g_markup_printf_escaped (_("<b>%s</b> through %s wishes to add to an existing meeting:"), organizer, priv->organizer_sentby);
else
- sender = g_strdup_printf (_("<b>%s</b> wishes to add to an existing meeting:"), organizer);
+ sender = g_markup_printf_escaped (_("<b>%s</b> wishes to add to an existing meeting:"), organizer);
break;
case ITIP_VIEW_MODE_REFRESH:
if (priv->attendee_sentby)
- sender = g_strdup_printf (_("<b>%s</b> through %s wishes to receive the latest information for the following meeting:"), attendee, priv->attendee_sentby);
+ sender = g_markup_printf_escaped (_("<b>%s</b> through %s wishes to receive the latest information for the following meeting:"), attendee, priv->attendee_sentby);
else
- sender = g_strdup_printf (_("<b>%s</b> wishes to receive the latest information for the following meeting:"), attendee);
+ sender = g_markup_printf_escaped (_("<b>%s</b> wishes to receive the latest information for the following meeting:"), attendee);
break;
case ITIP_VIEW_MODE_REPLY:
if (priv->attendee_sentby)
- sender = g_strdup_printf (_("<b>%s</b> through %s has sent back the following meeting response:"), attendee, priv->attendee_sentby);
+ sender = g_markup_printf_escaped (_("<b>%s</b> through %s has sent back the following meeting response:"), attendee, priv->attendee_sentby);
else
- sender = g_strdup_printf (_("<b>%s</b> has sent back the following meeting response:"), attendee);
+ sender = g_markup_printf_escaped (_("<b>%s</b> has sent back the following meeting response:"), attendee);
break;
case ITIP_VIEW_MODE_CANCEL:
if (priv->organizer_sentby)
- sender = g_strdup_printf (_("<b>%s</b> through %s has canceled the following meeting:"), organizer, priv->organizer_sentby);
+ sender = g_markup_printf_escaped (_("<b>%s</b> through %s has canceled the following meeting:"), organizer, priv->organizer_sentby);
else
- sender = g_strdup_printf (_("<b>%s</b> has canceled the following meeting."), organizer);
+ sender = g_markup_printf_escaped (_("<b>%s</b> has canceled the following meeting."), organizer);
break;
case ITIP_VIEW_MODE_COUNTER:
if (priv->attendee_sentby)
- sender = g_strdup_printf (_("<b>%s</b> through %s has proposed the following meeting changes."), attendee, priv->attendee_sentby);
+ sender = g_markup_printf_escaped (_("<b>%s</b> through %s has proposed the following meeting changes."), attendee, priv->attendee_sentby);
else
- sender = g_strdup_printf (_("<b>%s</b> has proposed the following meeting changes."), attendee);
+ sender = g_markup_printf_escaped (_("<b>%s</b> has proposed the following meeting changes."), attendee);
break;
case ITIP_VIEW_MODE_DECLINECOUNTER:
if (priv->organizer_sentby)
- sender = g_strdup_printf (_("<b>%s</b> through %s has declined the following meeting changes:"), organizer, priv->organizer_sentby);
+ sender = g_markup_printf_escaped (_("<b>%s</b> through %s has declined the following meeting changes:"), organizer, priv->organizer_sentby);
else
- sender = g_strdup_printf (_("<b>%s</b> has declined the following meeting changes."), organizer);
+ sender = g_markup_printf_escaped (_("<b>%s</b> has declined the following meeting changes."), organizer);
break;
default:
break;
@@ -437,64 +437,64 @@
/* The current account ID (i.e. the delegatee) is receiving a copy of the request/response. Here we ask the delegatee to respond/accept on behalf of the delegator. */
if (priv->organizer && priv->proxy)
- on_behalf_of = g_strdup_printf (_("Please respond on behalf of <b>%s</b>"), priv->proxy);
+ on_behalf_of = g_markup_printf_escaped (_("Please respond on behalf of <b>%s</b>"), priv->proxy);
else if (priv->attendee && priv->proxy)
- on_behalf_of = g_strdup_printf (_("Received on behalf of <b>%s</b>"), priv->proxy);
+ on_behalf_of = g_markup_printf_escaped (_("Received on behalf of <b>%s</b>"), priv->proxy);
switch (priv->mode) {
case ITIP_VIEW_MODE_PUBLISH:
if (priv->organizer_sentby)
- sender = g_strdup_printf (_("<b>%s</b> through %s has published the following task:"), organizer, priv->organizer_sentby);
+ sender = g_markup_printf_escaped (_("<b>%s</b> through %s has published the following task:"), organizer, priv->organizer_sentby);
else
- sender = g_strdup_printf (_("<b>%s</b> has published the following task:"), organizer);
+ sender = g_markup_printf_escaped (_("<b>%s</b> has published the following task:"), organizer);
break;
case ITIP_VIEW_MODE_REQUEST:
/* FIXME is the delegator stuff handled correctly here? */
if (priv->delegator) {
- sender = g_strdup_printf (_("<b>%s</b> requests the assignment of %s to the following task:"), organizer, priv->delegator);
+ sender = g_markup_printf_escaped (_("<b>%s</b> requests the assignment of %s to the following task:"), organizer, priv->delegator);
} else {
if (priv->organizer_sentby)
- sender = g_strdup_printf (_("<b>%s</b> through %s has assigned you a task:"), organizer, priv->organizer_sentby);
+ sender = g_markup_printf_escaped (_("<b>%s</b> through %s has assigned you a task:"), organizer, priv->organizer_sentby);
else
- sender = g_strdup_printf (_("<b>%s</b> has assigned you a task:"), organizer);
+ sender = g_markup_printf_escaped (_("<b>%s</b> has assigned you a task:"), organizer);
}
break;
case ITIP_VIEW_MODE_ADD:
/* FIXME What text for this? */
if (priv->organizer_sentby)
- sender = g_strdup_printf (_("<b>%s</b> through %s wishes to add to an existing task:"), organizer, priv->organizer_sentby);
+ sender = g_markup_printf_escaped (_("<b>%s</b> through %s wishes to add to an existing task:"), organizer, priv->organizer_sentby);
else
- sender = g_strdup_printf (_("<b>%s</b> wishes to add to an existing task:"), organizer);
+ sender = g_markup_printf_escaped (_("<b>%s</b> wishes to add to an existing task:"), organizer);
break;
case ITIP_VIEW_MODE_REFRESH:
if (priv->attendee_sentby)
- sender = g_strdup_printf (_("<b>%s</b> through %s wishes to receive the latest information for the following assigned task:"), attendee, priv->attendee_sentby);
+ sender = g_markup_printf_escaped (_("<b>%s</b> through %s wishes to receive the latest information for the following assigned task:"), attendee, priv->attendee_sentby);
else
- sender = g_strdup_printf (_("<b>%s</b> wishes to receive the latest information for the following assigned task:"), attendee);
+ sender = g_markup_printf_escaped (_("<b>%s</b> wishes to receive the latest information for the following assigned task:"), attendee);
break;
case ITIP_VIEW_MODE_REPLY:
if (priv->attendee_sentby)
- sender = g_strdup_printf (_("<b>%s</b> through %s has sent back the following assigned task response:"), attendee, priv->attendee_sentby);
+ sender = g_markup_printf_escaped (_("<b>%s</b> through %s has sent back the following assigned task response:"), attendee, priv->attendee_sentby);
else
- sender = g_strdup_printf (_("<b>%s</b> has sent back the following assigned task response:"), attendee);
+ sender = g_markup_printf_escaped (_("<b>%s</b> has sent back the following assigned task response:"), attendee);
break;
case ITIP_VIEW_MODE_CANCEL:
if (priv->organizer_sentby)
- sender = g_strdup_printf (_("<b>%s</b> through %s has canceled the following assigned task:"), organizer, priv->organizer_sentby);
+ sender = g_markup_printf_escaped (_("<b>%s</b> through %s has canceled the following assigned task:"), organizer, priv->organizer_sentby);
else
- sender = g_strdup_printf (_("<b>%s</b> has canceled the following assigned task:"), organizer);
+ sender = g_markup_printf_escaped (_("<b>%s</b> has canceled the following assigned task:"), organizer);
break;
case ITIP_VIEW_MODE_COUNTER:
if (priv->attendee_sentby)
- sender = g_strdup_printf (_("<b>%s</b> through %s has proposed the following task assignment changes:"), attendee, priv->attendee_sentby);
+ sender = g_markup_printf_escaped (_("<b>%s</b> through %s has proposed the following task assignment changes:"), attendee, priv->attendee_sentby);
else
- sender = g_strdup_printf (_("<b>%s</b> has proposed the following task assignment changes:"), attendee);
+ sender = g_markup_printf_escaped (_("<b>%s</b> has proposed the following task assignment changes:"), attendee);
break;
case ITIP_VIEW_MODE_DECLINECOUNTER:
if (priv->organizer_sentby)
- sender = g_strdup_printf (_("<b>%s</b> through %s has declined the following assigned task:"), organizer, priv->organizer_sentby);
+ sender = g_markup_printf_escaped (_("<b>%s</b> through %s has declined the following assigned task:"), organizer, priv->organizer_sentby);
else
- sender = g_strdup_printf (_("<b>%s</b> has declined the following assigned task:"), organizer);
+ sender = g_markup_printf_escaped (_("<b>%s</b> has declined the following assigned task:"), organizer);
break;
default:
break;
@@ -525,29 +525,29 @@
/* The current account ID (i.e. the delegatee) is receiving a copy of the request/response. Here we ask the delegatee to respond/accept on behalf of the delegator. */
if (priv->organizer && priv->proxy)
- on_behalf_of = g_strdup_printf (_("Please respond on behalf of <b>%s</b>"), priv->proxy);
+ on_behalf_of = g_markup_printf_escaped (_("Please respond on behalf of <b>%s</b>"), priv->proxy);
else if (priv->attendee && priv->proxy)
- on_behalf_of = g_strdup_printf (_("Received on behalf of <b>%s</b>"), priv->proxy);
+ on_behalf_of = g_markup_printf_escaped (_("Received on behalf of <b>%s</b>"), priv->proxy);
switch (priv->mode) {
case ITIP_VIEW_MODE_PUBLISH:
if (priv->organizer_sentby)
- sender = g_strdup_printf (_("<b>%s</b> through %s has published the following memo:"), organizer, priv->organizer_sentby);
+ sender = g_markup_printf_escaped (_("<b>%s</b> through %s has published the following memo:"), organizer, priv->organizer_sentby);
else
- sender = g_strdup_printf (_("<b>%s</b> has published the following memo:"), organizer);
+ sender = g_markup_printf_escaped (_("<b>%s</b> has published the following memo:"), organizer);
break;
case ITIP_VIEW_MODE_ADD:
/* FIXME What text for this? */
if (priv->organizer_sentby)
- sender = g_strdup_printf (_("<b>%s</b> through %s wishes to add to an existing memo:"), organizer, priv->organizer_sentby);
+ sender = g_markup_printf_escaped (_("<b>%s</b> through %s wishes to add to an existing memo:"), organizer, priv->organizer_sentby);
else
- sender = g_strdup_printf (_("<b>%s</b> wishes to add to an existing memo:"), organizer);
+ sender = g_markup_printf_escaped (_("<b>%s</b> wishes to add to an existing memo:"), organizer);
break;
case ITIP_VIEW_MODE_CANCEL:
if (priv->organizer_sentby)
- sender = g_strdup_printf (_("<b>%s</b> through %s has canceled the following shared memo:"), organizer, priv->organizer_sentby);
+ sender = g_markup_printf_escaped (_("<b>%s</b> through %s has canceled the following shared memo:"), organizer, priv->organizer_sentby);
else
- sender = g_strdup_printf (_("<b>%s</b> has canceled the following shared memo:"), organizer);
+ sender = g_markup_printf_escaped (_("<b>%s</b> has canceled the following shared memo:"), organizer);
break;
default:
break;
@@ -594,7 +594,7 @@
priv = view->priv;
- summary = g_strdup_printf ("<b>%s</b>", priv->summary);
+ summary = g_markup_printf_escaped ("<b>%s</b>", priv->summary);
gtk_label_set_text (GTK_LABEL (priv->summary_label), summary);
gtk_label_set_use_markup (GTK_LABEL (priv->summary_label), TRUE);
Modified: branches/mbarnes-composer/plugins/save-calendar/ical-format.c
==============================================================================
--- branches/mbarnes-composer/plugins/save-calendar/ical-format.c (original)
+++ branches/mbarnes-composer/plugins/save-calendar/ical-format.c Tue Feb 26 05:33:35 2008
@@ -105,7 +105,7 @@
return;
/* open source client */
- source_client = auth_new_cal_from_source (primary_source, type);
+ source_client = (ECal*) auth_new_cal_from_source (primary_source, type);
if (!e_cal_open (source_client, TRUE, &error)) {
display_error_message (gtk_widget_get_toplevel (GTK_WIDGET (target->selector)), error->message);
g_object_unref (source_client);
Modified: branches/mbarnes-composer/shell/e-shell-nm.c
==============================================================================
--- branches/mbarnes-composer/shell/e-shell-nm.c (original)
+++ branches/mbarnes-composer/shell/e-shell-nm.c Tue Feb 26 05:33:35 2008
@@ -64,16 +64,22 @@
DBusError error;
const char *object;
ShellLineStatus status;
- EShellWindow *window = E_SHELL_WINDOW (user_data);
- EShell *shell = e_shell_window_peek_shell ((EShellWindow *) user_data);
+ EShellWindow *window = NULL;
+ EShell *shell = NULL;
GNOME_Evolution_ShellState shell_state;
EShellLineStatus line_status;
+ if (!user_data || !E_IS_SHELL_WINDOW (user_data))
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+
+ window = E_SHELL_WINDOW (user_data);
+ shell = e_shell_window_peek_shell (window);
+
dbus_error_init (&error);
object = dbus_message_get_path (message);
if (dbus_message_is_signal (message, DBUS_INTERFACE_LOCAL, "Disconnected") &&
- strcmp (dbus_message_get_path (message), DBUS_PATH_LOCAL) == 0) {
+ object && !strcmp (object, DBUS_PATH_LOCAL)) {
dbus_connection_unref (dbus_connection);
dbus_connection = NULL;
Modified: branches/mbarnes-composer/shell/main.c
==============================================================================
--- branches/mbarnes-composer/shell/main.c (original)
+++ branches/mbarnes-composer/shell/main.c Tue Feb 26 05:33:35 2008
@@ -145,6 +145,8 @@
system (KILL_PROCESS_CMD " -9 evolution-data-server-1.4 2> /dev/null");
system (KILL_PROCESS_CMD " -9 evolution-data-server-1.6 2> /dev/null");
system (KILL_PROCESS_CMD " -9 evolution-data-server-1.8 2> /dev/null");
+ system (KILL_PROCESS_CMD " -9 evolution-data-server-1.10 2> /dev/null");
+ system (KILL_PROCESS_CMD " -9 evolution-data-server-1.12 2> /dev/null");
system (KILL_PROCESS_CMD " -9 lt-evolution-alarm-notify 2> /dev/null");
system (KILL_PROCESS_CMD " -9 evolution-alarm-notify 2> /dev/null");
Modified: branches/mbarnes-composer/widgets/e-timezone-dialog/e-timezone-dialog.c
==============================================================================
--- branches/mbarnes-composer/widgets/e-timezone-dialog/e-timezone-dialog.c (original)
+++ branches/mbarnes-composer/widgets/e-timezone-dialog/e-timezone-dialog.c Tue Feb 26 05:33:35 2008
@@ -27,8 +27,10 @@
#include <string.h>
#include <glib/gi18n.h>
#include <gtk/gtksignal.h>
-#include <gtk/gtkcombo.h>
-#include <gtk/gtkentry.h>
+#include <gtk/gtkcombobox.h>
+#include <gtk/gtkliststore.h>
+#include <gtk/gtkcellrenderertext.h>
+#include <gtk/gtkcelllayout.h>
#include <gtk/gtklabel.h>
#include <gnome.h>
#include <glade/glade.h>
@@ -110,8 +112,14 @@
EMapPoint *point);
static void set_map_timezone (ETimezoneDialog *etd,
icaltimezone *zone);
-static void on_combo_changed (GtkEditable *entry,
+static void on_combo_changed (GtkComboBox *combo,
ETimezoneDialog *etd);
+
+static void timezone_combo_get_active_text (GtkComboBox *combo,
+ const char **zone_name);
+static gboolean timezone_combo_set_active_text (GtkComboBox *combo,
+ const char *zone_name);
+
static void map_destroy_cb (gpointer data,
GObject *where_object_was);
@@ -198,28 +206,22 @@
{
ETimezoneDialogPrivate *priv;
icalarray *zones;
- GtkWidget *listitem;
- GtkCombo *combo;
+ GtkComboBox *combo;
+ GList *l, *list_items = NULL;
+ GtkListStore *list_store;
+ GtkTreeIter iter;
+ GtkCellRenderer *cell;
+ GHashTable *index;
int i;
priv = etd->priv;
- combo = GTK_COMBO (priv->timezone_combo);
-
- /* Clear any existing items in the combo. */
- gtk_list_clear_items (GTK_LIST (combo->list), 0, -1);
-
- /* Put the ""UTC" entry at the top of the combo's list. */
- listitem = gtk_list_item_new_with_label (_("UTC"));
- gtk_widget_show (listitem);
- gtk_container_add (GTK_CONTAINER (combo->list), listitem);
-
/* Get the array of builtin timezones. */
zones = icaltimezone_get_builtin_timezones ();
for (i = 0; i < zones->num_elements; i++) {
icaltimezone *zone;
- char *location;
+ gchar *location;
zone = icalarray_element_at (zones, i);
@@ -230,10 +232,42 @@
icaltimezone_get_latitude (zone),
E_TIMEZONE_DIALOG_MAP_POINT_NORMAL_RGBA);
- listitem = gtk_list_item_new_with_label (location);
- gtk_widget_show (listitem);
- gtk_container_add (GTK_CONTAINER (combo->list), listitem);
+ list_items = g_list_prepend (list_items, location);
}
+
+ list_items = g_list_sort (list_items, (GCompareFunc) g_utf8_collate);
+
+ /* Put the "UTC" entry at the top of the combo's list. */
+ list_items = g_list_prepend (list_items, _("UTC"));
+
+ combo = GTK_COMBO_BOX (priv->timezone_combo);
+
+ cell = gtk_cell_renderer_text_new ();
+ gtk_cell_layout_pack_start ((GtkCellLayout *) combo, cell, TRUE);
+ gtk_cell_layout_set_attributes ((GtkCellLayout *) combo, cell, "text", 0, NULL);
+
+ list_store = gtk_list_store_new (1, G_TYPE_STRING);
+ index = g_hash_table_new (g_str_hash, g_str_equal);
+ for (l = list_items, i = 0; l != NULL; l = l->next, ++i) {
+ gtk_list_store_append (list_store, &iter);
+ gtk_list_store_set (list_store, &iter, 0, (gchar *)(l->data), -1);
+ g_hash_table_insert (index, (gchar *)(l->data), GINT_TO_POINTER (i));
+ }
+
+ g_object_set_data_full (G_OBJECT (list_store), "index", index, (GDestroyNotify) g_hash_table_destroy);
+
+ gtk_combo_box_set_model (combo, (GtkTreeModel *) list_store);
+
+ gtk_rc_parse_string (
+ "style \"e-timezone-combo-style\" {\n"
+ " GtkComboBox::appears-as-list = 1\n"
+ "}\n"
+ "\n"
+ "widget \"*.e-timezone-dialog-combo\" style \"e-timezone-combo-style\"");
+
+ gtk_widget_set_name (priv->timezone_combo, "e-timezone-dialog-combo");
+
+ g_list_free (list_items);
}
@@ -279,8 +313,6 @@
| GDK_LEAVE_NOTIFY_MASK
| GDK_VISIBILITY_NOTIFY_MASK);
- gtk_editable_set_editable (GTK_EDITABLE (GTK_COMBO (priv->timezone_combo)->entry), FALSE);
-
e_timezone_dialog_add_timezones (etd);
gtk_container_add (GTK_CONTAINER (priv->map_window), map);
@@ -294,7 +326,7 @@
g_signal_connect (map, "visibility-notify-event", G_CALLBACK (on_map_visibility_changed), etd);
g_signal_connect (map, "button-press-event", G_CALLBACK (on_map_button_pressed), etd);
- g_signal_connect (GTK_COMBO (priv->timezone_combo)->entry, "changed", G_CALLBACK (on_combo_changed), etd);
+ g_signal_connect (GTK_COMBO_BOX (priv->timezone_combo), "changed", G_CALLBACK (on_combo_changed), etd);
return etd;
@@ -527,8 +559,8 @@
e_map_point_set_color_rgba (priv->map, priv->point_hover,
E_TIMEZONE_DIALOG_MAP_POINT_NORMAL_RGBA);
- gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (priv->timezone_combo)->entry),
- zone_display_name (priv->zone));
+ timezone_combo_set_active_text (GTK_COMBO_BOX (priv->timezone_combo),
+ zone_display_name (priv->zone));
gtk_label_set_text (GTK_LABEL (priv->preview_label), "");
priv->point_hover = NULL;
@@ -591,8 +623,8 @@
priv->point_selected = priv->point_hover;
priv->zone = get_zone_from_point (etd, priv->point_selected);
- gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (priv->timezone_combo)->entry),
- zone_display_name (priv->zone));
+ timezone_combo_set_active_text (GTK_COMBO_BOX (priv->timezone_combo),
+ zone_display_name (priv->zone));
}
return TRUE;
@@ -691,8 +723,8 @@
gtk_label_set_text (GTK_LABEL (priv->preview_label),
zone ? display : "");
- gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (priv->timezone_combo)->entry),
- zone ? zone_display_name(zone) : "");
+ timezone_combo_set_active_text (GTK_COMBO_BOX (priv->timezone_combo),
+ zone ? zone_display_name(zone) : "");
set_map_timezone (etd, zone);
g_free (display);
@@ -741,7 +773,7 @@
static void
-on_combo_changed (GtkEditable *entry, ETimezoneDialog *etd)
+on_combo_changed (GtkComboBox *combo_box, ETimezoneDialog *etd)
{
ETimezoneDialogPrivate *priv;
const char *new_zone_name;
@@ -752,11 +784,11 @@
priv = etd->priv;
- new_zone_name = gtk_entry_get_text (GTK_ENTRY (GTK_COMBO (priv->timezone_combo)->entry));
+ timezone_combo_get_active_text (GTK_COMBO_BOX (priv->timezone_combo), &new_zone_name);
if (!*new_zone_name)
priv->zone = NULL;
- else if (!strcmp (new_zone_name, _("UTC")))
+ else if (!g_utf8_collate (new_zone_name, _("UTC")))
priv->zone = icaltimezone_get_utc_timezone ();
else {
priv->zone = NULL;
@@ -765,7 +797,7 @@
for (i = 0; i < zones->num_elements; i++) {
map_zone = icalarray_element_at (zones, i);
location = _(icaltimezone_get_location (map_zone));
- if (!strcmp (new_zone_name, location)) {
+ if (!g_utf8_collate (new_zone_name, location)) {
priv->zone = map_zone;
break;
}
@@ -775,6 +807,39 @@
set_map_timezone (etd, map_zone);
}
+static void
+timezone_combo_get_active_text (GtkComboBox *combo, const char **zone_name)
+{
+ GtkTreeModel *list_store;
+ GtkTreeIter iter;
+
+ list_store = gtk_combo_box_get_model (combo);
+
+ /* Get the active iter in the list */
+ if (gtk_combo_box_get_active_iter (combo, &iter))
+ gtk_tree_model_get (list_store, &iter, 0, zone_name, -1);
+ else
+ *zone_name = "";
+}
+
+static gboolean
+timezone_combo_set_active_text (GtkComboBox *combo, const char *zone_name)
+{
+ GtkTreeModel *list_store;
+ GHashTable *index;
+ gpointer id = NULL;
+
+ list_store = gtk_combo_box_get_model (combo);
+ index = (GHashTable *) g_object_get_data (G_OBJECT (list_store), "index");
+
+ if (zone_name && *zone_name)
+ id = g_hash_table_lookup (index, zone_name);
+
+ gtk_combo_box_set_active (combo, GPOINTER_TO_INT (id));
+
+ return (id != NULL);
+}
+
/**
* e_timezone_dialog_reparent:
* @etd: #ETimezoneDialog.
Modified: branches/mbarnes-composer/widgets/e-timezone-dialog/e-timezone-dialog.glade
==============================================================================
--- branches/mbarnes-composer/widgets/e-timezone-dialog/e-timezone-dialog.glade (original)
+++ branches/mbarnes-composer/widgets/e-timezone-dialog/e-timezone-dialog.glade Tue Feb 26 05:33:35 2008
@@ -247,7 +247,7 @@
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
- <property name="mnemonic_widget">combo-entry1</property>
+ <property name="mnemonic_widget">timezone-combo</property>
</widget>
<packing>
<property name="padding">0</property>
@@ -284,59 +284,13 @@
</child>
<child>
- <widget class="GtkCombo" id="timezone-combo">
+ <widget class="GtkComboBox" id="timezone-combo">
<property name="visible">True</property>
- <property name="value_in_list">False</property>
- <property name="allow_empty">True</property>
- <property name="case_sensitive">False</property>
- <property name="enable_arrow_keys">True</property>
- <property name="enable_arrows_always">False</property>
+ <property name="add_tearoffs">False</property>
+ <property name="focus_on_click">True</property>
<accessibility>
<atkproperty name="AtkObject::accessible_name" translatable="yes">TimeZone Combobox</atkproperty>
</accessibility>
-
- <child internal-child="entry">
- <widget class="GtkEntry" id="combo-entry1">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="editable">False</property>
- <property name="visibility">True</property>
- <property name="max_length">0</property>
- <property name="text" translatable="yes"></property>
- <property name="has_frame">True</property>
- <property name="invisible_char">*</property>
- <property name="activates_default">False</property>
- </widget>
- </child>
-
- <child internal-child="list">
- <widget class="GtkList" id="convertwidget3">
- <property name="visible">True</property>
- <property name="selection_mode">GTK_SELECTION_BROWSE</property>
-
- <child>
- <widget class="GtkListItem" id="convertwidget4">
- <property name="visible">True</property>
-
- <child>
- <widget class="GtkLabel" id="convertwidget5">
- <property name="visible">True</property>
- <property name="label" translatable="yes"></property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- </widget>
- </child>
- </widget>
- </child>
- </widget>
- </child>
</widget>
<packing>
<property name="padding">0</property>
Modified: branches/mbarnes-composer/widgets/misc/e-calendar-item.c
==============================================================================
--- branches/mbarnes-composer/widgets/misc/e-calendar-item.c (original)
+++ branches/mbarnes-composer/widgets/misc/e-calendar-item.c Tue Feb 26 05:33:35 2008
@@ -430,9 +430,9 @@
calitem->styles = NULL;
}
- if (calitem->signal_emission_idle_id != 0) {
+ if (calitem->signal_emission_idle_id > 0) {
g_source_remove (calitem->signal_emission_idle_id);
- calitem->signal_emission_idle_id = 0;
+ calitem->signal_emission_idle_id = -1;
}
if (calitem->font_desc) {
@@ -1678,8 +1678,10 @@
/* Just return if the month is outside the given area. */
if (month_x >= width || month_x + calitem->month_width <= 0
- || month_y >= height || month_y + calitem->month_height <= 0)
+ || month_y >= height || month_y + calitem->month_height <= 0) {
+ cairo_destroy (cr);
return;
+ }
month = calitem->month + row * calitem->cols + col;
year = calitem->year + month / 12;
@@ -1746,6 +1748,7 @@
if (clip_width <= 0 || clip_height <= 0) {
g_object_unref (layout);
+ cairo_destroy (cr);
return;
}
Modified: branches/mbarnes-composer/widgets/misc/e-cursors.c
==============================================================================
--- branches/mbarnes-composer/widgets/misc/e-cursors.c (original)
+++ branches/mbarnes-composer/widgets/misc/e-cursors.c Tue Feb 26 05:33:35 2008
@@ -115,11 +115,11 @@
e_color_init ();
for (i = 0; cursors [i].hot_x; i++){
- GdkBitmap *bitmap = NULL, *mask = NULL;
-
if (cursors [i].hot_x < 0)
cursors [i].cursor = gdk_cursor_new (cursors [i].hot_y);
else {
+ GdkBitmap *bitmap = NULL, *mask = NULL;
+
create_bitmap_and_mask_from_xpm (&bitmap, &mask, cursors [i].xpm);
/* The foreground and background colours are reversed.
@@ -131,6 +131,9 @@
&e_black, &e_white,
cursors [i].hot_x,
cursors [i].hot_y);
+
+ g_object_unref (bitmap);
+ g_object_unref (mask);
}
}
Modified: branches/mbarnes-composer/widgets/table/e-table-item.c
==============================================================================
--- branches/mbarnes-composer/widgets/table/e-table-item.c (original)
+++ branches/mbarnes-composer/widgets/table/e-table-item.c Tue Feb 26 05:33:35 2008
@@ -2701,7 +2701,6 @@
break;
}
-
g_signal_emit (eti, eti_signals [KEY_PRESS], 0,
model_to_view_row(eti, cursor_row), cursor_col, e, &return_val);
if ((!return_val) &&
@@ -2743,6 +2742,11 @@
break;
case GDK_Home:
case GDK_KP_Home:
+ if (eti_editing (eti)) {
+ handled = FALSE;
+ break;
+ }
+
if (eti->cursor_mode != E_CURSOR_LINE) {
eti_cursor_move (eti, model_to_view_row(eti, cursor_row), 0);
return_val = TRUE;
@@ -2751,6 +2755,11 @@
break;
case GDK_End:
case GDK_KP_End:
+ if (eti_editing (eti)) {
+ handled = FALSE;
+ break;
+ }
+
if (eti->cursor_mode != E_CURSOR_LINE) {
eti_cursor_move (eti, model_to_view_row(eti, cursor_row), eti->cols - 1);
return_val = TRUE;
Modified: branches/mbarnes-composer/widgets/text/e-text.c
==============================================================================
--- branches/mbarnes-composer/widgets/text/e-text.c (original)
+++ branches/mbarnes-composer/widgets/text/e-text.c Tue Feb 26 05:33:35 2008
@@ -1700,7 +1700,7 @@
cy > text->clip_cy + clip_height)
return 1;
- if (text->fill_clip_rectangle)
+ if (text->fill_clip_rectangle || !text->text || !*text->text)
return 0;
cx -= text->cx;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]