Compare commits

..

19 commits

Author SHA1 Message Date
Fedora Release Engineering
e309a65230 dist-git conversion 2010-07-28 13:59:40 +00:00
Matthew Barnes
bc71d9301c - Add patches for RH bug #449922 (buffer overflow vulnerabilities). 2008-06-04 10:03:29 +00:00
Daniel Williams
d8f8c02452 - Add patch for GNOME bug #524310 2008-03-25 14:57:59 +00:00
Matthew Barnes
e71b1dd66c Add a Bugzilla reference for CVE-2008-0072. 2008-03-05 15:40:58 +00:00
Matthew Barnes
3fa449c978 - Add patch for CVE-2008-0072 (format string vulnerability). 2008-03-05 15:09:49 +00:00
Matthew Barnes
b049b0dc03 - Add patch for RH bug #249640 (todo conduit crash). 2007-11-03 19:26:30 +00:00
Daniel Williams
50807c7d26 - Backport fix for GNOME bug #239441 2007-11-01 20:41:33 +00:00
Matthew Barnes
0e77303d91 - Revise patch for GNOME bug #417999 to fix GNOME bug #447591 (Automatic
Contacts combo boxes don't work).
2007-08-30 14:06:14 +00:00
Matthew Barnes
11e4fb193c - Revise patch for GNOME bug #417999 to fix GNOME bug #447591 (Automatic
Contacts combo boxes don't work).
2007-08-30 04:09:21 +00:00
Matthew Barnes
0aa7fad574 - Revise patch for GNOME bug #362638 to fix GNOME bug #357175 (Evolution
fails to close after IMAP alert has been displayed).
2007-08-30 03:11:41 +00:00
Matthew Barnes
a225c0caf7 - Revise patch for GNOME bug #362638 to fix GNOME bug #357175 (Evolution
fails to close after IMAP alert has been displayed).
2007-08-30 02:13:30 +00:00
Matthew Barnes
68c2257bfa - Add patch for GNOME bug #380534 (clarify version requirements). 2007-07-27 14:57:57 +00:00
Matthew Barnes
d8f267efca - Revise patch for GNOME bug #362638 to fix RH bug #245695 (crash on
alert).
2007-07-14 19:48:34 +00:00
Matthew Barnes
605188aa23 - Update to 2.10.3 2007-07-02 18:18:26 +00:00
Matthew Barnes
a8f5d57bb1 - Revise patch for GNOME bug #362638 to fix RH bug #245289 (frequent
hangs).
2007-06-27 18:37:05 +00:00
Matthew Barnes
283a929714 - Revise patch for GNOME bug #362638 to fix RH bug #240507 (hang on exit). 2007-06-06 17:32:14 +00:00
Matthew Barnes
0df3889337 - Fix misapplied patch. 2007-05-29 05:29:07 +00:00
Matthew Barnes
02f6231b7f - Update to 2.10.2
- Remove patch for RH bug #202289 (fixed upstream).
- Remove patch for RH bug #235878 (fixed upstream).
- Remove patch for RH bug #238551 (fixed upstream).
2007-05-29 04:09:29 +00:00
Bill Nottingham
4e7ca67286 Initialize branch F-7 for evolution 2007-05-18 03:49:50 +00:00
51 changed files with 19531 additions and 559 deletions

2
.gitignore vendored
View file

@ -1 +1 @@
/evolution-*.tar.xz
evolution-2.10.3.tar.bz2

View file

@ -1,42 +0,0 @@
diff -up evolution-3.48.1 evolution-3.48
diff -up evolution-3.48.1/docs/evolution.1 evolution-3.48.1/docs/evolution
diff -up evolution-3.48.1/src/modules/backup-restore/evolution-backup-tool.c.1 evolution-3.48.1/src/modules/backup-restore/evolution-backup-tool.c
--- evolution-3.48.1/src/modules/backup-restore/evolution-backup-tool.c.1 2023-11-27 13:12:25.099463743 -0500
+++ evolution-3.48.1/src/modules/backup-restore/evolution-backup-tool.c 2023-11-27 13:14:38.640243434 -0500
@@ -674,7 +674,7 @@ get_source_manager_reload_command (void)
g_string_free (tmp, TRUE);
tmp = NULL;
- base_filename = g_strdup (EDS_SOURCES_DBUS_SERVICE_NAME);
+ base_filename = g_ascii_strdown (EDS_SOURCES_DBUS_SERVICE_NAME, -1);
if (!base_filename || !*base_filename) {
g_free (base_filename);
@@ -690,14 +690,16 @@ get_source_manager_reload_command (void)
while (!tmp) {
const gchar *name;
+ gchar *name_down;
name = g_dir_read_name (dir);
+ name_down = g_ascii_strdown (name, -1);
if (!name)
break;
- if (g_ascii_strncasecmp (name, base_filename, base_filename_len) == 0 &&
- g_ascii_strncasecmp (name + strlen (name) - 8, ".service", 8) == 0) {
+ if (strstr (name_down, base_filename) != NULL &&
+ strncmp (name_down + strlen (name) - 8, ".service", 8) == 0) {
gchar *filename;
filename = g_strconcat ("$DBUSDATADIR", G_DIR_SEPARATOR_S, name, NULL);
@@ -724,6 +726,8 @@ get_source_manager_reload_command (void)
g_free (str);
}
}
+
+ g_free (name_down);
}
g_free (base_filename);

View file

@ -0,0 +1,11 @@
--- evolution-1.4.4/configure.ldaphack 2003-08-05 02:06:26.000000000 -0400
+++ evolution-1.4.4/configure 2003-08-05 02:06:45.000000000 -0400
@@ -12135,7 +12135,7 @@
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lldap $LDAP_LDFLAGS $LDAP_LIBS $LIBS"
+LIBS="-lldap -lresolv $LDAP_LDFLAGS $LDAP_LIBS $LIBS"
cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
/* confdefs.h. */

View file

@ -0,0 +1,26 @@
--- evolution-2.0.2/mail/em-utils.c.fix-145552 2004-09-24 11:49:29.000000000 -0400
+++ evolution-2.0.2/mail/em-utils.c 2005-08-02 22:42:04.000000000 -0400
@@ -1919,10 +1919,22 @@
* try to do better with the filename check.
*/
+ /* RH bug 145552: code based on _gnome_vfs_get_mime_type_internal:
+ * So many file types come compressed by gzip
+ * that extensions are more reliable than magic
+ * typing. If the file has a suffix, then use
+ * the type from the suffix:
+ */
if (magic_type) {
if (name_type
&& (!strcmp(magic_type, "text/plain")
- || !strcmp(magic_type, "application/octet-stream")))
+ || !strcmp(magic_type, "application/octet-stream")
+ || !strcmp(magic_type, "application/octet-stream")
+ || !strcmp(magic_type, "application/x-ole-storage")
+ || !strcmp(magic_type, "text/xml")
+ || !strcmp(magic_type, "application/x-bzip")
+ || !strcmp(magic_type, "application/x-gzip")
+ || !strcmp(magic_type, "application/zip")))
return name_type;
else
return magic_type;

View file

@ -0,0 +1,39 @@
--- evolution-2.10.0/mail/em-utils.c.drop-old-glib-support 2007-03-18 08:17:46.000000000 -0400
+++ evolution-2.10.0/mail/em-utils.c 2007-03-18 08:24:07.000000000 -0400
@@ -42,10 +42,6 @@
#undef interface
#endif
-#if !GLIB_CHECK_VERSION (2, 8, 0)
-#define g_access access
-#endif
-
#include <camel/camel-stream-fs.h>
#include <camel/camel-url-scanner.h>
#include <camel/camel-file-utils.h>
--- evolution-2.10.0/mail/mail-config.c.drop-old-glib-support 2007-01-03 10:34:12.000000000 -0500
+++ evolution-2.10.0/mail/mail-config.c 2007-03-18 08:24:07.000000000 -0400
@@ -76,10 +76,6 @@
#include "mail-mt.h"
#include "mail-tools.h"
-#if !GLIB_CHECK_VERSION (2, 8, 0)
-#define g_creat creat
-#endif
-
/* Note, the first element of each MailConfigLabel must NOT be translated */
MailConfigLabel label_defaults[5] = {
{ "important", N_("I_mportant"), "#ff0000" }, /* red */
--- evolution-2.10.0/plugins/save-attachments/save-attachments.c.drop-old-glib-support 2007-03-18 08:17:29.000000000 -0400
+++ evolution-2.10.0/plugins/save-attachments/save-attachments.c 2007-03-18 08:24:07.000000000 -0400
@@ -32,10 +32,6 @@
#include <glib/gi18n.h>
#include <glib/gstdio.h>
-#if !GLIB_CHECK_VERSION (2, 8, 0)
-#define g_access access
-#endif
-
#include <gtk/gtkcheckbutton.h>
#include <gtk/gtkdialog.h>
#include <gtk/gtkmessagedialog.h>

View file

@ -0,0 +1,31 @@
--- evolution-2.10.0/mail/mail-session.c.e-passwords 2007-03-12 23:41:06.000000000 -0400
+++ evolution-2.10.0/mail/mail-session.c 2007-03-12 23:41:35.000000000 -0400
@@ -679,8 +679,6 @@
d(printf ("Gone non-interactive, checking for outstanding interactive tasks\n"));
- e_passwords_cancel();
-
/* flush/cancel pending user messages */
while ((um = (struct _user_message_msg *) e_dlist_remhead (&message_list))) {
d(printf ("Flusing message request: %s\n", um->prompt));
--- evolution-2.10.0/shell/main.c.e-passwords 2007-03-12 23:39:38.000000000 -0400
+++ evolution-2.10.0/shell/main.c 2007-03-12 23:39:54.000000000 -0400
@@ -565,7 +565,6 @@
glade_init ();
e_cursors_init ();
e_icon_factory_init ();
- e_passwords_init();
gtk_window_set_default_icon_name ("evolution");
--- evolution-2.10.0/calendar/gui/alarm-notify/notify-main.c.e-passwords 2007-03-12 23:40:22.000000000 -0400
+++ evolution-2.10.0/calendar/gui/alarm-notify/notify-main.c 2007-03-12 23:40:36.000000000 -0400
@@ -169,7 +169,6 @@
alarm_done ();
- e_passwords_shutdown ();
gnome_sound_shutdown ();
return 0;

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,274 @@
--- evolution-2.10.0/shell/main.c.shell-main-cleanups 2007-03-17 22:19:29.000000000 -0400
+++ evolution-2.10.0/shell/main.c 2007-03-17 22:21:01.000000000 -0400
@@ -88,6 +88,9 @@
#include "e-util/e-plugin.h"
+#define SKIP_WARNING_DIALOG_KEY \
+ "/apps/evolution/shell/skip_warning_dialog"
+
static EShell *shell = NULL;
/* Command-line options. */
@@ -100,7 +103,7 @@
#endif
static gboolean disable_eplugin = FALSE;
-static gint idle_cb (void *data);
+static gboolean idle_cb (gchar **uris);
static char *default_component_id = NULL;
static char *evolution_debug_log = NULL;
@@ -133,6 +136,7 @@
system (KILL_PROCESS_CMD " -9 evolution-data-server-1.2 2> /dev/null");
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 lt-evolution-alarm-notify 2> /dev/null");
system (KILL_PROCESS_CMD " -9 evolution-alarm-notify 2> /dev/null");
@@ -182,35 +186,15 @@
/* Warning dialog to scare people off a little bit. */
-static void
-warning_dialog_response_callback (GtkDialog *dialog,
- int button_number,
- void *data)
-{
- GtkCheckButton *dont_bother_me_again_checkbox;
- GConfClient *client;
-
- dont_bother_me_again_checkbox = GTK_CHECK_BUTTON (data);
-
- client = gconf_client_get_default ();
- gconf_client_set_bool (client, "/apps/evolution/shell/skip_warning_dialog",
- gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dont_bother_me_again_checkbox)),
- NULL);
- g_object_unref (client);
-
- gtk_widget_destroy (GTK_WIDGET (dialog));
-
- idle_cb(NULL);
-}
-
-static void
+static gboolean
show_development_warning(void)
{
GtkWidget *vbox;
GtkWidget *label;
GtkWidget *warning_dialog;
- GtkWidget *dont_bother_me_again_checkbox;
+ GtkWidget *checkbox;
GtkWidget *alignment;
+ gboolean skip;
char *text;
warning_dialog = gtk_dialog_new ();
@@ -262,59 +246,58 @@
gtk_box_pack_start (GTK_BOX (vbox), label, TRUE, TRUE, 0);
- dont_bother_me_again_checkbox = gtk_check_button_new_with_label (_("Do not tell me again"));
+ checkbox = gtk_check_button_new_with_label (_("Do not tell me again"));
alignment = gtk_alignment_new (0.0, 0.0, 0.0, 0.0);
- gtk_container_add (GTK_CONTAINER (alignment), dont_bother_me_again_checkbox);
+ gtk_container_add (GTK_CONTAINER (alignment), checkbox);
gtk_box_pack_start (GTK_BOX (vbox), alignment, TRUE, TRUE, 0);
gtk_widget_show_all (warning_dialog);
- g_signal_connect (warning_dialog, "response",
- G_CALLBACK (warning_dialog_response_callback),
- dont_bother_me_again_checkbox);
+ gtk_dialog_run (GTK_DIALOG (warning_dialog));
+
+ skip = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (checkbox));
+
+ gtk_widget_destroy (warning_dialog);
+
+ idle_cb (NULL);
+
+ return skip;
}
static void
-destroy_config (void)
+destroy_config (GConfClient *client)
{
- GConfClient *gconf;
-
- gconf = gconf_client_get_default ();
-
/* Unset the source stuff */
- gconf_client_unset (gconf, "/apps/evolution/calendar/sources", NULL);
- gconf_client_unset (gconf, "/apps/evolution/tasks/sources", NULL);
- gconf_client_unset (gconf, "/apps/evolution/addressbook/sources", NULL);
- gconf_client_unset (gconf, "/apps/evolution/addressbook/sources", NULL);
+ gconf_client_unset (client, "/apps/evolution/calendar/sources", NULL);
+ gconf_client_unset (client, "/apps/evolution/tasks/sources", NULL);
+ gconf_client_unset (client, "/apps/evolution/addressbook/sources", NULL);
/* Reset the version */
- gconf_client_set_string (gconf, "/apps/evolution/version", "1.4.0", NULL);
+ gconf_client_set_string (client, "/apps/evolution/version", "1.4.0", NULL);
/* Clear the dir */
system ("rm -Rf ~/.evolution");
-
- g_object_unref (gconf);
}
#endif /* DEVELOPMENT */
static void
-open_uris (GNOME_Evolution_Shell corba_shell, GSList *uri_list)
+open_uris (GNOME_Evolution_Shell corba_shell, gchar **uris)
{
- GSList *p;
CORBA_Environment ev;
+ guint n_uris, ii;
- CORBA_exception_init (&ev);
+ g_assert (uris != NULL);
+ n_uris = g_strv_length (uris);
- for (p = uri_list; p != NULL; p = p->next) {
- const char *uri;
+ CORBA_exception_init (&ev);
- uri = (const char *) p->data;
- GNOME_Evolution_Shell_handleURI (corba_shell, uri, &ev);
+ for (ii = 0; ii < n_uris; ii++) {
+ GNOME_Evolution_Shell_handleURI (corba_shell, uris[ii], &ev);
if (ev._major != CORBA_NO_EXCEPTION) {
- g_warning ("Invalid URI: %s", uri);
+ g_warning ("Invalid URI: %s", uris[ii]);
CORBA_exception_free (&ev);
}
}
@@ -324,23 +307,22 @@
/* This is for doing stuff that requires the GTK+ loop to be running already. */
-static gint
-idle_cb (void *data)
+static gboolean
+idle_cb (gchar **uris)
{
- GSList *uri_list;
GNOME_Evolution_Shell corba_shell;
CORBA_Environment ev;
EShellConstructResult result;
EShellStartupLineMode startup_line_mode;
+ g_assert (uris == NULL || g_strv_length (uris) > 0);
+
#ifdef KILL_PROCESS_CMD
kill_old_dataserver ();
#endif
CORBA_exception_init (&ev);
- uri_list = (GSList *) data;
-
if (! start_online && ! start_offline)
startup_line_mode = E_SHELL_STARTUP_LINE_MODE_CONFIG;
else if (start_online)
@@ -378,15 +360,16 @@
}
if (shell != NULL) {
- if (g_slist_length (uri_list) == 0)
+ if (uris != NULL)
+ open_uris (corba_shell, uris);
+ else
e_shell_create_window (shell, default_component_id, NULL);
- open_uris (corba_shell, uri_list);
} else {
CORBA_Environment ev;
CORBA_exception_init (&ev);
- if (uri_list != NULL)
- open_uris (corba_shell, uri_list);
+ if (uris != NULL)
+ open_uris (corba_shell, uris);
else
if (default_component_id == NULL)
GNOME_Evolution_Shell_createNewWindow (corba_shell, "", &ev);
@@ -396,8 +379,6 @@
CORBA_exception_free (&ev);
}
- g_slist_free (uri_list);
-
CORBA_Object_release (corba_shell, &ev);
CORBA_exception_free (&ev);
@@ -501,7 +482,6 @@
GConfClient *client;
gboolean skip_warning_dialog;
#endif
- GSList *uri_list;
GnomeProgram *program;
GOptionContext *context;
char *filename;
@@ -543,8 +523,10 @@
#endif
#if DEVELOPMENT
+ client = g_conf_client_get_default ();
+
if (force_migrate) {
- destroy_config ();
+ destroy_config (client);
}
#endif
@@ -571,17 +553,6 @@
if (setup_only)
exit (0);
- uri_list = NULL;
-
- if (remaining_args != NULL) {
- const char **p;
-
- for (p = (const char**)remaining_args; *p != NULL; p++)
- uri_list = g_slist_prepend (uri_list, (char *) *p);
- }
- uri_list = g_slist_reverse (uri_list);
-
-
gnome_sound_init ("localhost");
if (!disable_eplugin) {
@@ -597,15 +568,20 @@
}
#if DEVELOPMENT
- client = gconf_client_get_default ();
- skip_warning_dialog = gconf_client_get_bool (client, "/apps/evolution/shell/skip_warning_dialog", NULL);
- g_object_unref (client);
+ skip_warning_dialog = gconf_client_get_bool (
+ client, SKIP_WARNING_DIALOG_KEY, NULL);
if (!skip_warning_dialog && !getenv ("EVOLVE_ME_HARDER"))
- show_development_warning();
+ gconf_client_set_bool (
+ client, SKIP_WARNING_DIALOG_KEY,
+ show_development_warning (), NULL);
else
+ g_idle_add ((GSourceFunc) idle_cb, remaining_args);
+
+ g_object_unref (client);
+#else
+ g_idle_add ((GSourceFunc) idle_cb, remaining_args);
#endif
- g_idle_add (idle_cb, uri_list);
bonobo_main ();

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,357 @@
--- evolution-2.10.1/plugins/exchange-operations/exchange-config-listener.c.check-uri-before-strcmp 2007-04-09 09:09:13.000000000 -0400
+++ evolution-2.10.1/plugins/exchange-operations/exchange-config-listener.c 2007-05-14 13:34:13.000000000 -0400
@@ -1250,26 +1250,30 @@
exchange_add_autocompletion_folders (GConfClient *gc_client, ExchangeAccount *account)
{
ESourceList *sl=NULL;
- ESourceGroup *group;
ESource *source;
- GSList *groups, *sources;
+ GSList *groups;
gboolean found_group=FALSE;
sl = e_source_list_new_for_gconf (gc_client, CONF_KEY_CONTACTS);
groups = e_source_list_peek_groups (sl);
for ( ; groups != NULL && !found_group; groups = g_slist_next (groups)) {
- group = E_SOURCE_GROUP (groups->data);
+ ESourceGroup *group = E_SOURCE_GROUP (groups->data);
+
if (strcmp (e_source_group_peek_name (group), account->account_name) == 0
&&
strcmp (e_source_group_peek_base_uri (group), EXCHANGE_URI_PREFIX) == 0) {
-
- sources = e_source_group_peek_sources (group);
+ GSList *sources = e_source_group_peek_sources (group);
for( ; sources != NULL; sources = g_slist_next (sources)) {
- source = E_SOURCE (sources->data);
- if (g_str_has_prefix (e_source_peek_absolute_uri (source),
- "gal://")) {
+ ESource *source = E_SOURCE (sources->data);
+ const gchar *absolute_uri;
+
+ g_assert (source != NULL);
+ absolute_uri = e_source_peek_absolute_uri (source);
+ if (absolute_uri == NULL)
+ continue;
+ if (g_str_has_prefix (absolute_uri, "gal://")) {
/* Set autocompletion on GAL alone by default */
e_source_set_property (source, "completion", "true");
break;
--- evolution-2.10.1/plugins/groupwise-account-setup/camel-gw-listener.c.check-uri-before-strcmp 2007-05-14 13:21:57.000000000 -0400
+++ evolution-2.10.1/plugins/groupwise-account-setup/camel-gw-listener.c 2007-05-14 13:34:13.000000000 -0400
@@ -254,10 +254,7 @@
remove_esource (const char *conf_key, const char *group_name, char* source_name, const char* relative_uri)
{
ESourceList *list;
- ESourceGroup *group;
- ESource *source;
GSList *groups;
- GSList *sources;
gboolean found_group;
GConfClient* client;
GSList *ids;
@@ -271,19 +268,21 @@
found_group = FALSE;
for ( ; groups != NULL && !found_group; groups = g_slist_next (groups)) {
-
- group = E_SOURCE_GROUP (groups->data);
+ ESourceGroup *group = E_SOURCE_GROUP (groups->data);
if (strcmp (e_source_group_peek_name (group), group_name) == 0 &&
strcmp (e_source_group_peek_base_uri (group), GROUPWISE_URI_PREFIX ) == 0) {
-
- sources = e_source_group_peek_sources (group);
+ GSList *sources = e_source_group_peek_sources (group);
for( ; sources != NULL; sources = g_slist_next (sources)) {
-
- source = E_SOURCE (sources->data);
-
- if (strcmp (e_source_peek_relative_uri (source), relative_uri) == 0) {
+ ESource *source = E_SOURCE (sources->data);
+ const gchar *source_relative_uri;
+
+ g_assert (source != NULL);
+ source_relative_uri = e_source_peek_relative_uri (source);
+ if (source_relative_uri == NULL)
+ continue;
+ if (strcmp (source_relative_uri, relative_uri) == 0) {
if (!strcmp (conf_key, CALENDAR_SOURCES))
source_selection_key = SELECTED_CALENDARS;
@@ -328,16 +327,12 @@
modify_esource (const char* conf_key, GwAccountInfo *old_account_info, const char* new_group_name, CamelURL *new_url)
{
ESourceList *list;
- ESourceGroup *group;
- ESource *source;
GSList *groups;
- GSList *sources;
char *old_relative_uri;
CamelURL *url;
gboolean found_group;
GConfClient* client;
const char *poa_address;
- char *new_relative_uri;
const char *new_poa_address;
url = camel_url_new (old_account_info->source_url, NULL);
@@ -354,20 +349,23 @@
found_group = FALSE;
for ( ; groups != NULL && !found_group; groups = g_slist_next (groups)) {
-
- group = E_SOURCE_GROUP (groups->data);
+ ESourceGroup *group = E_SOURCE_GROUP (groups->data);
if (strcmp (e_source_group_peek_name (group), old_account_info->name) == 0 &&
strcmp (e_source_group_peek_base_uri (group), GROUPWISE_URI_PREFIX) == 0) {
-
- sources = e_source_group_peek_sources (group);
+ GSList *sources = e_source_group_peek_sources (group);
for ( ; sources != NULL; sources = g_slist_next (sources)) {
-
- source = E_SOURCE (sources->data);
-
- if (strcmp (e_source_peek_relative_uri (source), old_relative_uri) == 0) {
-
+ ESource *source = E_SOURCE (sources->data);
+ const gchar *source_relative_uri;
+
+ g_assert (source != NULL);
+ source_relative_uri = e_source_peek_relative_uri (source);
+ if (source_relative_uri == NULL)
+ continue;
+ if (strcmp (source_relative_uri, old_relative_uri) == 0) {
+ gchar *new_relative_uri;
+
new_relative_uri = g_strdup_printf ("%s@%s/", new_url->user, new_poa_address);
e_source_group_set_name (group, new_group_name);
e_source_set_relative_uri (source, new_relative_uri);
--- evolution-2.10.1/plugins/hula-account-setup/camel-hula-listener.c.check-uri-before-strcmp 2007-04-09 09:09:14.000000000 -0400
+++ evolution-2.10.1/plugins/hula-account-setup/camel-hula-listener.c 2007-05-14 13:34:13.000000000 -0400
@@ -241,10 +241,7 @@
remove_esource (const char *conf_key, const char *group_name, char* source_name, const char* relative_uri)
{
ESourceList *list;
- ESourceGroup *group;
- ESource *source;
GSList *groups;
- GSList *sources;
gboolean found_group;
GConfClient* client;
GSList *ids;
@@ -258,19 +255,21 @@
found_group = FALSE;
for ( ; groups != NULL && !found_group; groups = g_slist_next (groups)) {
-
- group = E_SOURCE_GROUP (groups->data);
+ ESourceGroup *group = E_SOURCE_GROUP (groups->data);
if (strcmp (e_source_group_peek_name (group), group_name) == 0 &&
strcmp (e_source_group_peek_base_uri (group), HULA_CALDAV_URI_PREFIX ) == 0) {
-
- sources = e_source_group_peek_sources (group);
+ GSList *sources = e_source_group_peek_sources (group);
for( ; sources != NULL; sources = g_slist_next (sources)) {
-
- source = E_SOURCE (sources->data);
-
- if (strcmp (e_source_peek_relative_uri (source), relative_uri) == 0) {
+ ESource *source = E_SOURCE (sources->data);
+ const gchar *source_relative_uri;
+
+ g_assert (source != NULL);
+ source_relative_uri = e_source_peek_relative_uri (source);
+ if (source_relative_uri == NULL)
+ continue;
+ if (strcmp (source_relative_uri, relative_uri) == 0) {
if (!strcmp (conf_key, CALENDAR_SOURCES))
source_selection_key = SELECTED_CALENDARS;
@@ -311,15 +310,11 @@
modify_esource (const char* conf_key, HulaAccountInfo *old_account_info, const char* new_group_name, CamelURL *new_url)
{
ESourceList *list;
- ESourceGroup *group;
- ESource *source;
GSList *groups;
- GSList *sources;
char *old_relative_uri;
CamelURL *url;
gboolean found_group;
GConfClient* client;
- char *new_relative_uri;
url = camel_url_new (old_account_info->source_url, NULL);
if (!url->host || strlen (url->host) ==0)
@@ -334,19 +329,23 @@
for ( ; groups != NULL && !found_group; groups = g_slist_next (groups)) {
- group = E_SOURCE_GROUP (groups->data);
+ ESourceGroup *group = E_SOURCE_GROUP (groups->data);
if (strcmp (e_source_group_peek_name (group), old_account_info->name) == 0 &&
strcmp (e_source_group_peek_base_uri (group), HULA_CALDAV_URI_PREFIX) == 0) {
-
- sources = e_source_group_peek_sources (group);
+ GSList *sources = e_source_group_peek_sources (group);
for ( ; sources != NULL; sources = g_slist_next (sources)) {
-
- source = E_SOURCE (sources->data);
-
- if (strcmp (e_source_peek_relative_uri (source), old_relative_uri) == 0) {
-
+ ESource *source = E_SOURCE (sources->data);
+ const gchar *source_relative_uri;
+
+ g_assert (source != NULL);
+ source_relative_uri = e_source_peek_relative_uri (source);
+ if (source_relative_uri == NULL)
+ continue;
+ if (strcmp (source_relative_uri, old_relative_uri) == 0) {
+ gchar *new_relative_uri;
+
new_relative_uri = g_strdup_printf ("%s@%s:%d/dav/%s/calendar/Personal", new_url->user, new_url->host, new_url->port, new_url->user);
e_source_group_set_name (group, new_group_name);
e_source_set_relative_uri (source, new_relative_uri);
--- evolution-2.10.1/addressbook/gui/component/addressbook-component.c.check-uri-before-strcmp 2007-04-09 09:07:42.000000000 -0400
+++ evolution-2.10.1/addressbook/gui/component/addressbook-component.c 2007-05-14 13:34:13.000000000 -0400
@@ -118,7 +118,13 @@
GSList *s;
for (s = sources; s; s = s->next) {
ESource *source = E_SOURCE (s->data);
- if (!strcmp (PERSONAL_RELATIVE_URI, e_source_peek_relative_uri (source))) {
+ const gchar *relative_uri;
+
+ g_assert (source != NULL);
+ relative_uri = e_source_peek_relative_uri (source);
+ if (relative_uri == NULL)
+ continue;
+ if (!strcmp (PERSONAL_RELATIVE_URI, relative_uri)) {
personal_source = source;
break;
}
--- evolution-2.10.1/addressbook/gui/component/addressbook-migrate.c.check-uri-before-strcmp 2007-05-14 13:21:57.000000000 -0400
+++ evolution-2.10.1/addressbook/gui/component/addressbook-migrate.c 2007-05-14 13:34:13.000000000 -0400
@@ -472,7 +472,13 @@
GSList *s;
for (s = sources; s; s = s->next) {
ESource *source = E_SOURCE (s->data);
- if (!strcmp (PERSONAL_RELATIVE_URI, e_source_peek_relative_uri (source))) {
+ const gchar *relative_uri;
+
+ g_assert (source != NULL);
+ relative_uri = e_source_peek_relative_uri (source);
+ if (relative_uri == NULL)
+ continue;
+ if (!strcmp (PERSONAL_RELATIVE_URI, relative_uri)) {
*personal_source = g_object_ref (source);
break;
}
--- evolution-2.10.1/calendar/gui/calendar-component.c.check-uri-before-strcmp 2007-05-14 13:21:57.000000000 -0400
+++ evolution-2.10.1/calendar/gui/calendar-component.c 2007-05-14 13:34:13.000000000 -0400
@@ -210,7 +210,13 @@
GSList *s;
for (s = sources; s; s = s->next) {
ESource *source = E_SOURCE (s->data);
- if (!strcmp (PERSONAL_RELATIVE_URI, e_source_peek_relative_uri (source))) {
+ const gchar *relative_uri;
+
+ g_assert (source != NULL);
+ relative_uri = e_source_peek_relative_uri (source);
+ if (relative_uri == NULL)
+ continue;
+ if (!strcmp (PERSONAL_RELATIVE_URI, relative_uri)) {
personal_source = source;
break;
}
--- evolution-2.10.1/calendar/gui/tasks-component.c.check-uri-before-strcmp 2007-05-14 13:21:57.000000000 -0400
+++ evolution-2.10.1/calendar/gui/tasks-component.c 2007-05-14 13:34:13.000000000 -0400
@@ -170,7 +170,13 @@
GSList *s;
for (s = sources; s; s = s->next) {
ESource *source = E_SOURCE (s->data);
- if (!strcmp (PERSONAL_RELATIVE_URI, e_source_peek_relative_uri (source))) {
+ const gchar *relative_uri;
+
+ g_assert (source != NULL);
+ relative_uri = e_source_peek_relative_uri (source);
+ if (relative_uri == NULL)
+ continue;
+ if (!strcmp (PERSONAL_RELATIVE_URI, relative_uri)) {
personal_source = source;
break;
}
--- evolution-2.10.1/calendar/gui/memos-component.c.check-uri-before-strcmp 2007-05-14 13:21:57.000000000 -0400
+++ evolution-2.10.1/calendar/gui/memos-component.c 2007-05-14 13:34:13.000000000 -0400
@@ -174,7 +174,13 @@
GSList *s;
for (s = sources; s; s = s->next) {
ESource *source = E_SOURCE (s->data);
- if (!strcmp (PERSONAL_RELATIVE_URI, e_source_peek_relative_uri (source))) {
+ const gchar *relative_uri;
+
+ g_assert (source != NULL);
+ relative_uri = e_source_peek_relative_uri (source);
+ if (relative_uri == NULL)
+ continue;
+ if (!strcmp (PERSONAL_RELATIVE_URI, relative_uri)) {
personal_source = source;
break;
}
--- evolution-2.10.1/calendar/gui/migration.c.check-uri-before-strcmp 2007-05-14 13:21:57.000000000 -0400
+++ evolution-2.10.1/calendar/gui/migration.c 2007-05-14 13:34:13.000000000 -0400
@@ -466,7 +466,13 @@
GSList *s;
for (s = sources; s; s = s->next) {
ESource *source = E_SOURCE (s->data);
- if (!strcmp (PERSONAL_RELATIVE_URI, e_source_peek_relative_uri (source))) {
+ const gchar *relative_uri;
+
+ g_assert (source != NULL);
+ relative_uri = e_source_peek_relative_uri (source);
+ if (relative_uri == NULL)
+ continue;
+ if (!strcmp (PERSONAL_RELATIVE_URI, relative_uri)) {
*personal_source = g_object_ref (source);
break;
}
@@ -562,7 +568,13 @@
GSList *s;
for (s = sources; s; s = s->next) {
ESource *source = E_SOURCE (s->data);
- if (!strcmp (PERSONAL_RELATIVE_URI, e_source_peek_relative_uri (source))) {
+ const gchar *relative_uri;
+
+ g_assert (source != NULL);
+ relative_uri = e_source_peek_relative_uri (source);
+ if (relative_uri == NULL)
+ continue;
+ if (!strcmp (PERSONAL_RELATIVE_URI, relative_uri)) {
*personal_source = g_object_ref (source);
break;
}
@@ -1070,7 +1082,13 @@
GSList *s;
for (s = sources; s; s = s->next) {
ESource *source = E_SOURCE (s->data);
- if (!strcmp (PERSONAL_RELATIVE_URI, e_source_peek_relative_uri (source))) {
+ const gchar *relative_uri;
+
+ g_assert (source != NULL);
+ relative_uri = e_source_peek_relative_uri (source);
+ if (relative_uri == NULL)
+ continue;
+ if (!strcmp (PERSONAL_RELATIVE_URI, relative_uri)) {
*personal_source = g_object_ref (source);
break;
}

View file

@ -0,0 +1,11 @@
--- evolution-2.10.1/po/en_CA.po.en_CA-attribution-format 2007-04-27 22:58:06.000000000 -0400
+++ evolution-2.10.1/po/en_CA.po 2007-04-27 22:58:36.000000000 -0400
@@ -10992,7 +10992,7 @@
"On ${AbbrevWeekdayName}, ${Year}-${Month}-${Day} at ${24Hour}:${Minute} "
"${TimeZone}, ${Sender} wrote:"
msgstr ""
-"On ${AbbrevWeekdayName}, ${Year}-${Day}-${Month} at ${24Hour}:${Minute} "
+"On ${AbbrevWeekdayName}, ${Year}-${Month}-${Day} at ${24Hour}:${Minute} "
"${TimeZone}, ${Sender} wrote:"
#: ../mail/em-filter-editor.c:155

View file

@ -0,0 +1,14 @@
--- evolution-2.10.1/calendar/gui/GNOME_Evolution_Calendar.server.in.in.fix-uri-handling 2007-04-09 09:10:33.000000000 -0400
+++ evolution-2.10.1/calendar/gui/GNOME_Evolution_Calendar.server.in.in 2007-05-14 14:11:59.000000000 -0400
@@ -50,9 +50,11 @@
<oaf_attribute name="evolution:button_icon" type="string" value="stock_calendar"/>
<oaf_attribute name="evolution:button_sort_order" type="string" value="-8"/>
+<!-- FIXME: See bug 407104: Write a interface to launch without shell.
<oaf_attribute name="evolution:uri_schemas" type="stringv">
<item value="calendar"/>
</oaf_attribute>
+-->
</oaf_server>

View file

@ -0,0 +1,222 @@
--- evolution-2.10.2/mail/em-utils.c.saving-attachments 2007-05-29 00:07:55.000000000 -0400
+++ evolution-2.10.2/mail/em-utils.c 2007-05-29 01:26:46.000000000 -0400
@@ -354,28 +354,23 @@
/* Saving messages... */
-static void
-emu_save_part_response(GtkWidget *filesel, int response, CamelMimePart *part)
+static const gchar *
+emu_save_get_filename_for_part (CamelMimePart *part)
{
- char *uri;
-
- if (response == GTK_RESPONSE_OK) {
- uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (filesel));
-
- if (!e_file_can_save((GtkWindow *)filesel, uri)) {
- g_free(uri);
- return;
- }
+ const gchar *filename;
- e_file_update_save_path(gtk_file_chooser_get_current_folder_uri(
- GTK_FILE_CHOOSER(filesel)), TRUE);
- /* FIXME: popup error if it fails? */
- mail_save_part(part, uri, NULL, NULL, FALSE);
- g_free(uri);
+ filename = camel_mime_part_get_filename (part);
+ if (filename == NULL) {
+ if (CAMEL_IS_MIME_MESSAGE (part)) {
+ filename = camel_mime_message_get_subject (
+ CAMEL_MIME_MESSAGE (part));
+ if (filename == NULL)
+ filename = _("message");
+ } else
+ filename = _("attachment");
}
- gtk_widget_destroy((GtkWidget *)filesel);
- camel_object_unref(part);
+ return filename;
}
/**
@@ -387,85 +382,79 @@
* Saves a mime part to disk (prompting the user for filename).
**/
void
-em_utils_save_part(GtkWidget *parent, const char *prompt, CamelMimePart *part)
+em_utils_save_part (GtkWidget *parent, const char *prompt, CamelMimePart *part)
{
- const char *name;
- GtkWidget *filesel;
+ GtkWidget *file_chooser;
+ const gchar *filename;
+ gchar *uri = NULL;
+
+ filename = emu_save_get_filename_for_part (part);
- name = camel_mime_part_get_filename(part);
- if (name == NULL) {
- if (CAMEL_IS_MIME_MESSAGE(part)) {
- name = camel_mime_message_get_subject((CamelMimeMessage *)part);
- if (name == NULL)
- name = _("message");
- } else {
- name = _("attachment");
- }
- }
+ file_chooser = e_file_get_save_filesel (
+ parent, prompt, filename, GTK_FILE_CHOOSER_ACTION_SAVE);
- filesel = e_file_get_save_filesel(parent, prompt, name, GTK_FILE_CHOOSER_ACTION_SAVE);
- camel_object_ref(part);
- g_signal_connect (filesel, "response", G_CALLBACK (emu_save_part_response), part);
- gtk_widget_show (filesel);
-}
+ if (gtk_dialog_run (GTK_DIALOG (file_chooser)) != GTK_RESPONSE_OK)
+ goto exit;
-static void
-emu_save_parts_response (GtkWidget *filesel, int response, GSList *parts)
-{
- GSList *selected;
- char *uri = NULL;
- if (response == GTK_RESPONSE_OK) {
- uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER (filesel));
- e_file_update_save_path(uri, FALSE);
-
- for ( selected = parts; selected != NULL; selected = selected->next) {
- const char *file_name;
- char *safe_name = NULL;
- char *file_path;
- CamelMimePart *part = selected->data;
-
- file_name = camel_mime_part_get_filename(part);
- if (file_name == NULL) {
- if (CAMEL_IS_MIME_MESSAGE(part)) {
- file_name = camel_mime_message_get_subject((CamelMimeMessage *)part);
- if (file_name == NULL)
- file_name = _("message");
- } else {
- file_name = _("attachment");
- }
- } else {
- safe_name = g_strdup(file_name);
- em_filename_make_safe(safe_name);
- file_name = safe_name;
- }
-
- file_path = g_build_filename (uri, file_name, NULL);
- if (!e_file_check_local(file_path) || !g_file_test(file_path, (G_FILE_TEST_EXISTS)) || e_error_run(NULL, E_ERROR_ASK_FILE_EXISTS_OVERWRITE, file_name, NULL) == GTK_RESPONSE_OK)
- mail_save_part(part, file_path, NULL, NULL, FALSE);
- else
- g_warning ("Could not save %s. File already exists", file_path);
+ uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (file_chooser));
+
+ /* XXX Would be nice to mention _why_ we can't save. */
+ if (!e_file_can_save (GTK_WINDOW (file_chooser), uri)) {
+ g_warning ("Unable to save %s", uri);
+ goto exit;
+ }
+
+ e_file_update_save_path (
+ gtk_file_chooser_get_current_folder_uri (
+ GTK_FILE_CHOOSER (file_chooser)), TRUE);
- g_free (file_path);
- g_free (safe_name);
- }
+ mail_save_part (part, uri, NULL, NULL, FALSE);
- g_free (uri);
- }
-
- g_slist_free (parts);
- gtk_widget_destroy((GtkWidget *)filesel);
+exit:
+ gtk_widget_destroy (file_chooser);
+ g_free (uri);
}
-
+
void
-em_utils_save_parts (GtkWidget *parent, const char *prompt, GSList * parts)
+em_utils_save_parts (GtkWidget *parent, const gchar *prompt, GSList *parts)
{
- GtkWidget *filesel;
+ GtkWidget *file_chooser;
+ gchar *path_uri;
+ GSList *iter;
- filesel = e_file_get_save_filesel (parent, prompt, NULL, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
- g_signal_connect (filesel, "response", G_CALLBACK (emu_save_parts_response), parts);
- gtk_widget_show (filesel);
-}
+ file_chooser = e_file_get_save_filesel (
+ parent, prompt, NULL, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
+
+ if (gtk_dialog_run (GTK_DIALOG (file_chooser)) != GTK_RESPONSE_OK)
+ goto exit;
+
+ path_uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (file_chooser));
+
+ e_file_update_save_path (path_uri, FALSE);
+
+ for (iter = parts; iter != NULL; iter = iter->next) {
+ CamelMimePart *part = iter->data;
+ const gchar *filename;
+ gchar *uri;
+
+ filename = emu_save_get_filename_for_part (part);
+ uri = g_build_path ("/", path_uri, filename, NULL);
+
+ /* XXX Would be nice to mention _why_ we can't save. */
+ if (e_file_can_save (GTK_WINDOW (file_chooser), uri))
+ mail_save_part (part, uri, NULL, NULL, FALSE);
+ else
+ g_warning ("Unable to save %s", uri);
+
+ g_free (uri);
+ }
+
+ g_free (path_uri);
+
+exit:
+ gtk_widget_destroy (file_chooser);
+}
/**
* em_utils_save_part_to_file:
--- evolution-2.10.2/mail/em-format-html-display.c.saving-attachments 2007-05-29 00:07:55.000000000 -0400
+++ evolution-2.10.2/mail/em-format-html-display.c 2007-05-29 00:07:55.000000000 -0400
@@ -2099,12 +2099,24 @@
}
static void
-attachments_save_all_clicked(GtkWidget *w, EMFormatHTMLDisplay *efhd)
+attachments_save_all_clicked (GtkWidget *widget, EMFormatHTMLDisplay *efhd)
{
GSList *attachment_parts;
+ guint n_attachment_parts;
- attachment_parts = e_attachment_bar_get_parts(E_ATTACHMENT_BAR(efhd->priv->attachment_bar));
- em_utils_save_parts(w, _("Select folder to save all attachments..."), attachment_parts);
+ attachment_parts = e_attachment_bar_get_parts (
+ E_ATTACHMENT_BAR (efhd->priv->attachment_bar));
+ n_attachment_parts = g_slist_length (attachment_parts);
+ g_return_if_fail (n_attachment_parts > 0);
+
+ if (n_attachment_parts == 1)
+ em_utils_save_part (
+ widget, _("Save attachment as"),
+ attachment_parts->data);
+ else
+ em_utils_save_parts (
+ widget, _("Select folder to save all attachments"),
+ attachment_parts);
}
static void

View file

@ -0,0 +1,85 @@
--- evolution-2.10.1/mail/mail-send-recv.c.send-recv-dialog 2007-05-15 14:26:24.000000000 -0400
+++ evolution-2.10.1/mail/mail-send-recv.c 2007-05-15 14:30:51.000000000 -0400
@@ -312,21 +312,6 @@
return SEND_INVALID;
}
-gboolean
-dialog_map (GtkWidget *window, GdkEvent *event, GtkWidget *table)
-{
- int h, w;
-
- w = table->allocation.width + 30 /* Spacing around the table */;
- h = table->allocation.height + 60 /* Cancell All button and Seperator and outer spacing */;
-
- if (w > 750)
- w = 750;
- if (h > 400)
- h = 400;
- gtk_widget_set_usize (window, w, h);
-}
-
static struct _send_data *
build_dialog (EAccountList *accounts, CamelFolder *outbox, const char *destination)
{
@@ -385,7 +370,7 @@
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
- GTK_POLICY_AUTOMATIC,
+ GTK_POLICY_NEVER,
GTK_POLICY_AUTOMATIC);
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window), table);
@@ -443,6 +428,7 @@
recv_icon = e_icon_factory_get_image ("stock_mail-receive", E_ICON_SIZE_LARGE_TOOLBAR);
pretty_url = format_url (source->url, account->name);
label = (GtkLabel *)gtk_label_new (NULL);
+ gtk_label_set_ellipsize (label, PANGO_ELLIPSIZE_END);
gtk_label_set_markup (label, pretty_url);
g_free (pretty_url);
@@ -457,10 +443,10 @@
gtk_misc_set_alignment (GTK_MISC (label), 0, .5);
gtk_misc_set_alignment (GTK_MISC (status_label), 0, .5);
- gtk_table_attach (table, (GtkWidget *)recv_icon, 0, 1, row, row+2, GTK_EXPAND | GTK_FILL, 0, 0, 0);
+ gtk_table_attach (table, (GtkWidget *)recv_icon, 0, 1, row, row+2, 0, 0, 0, 0);
gtk_table_attach (table, (GtkWidget *)label, 1, 2, row, row+1, GTK_EXPAND | GTK_FILL, 0, 0, 0);
- gtk_table_attach (table, (GtkWidget *)bar, 2, 3, row, row+2, GTK_EXPAND | GTK_FILL, 0, 0, 0);
- gtk_table_attach (table, (GtkWidget *)stop, 3, 4, row, row+2, GTK_EXPAND | GTK_FILL, 0, 0, 0);
+ gtk_table_attach (table, (GtkWidget *)bar, 2, 3, row, row+2, 0, 0, 0, 0);
+ gtk_table_attach (table, (GtkWidget *)stop, 3, 4, row, row+2, 0, 0, 0, 0);
gtk_table_attach (table, (GtkWidget *)status_label, 1, 2, row+1, row+2, GTK_EXPAND | GTK_FILL, 0, 0, 0);
info->bar = bar;
@@ -496,6 +482,7 @@
send_icon = e_icon_factory_get_image ("stock_mail-send", E_ICON_SIZE_LARGE_TOOLBAR);
pretty_url = format_url (destination, NULL);
label = (GtkLabel *)gtk_label_new (NULL);
+ gtk_label_set_ellipsize (label, PANGO_ELLIPSIZE_END);
gtk_label_set_markup (label, pretty_url);
g_free (pretty_url);
@@ -508,10 +495,10 @@
gtk_misc_set_alignment (GTK_MISC (label), 0, .5);
gtk_misc_set_alignment (GTK_MISC (status_label), 0, .5);
- gtk_table_attach (table, GTK_WIDGET (send_icon), 0, 1, row, row+2, GTK_EXPAND | GTK_FILL, 0, 0, 0);
+ gtk_table_attach (table, GTK_WIDGET (send_icon), 0, 1, row, row+2, 0, 0, 0, 0);
gtk_table_attach (table, GTK_WIDGET (label), 1, 2, row, row+1, GTK_EXPAND | GTK_FILL, 0, 0, 0);
- gtk_table_attach (table, GTK_WIDGET (bar), 2, 3, row, row+2, GTK_EXPAND | GTK_FILL, 0, 0, 0);
- gtk_table_attach (table, GTK_WIDGET (stop), 3, 4, row, row+2, GTK_EXPAND | GTK_FILL, 0, 0, 0);
+ gtk_table_attach (table, GTK_WIDGET (bar), 2, 3, row, row+2, 0, 0, 0, 0);
+ gtk_table_attach (table, GTK_WIDGET (stop), 3, 4, row, row+2, 0, 0, 0, 0);
gtk_table_attach (table, GTK_WIDGET (status_label), 1, 2, row+1, row+2, GTK_EXPAND | GTK_FILL, 0, 0, 0);
info->bar = bar;
@@ -526,7 +513,6 @@
gtk_widget_show (GTK_WIDGET (gd));
g_signal_connect (gd, "response", G_CALLBACK (dialog_response), data);
- g_signal_connect (gd, "map-event", G_CALLBACK (dialog_map), table);
g_object_weak_ref ((GObject *) gd, (GWeakNotify) dialog_destroy_cb, data);

View file

@ -0,0 +1,48 @@
diff -up evolution-2.10.3/mail/em-format.c.CVE-2008-0072 evolution-2.10.3/mail/em-format.c
--- evolution-2.10.3/mail/em-format.c.CVE-2008-0072 2008-03-04 15:44:32.000000000 -0500
+++ evolution-2.10.3/mail/em-format.c 2008-03-04 15:45:23.000000000 -0500
@@ -1155,7 +1155,7 @@ emf_application_xpkcs7mime(EMFormat *emf
opart = camel_mime_part_new();
valid = camel_cipher_decrypt(context, part, opart, ex);
if (valid == NULL) {
- em_format_format_error(emf, stream, ex->desc?ex->desc:_("Could not parse S/MIME message: Unknown error"));
+ em_format_format_error(emf, stream, "%s", ex->desc?ex->desc:_("Could not parse S/MIME message: Unknown error"));
em_format_part_as(emf, stream, part, NULL);
} else {
if (emfc == NULL)
@@ -1305,7 +1305,7 @@ emf_multipart_encrypted(EMFormat *emf, C
if (valid == NULL) {
em_format_format_error(emf, stream, ex->desc?("Could not parse S/MIME message"):_("Could not parse S/MIME message: Unknown error"));
if (ex->desc)
- em_format_format_error(emf, stream, ex->desc);
+ em_format_format_error(emf, stream, "%s", ex->desc);
em_format_part_as(emf, stream, part, "multipart/mixed");
} else {
if (emfc == NULL)
@@ -1470,7 +1470,7 @@ emf_multipart_signed(EMFormat *emf, Came
if (valid == NULL) {
em_format_format_error(emf, stream, ex->desc?_("Error verifying signature"):_("Unknown error verifying signature"));
if (ex->desc)
- em_format_format_error(emf, stream, ex->desc);
+ em_format_format_error(emf, stream, "%s", ex->desc);
em_format_part_as(emf, stream, part, "multipart/mixed");
} else {
if (emfc == NULL)
@@ -1536,7 +1536,7 @@ emf_inlinepgp_signed(EMFormat *emf, Came
if (!valid) {
em_format_format_error(emf, stream, ex->desc?_("Error verifying signature"):_("Unknown error verifying signature"));
if (ex->desc)
- em_format_format_error(emf, stream, ex->desc);
+ em_format_format_error(emf, stream, "%s", ex->desc);
em_format_format_source(emf, stream, ipart);
/* I think this will loop: em_format_part_as(emf, stream, part, "text/plain"); */
camel_exception_free(ex);
@@ -1607,7 +1607,7 @@ emf_inlinepgp_encrypted(EMFormat *emf, C
if (!valid) {
em_format_format_error(emf, stream, ex->desc?("Could not parse S/MIME message"):_("Could not parse S/MIME message: Unknown error"));
if (ex->desc)
- em_format_format_error(emf, stream, ex->desc);
+ em_format_format_error(emf, stream, "%s", ex->desc);
em_format_format_source(emf, stream, ipart);
/* I think this will loop: em_format_part_as(emf, stream, part, "text/plain"); */
camel_exception_free(ex);

View file

@ -0,0 +1,310 @@
diff -up evolution-2.10.3/calendar/gui/e-itip-control.c.CVE-2008-1108 evolution-2.10.3/calendar/gui/e-itip-control.c
--- evolution-2.10.3/calendar/gui/e-itip-control.c.CVE-2008-1108 2008-06-04 05:55:50.000000000 -0400
+++ evolution-2.10.3/calendar/gui/e-itip-control.c 2008-06-04 06:00:35.000000000 -0400
@@ -650,7 +650,7 @@ find_attendee (icalcomponent *ical_comp,
static void
write_label_piece (EItipControl *itip, ECalComponentDateTime *dt,
- char *buffer, int size,
+ GString *buffer,
const char *stext, const char *etext,
gboolean just_date)
{
@@ -675,13 +675,13 @@ write_label_piece (EItipControl *itip, E
tmp_tm.tm_hour = tmp_tm.tm_min = tmp_tm.tm_sec = 0;
if (stext != NULL)
- strcat (buffer, stext);
+ g_string_append (buffer, stext);
e_time_format_date_and_time (&tmp_tm,
calendar_config_get_24_hour_format (),
FALSE, FALSE,
time_buf, sizeof (time_buf));
- strcat (buffer, time_buf);
+ g_string_append (buffer, time_buf);
if (!dt->value->is_utc && dt->tzid) {
zone = icalcomponent_get_timezone (priv->top_level, dt->tzid);
@@ -693,21 +693,21 @@ write_label_piece (EItipControl *itip, E
UTF-8. But it probably is not translated. */
display_name = icaltimezone_get_display_name (zone);
if (display_name && *display_name) {
- strcat (buffer, " <font size=-1>[");
+ g_string_append_len (buffer, " <font size=-1>[", 16);
/* We check if it is one of our builtin timezone names,
in which case we call gettext to translate it. */
if (icaltimezone_get_builtin_timezone (display_name)) {
- strcat (buffer, _(display_name));
+ g_string_append_printf (buffer, "%s", _(display_name));
} else {
- strcat (buffer, display_name);
+ g_string_append_printf (buffer, "%s", display_name);
}
- strcat (buffer, "]</font>");
+ g_string_append_len (buffer, "]</font>", 8);
}
}
if (etext != NULL)
- strcat (buffer, etext);
+ g_string_append (buffer, etext);
}
static const char *
@@ -744,19 +744,17 @@ get_dayname (struct icalrecurrencetype *
static void
write_recurrence_piece (EItipControl *itip, ECalComponent *comp,
- char *buffer, int size)
+ GString *buffer)
{
GSList *rrules;
struct icalrecurrencetype *r;
- int len, i;
+ int i;
- strcpy (buffer, "<b>Recurring:</b> ");
- len = strlen (buffer);
- buffer += len;
- size -= len;
+ g_string_append_len (buffer, "<b>Recurring:</b> ", 18);
if (!e_cal_component_has_simple_recurrence (comp)) {
- strcpy (buffer, _("Yes. (Complex Recurrence)"));
+ g_string_append_printf (
+ buffer, "%s", _("Yes. (Complex Recurrence)"));
return;
}
@@ -772,7 +770,10 @@ write_recurrence_piece (EItipControl *it
Every %d day/days" */
/* For Translators : 'Every day' is event Recurring every day */
/* For Translators : 'Every %d days' is event Recurring every %d days. %d is a digit */
- sprintf (buffer, ngettext("Every day", "Every %d days", r->interval), r->interval);
+ g_string_append_printf (
+ buffer, ngettext ("Every day",
+ "Every %d days", r->interval),
+ r->interval);
break;
case ICAL_WEEKLY_RECURRENCE:
@@ -782,29 +783,36 @@ write_recurrence_piece (EItipControl *it
Every %d week/weeks" */
/* For Translators : 'Every week' is event Recurring every week */
/* For Translators : 'Every %d weeks' is event Recurring every %d weeks. %d is a digit */
- sprintf (buffer, ngettext("Every week", "Every %d weeks", r->interval), r->interval);
+ g_string_append_printf (
+ buffer, ngettext ("Every week",
+ "Every %d weeks", r->interval),
+ r->interval);
} else {
/* For Translators : 'Every week on' is event Recurring every week on (dayname) and (dayname) and (dayname) */
/* For Translators : 'Every %d weeks on' is event Recurring: every %d weeks on (dayname) and (dayname). %d is a digit */
- sprintf (buffer, ngettext("Every week on ", "Every %d weeks on ", r->interval), r->interval);
+ g_string_append_printf (
+ buffer, ngettext ("Every week on ",
+ "Every %d weeks on ", r->interval),
+ r->interval);
for (i = 1; i < 8 && r->by_day[i] != ICAL_RECURRENCE_ARRAY_MAX; i++) {
if (i > 1)
- strcat (buffer, ", ");
- strcat (buffer, get_dayname (r, i - 1));
+ g_string_append_len (buffer, ", ", 2);
+ g_string_append (buffer, get_dayname (r, i - 1));
}
if (i > 1)
/* For Translators : 'and' is part of the sentence 'event recurring every week on (dayname) and (dayname)' */
- strcat (buffer, _(" and "));
- strcat (buffer, get_dayname (r, i - 1));
+ g_string_append_printf (buffer, "%s", _(" and "));
+ g_string_append (buffer, get_dayname (r, i - 1));
}
break;
case ICAL_MONTHLY_RECURRENCE:
if (r->by_month_day[0] != ICAL_RECURRENCE_ARRAY_MAX) {
/* For Translators : 'The %s day of' is part of the sentence 'event recurring on the (nth) day of every month.' */
- sprintf (buffer, _("The %s day of "),
- nth (r->by_month_day[0]));
+ g_string_append_printf (
+ buffer, _("The %s day of "),
+ nth (r->by_month_day[0]));
} else {
int pos;
@@ -818,20 +826,21 @@ write_recurrence_piece (EItipControl *it
/* For Translators : 'The %s %s of' is part of the sentence 'event recurring on the (nth) (dayname) of every month.'
eg,third monday of every month */
- sprintf (buffer, _("The %s %s of "),
- nth (pos), get_dayname (r, 0));
+ g_string_append_printf (
+ buffer, _("The %s %s of "),
+ nth (pos), get_dayname (r, 0));
}
- len = strlen (buffer);
- buffer += len;
- size -= len;
/* For Translators: In this can also be translated as "With the period of %d
month/months", where %d is a number. The entire sentence is of the form "Recurring:
Every %d month/months" */
/* For Translators : 'every month' is part of the sentence 'event recurring on the (nth) day of every month.' */
/* For Translators : 'every %d months' is part of the sentence 'event recurring on the (nth) day of every %d months.'
%d is a digit */
- sprintf (buffer, ngettext("every month","every %d months", r->interval), r->interval);
+ g_string_append_printf (
+ buffer, ngettext ("every month",
+ "every %d months", r->interval),
+ r->interval);
break;
case ICAL_YEARLY_RECURRENCE:
@@ -840,20 +849,22 @@ write_recurrence_piece (EItipControl *it
Every %d year/years" */
/* For Translators : 'Every year' is event Recurring every year */
/* For Translators : 'Every %d years' is event Recurring every %d years. %d is a digit */
- sprintf (buffer, ngettext("Every year", "Every %d years", r->interval), r->interval);
+ g_string_append_printf (
+ buffer, ngettext ("Every year",
+ "Every %d years", r->interval),
+ r->interval);
break;
default:
g_assert_not_reached ();
}
- len = strlen (buffer);
- buffer += len;
- size -= len;
if (r->count) {
/* For Translators:'a total of %d time' is part of the sentence of the form 'event recurring every day,a total of % time.' %d is a digit*/
/* For Translators:'a total of %d times' is part of the sentence of the form 'event recurring every day,a total of % times.' %d is a digit*/
- sprintf (buffer, ngettext("a total of %d time", " a total of %d times", r->count), r->count);
+ g_string_append_printf (
+ buffer, ngettext ("a total of %d time",
+ " a total of %d times", r->count), r->count);
} else if (!icaltime_is_null_time (r->until)) {
ECalComponentDateTime dt;
@@ -861,12 +872,12 @@ write_recurrence_piece (EItipControl *it
dt.value = &r->until;
dt.tzid = icaltimezone_get_tzid ((icaltimezone *)r->until.zone);
- write_label_piece (itip, &dt, buffer, size,
+ write_label_piece (itip, &dt, buffer,
/* For Translators : ', ending on' is part of the sentence of the form 'event recurring every day, ending on (date).'*/
_(", ending on "), NULL, TRUE);
}
- strcat (buffer, "<br>");
+ g_string_append_len (buffer, "<br>", 4);
}
static void
@@ -874,47 +885,51 @@ set_date_label (EItipControl *itip, GtkH
ECalComponent *comp)
{
ECalComponentDateTime datetime;
- static char buffer[1024];
+ GString *buffer;
gchar *str;
gboolean wrote = FALSE, task_completed = FALSE;
ECalComponentVType type;
+ buffer = g_string_sized_new (1024);
type = e_cal_component_get_vtype (comp);
- buffer[0] = '\0';
e_cal_component_get_dtstart (comp, &datetime);
if (datetime.value) {
/* For Translators : 'starts' is starts:date implying a task starts on what date */
str = g_strdup_printf ("<b>%s:</b>", _("Starts"));
- write_label_piece (itip, &datetime, buffer, 1024,
- str,
- "<br>", FALSE);
- gtk_html_write (html, html_stream, buffer, strlen(buffer));
+ write_label_piece (itip, &datetime, buffer, str, "<br>", FALSE);
+ gtk_html_write (html, html_stream, buffer->str, buffer->len);
wrote = TRUE;
g_free (str);
}
e_cal_component_free_datetime (&datetime);
- buffer[0] = '\0';
+ /* Reset the buffer. */
+ g_string_truncate (buffer, 0);
+
e_cal_component_get_dtend (comp, &datetime);
if (datetime.value){
/* For Translators : 'ends' is ends:date implying a task ends on what date */
str = g_strdup_printf ("<b>%s:</b>", _("Ends"));
- write_label_piece (itip, &datetime, buffer, 1024, str, "<br>", FALSE);
- gtk_html_write (html, html_stream, buffer, strlen (buffer));
+ write_label_piece (itip, &datetime, buffer, str, "<br>", FALSE);
+ gtk_html_write (html, html_stream, buffer->str, buffer->len);
wrote = TRUE;
g_free (str);
}
e_cal_component_free_datetime (&datetime);
- buffer[0] = '\0';
+ /* Reset the buffer. */
+ g_string_truncate (buffer, 0);
+
if (e_cal_component_has_recurrences (comp)) {
- write_recurrence_piece (itip, comp, buffer, 1024);
- gtk_html_write (html, html_stream, buffer, strlen (buffer));
+ write_recurrence_piece (itip, comp, buffer);
+ gtk_html_write (html, html_stream, buffer->str, buffer->len);
wrote = TRUE;
}
- buffer[0] = '\0';
+ /* Reset the buffer. */
+ g_string_truncate (buffer, 0);
+
datetime.tzid = NULL;
e_cal_component_get_completed (comp, &datetime.value);
if (type == E_CAL_COMPONENT_TODO && datetime.value) {
@@ -922,20 +937,22 @@ set_date_label (EItipControl *itip, GtkH
timezone. */
str = g_strdup_printf ("<b>%s:</b>", _("Completed"));
datetime.value->is_utc = TRUE;
- write_label_piece (itip, &datetime, buffer, 1024, str, "<br>", FALSE);
- gtk_html_write (html, html_stream, buffer, strlen (buffer));
+ write_label_piece (itip, &datetime, buffer, str, "<br>", FALSE);
+ gtk_html_write (html, html_stream, buffer->str, buffer->len);
wrote = TRUE;
task_completed = TRUE;
g_free (str);
}
e_cal_component_free_datetime (&datetime);
- buffer[0] = '\0';
+ /* Reset the buffer. */
+ g_string_truncate (buffer, 0);
+
e_cal_component_get_due (comp, &datetime);
if (type == E_CAL_COMPONENT_TODO && !task_completed && datetime.value) {
str = g_strdup_printf ("<b>%s:</b>", _("Due"));
- write_label_piece (itip, &datetime, buffer, 1024, str, "<br>", FALSE);
- gtk_html_write (html, html_stream, buffer, strlen (buffer));
+ write_label_piece (itip, &datetime, buffer, str, "<br>", FALSE);
+ gtk_html_write (html, html_stream, buffer->str, buffer->len);
wrote = TRUE;
g_free (str);
}
@@ -944,6 +961,8 @@ set_date_label (EItipControl *itip, GtkH
if (wrote)
gtk_html_stream_printf (html_stream, "<br>");
+
+ g_string_free (buffer, TRUE);
}
static void

View file

@ -0,0 +1,61 @@
diff -up evolution-2.10.3/calendar/gui/itip-utils.c.CVE-2008-1109 evolution-2.10.3/calendar/gui/itip-utils.c
--- evolution-2.10.3/calendar/gui/itip-utils.c.CVE-2008-1109 2008-06-04 05:55:50.000000000 -0400
+++ evolution-2.10.3/calendar/gui/itip-utils.c 2008-06-04 05:58:49.000000000 -0400
@@ -158,50 +158,16 @@ get_attendee (GSList *attendees, char *a
static char *
-html_new_lines_for (char *string)
+html_new_lines_for (const char *string)
{
- char *html_string = (char *) malloc (sizeof (char)* (3500));
- int length = strlen (string);
- int index = 0;
- char *index_ptr = string;
- char *temp = string;
+ gchar **lines;
+ gchar *joined;
- /*Find the first occurence*/
- index_ptr = strstr ((const char *)temp, "\n");
+ lines = g_strsplit_set (string, "\n", -1);
+ joined = g_strjoinv ("<br>", lines);
+ g_strfreev (lines);
- /*Doesn't occur*/
- if (index_ptr == NULL) {
- strcpy (html_string, (const char *)string);
- html_string[length] = '\0';
- return html_string;
- }
-
- /*Split into chunks inserting <br> for \n */
- do{
- while (temp != index_ptr){
- html_string[index++] = *temp;
- temp++;
- }
- temp++;
-
- html_string[index++] = '<';
- html_string[index++] = 'b';
- html_string[index++] = 'r';
- html_string[index++] = '>';
-
- index_ptr = strstr ((const char *)temp, "\n");
-
- } while (index_ptr);
-
- /*Don't leave out the last chunk*/
- while (*temp != '\0'){
- html_string[index++] = *temp;
- temp++;
- }
-
- html_string[index] = '\0';
-
- return html_string;
+ return joined;
}
char *

View file

@ -0,0 +1,50 @@
--- trunk/widgets/table/e-tree-table-adapter.c 2007/08/07 09:35:42 33964
+++ trunk/widgets/table/e-tree-table-adapter.c 2007/08/24 09:10:55 34090
@@ -80,6 +80,8 @@
int node_removed_id;
int node_request_collapse_id;
int sort_info_changed_id;
+
+ guint resort_idle_id;
};
static void etta_sort_info_changed (ETableSortInfo *sort_info, ETreeTableAdapter *etta);
@@ -498,6 +500,11 @@
{
ETreeTableAdapter *etta = E_TREE_TABLE_ADAPTER (object);
+ if (etta->priv->resort_idle_id) {
+ g_source_remove (etta->priv->resort_idle_id);
+ etta->priv->resort_idle_id = 0;
+ }
+
if (etta->priv->root) {
kill_gnode(etta->priv->root, etta);
etta->priv->root = NULL;
@@ -728,6 +735,8 @@
etta->priv->node_inserted_id = 0;
etta->priv->node_removed_id = 0;
etta->priv->node_request_collapse_id = 0;
+
+ etta->priv->resort_idle_id = 0;
}
static void
@@ -746,6 +755,7 @@
resort_model (ETreeTableAdapter *etta)
{
etta_sort_info_changed (NULL, etta);
+ etta->priv->resort_idle_id = 0;
return FALSE;
}
@@ -758,7 +768,8 @@
/* FIXME: Really it shouldnt be required. But a lot of thread
* which were supposed to be present in the list is way below
*/
- g_idle_add (resort_model, etta);
+ if (!etta->priv->resort_idle_id)
+ etta->priv->resort_idle_id = g_idle_add ((GSourceFunc) resort_model, etta);
}
static void

View file

@ -0,0 +1,15 @@
diff -up evolution-2.10.3/mail/mail-session.c.server-message-double-free evolution-2.10.3/mail/mail-session.c
--- evolution-2.10.3/mail/mail-session.c.server-message-double-free 2008-03-25 10:01:13.000000000 -0400
+++ evolution-2.10.3/mail/mail-session.c 2008-03-25 10:01:25.000000000 -0400
@@ -389,10 +389,8 @@ alert_user(CamelSession *session, CamelS
mail_msg_unref (m);
}
- if (m->ismain) {
- user_message_free (m);
+ if (m->ismain)
mail_msg_unref (m);
- }
return result;
}

View file

@ -0,0 +1,12 @@
diff -up evolution-2.10.3/calendar/conduits/todo/todo-conduit.c.todo-conduit evolution-2.10.3/calendar/conduits/todo/todo-conduit.c
--- evolution-2.10.3/calendar/conduits/todo/todo-conduit.c.todo-conduit 2007-11-03 15:21:56.000000000 -0400
+++ evolution-2.10.3/calendar/conduits/todo/todo-conduit.c 2007-11-03 15:22:10.000000000 -0400
@@ -992,7 +992,7 @@ comp_from_remote_record (GnomePilotCondu
e_cal_component_set_status (comp, ICAL_STATUS_NEEDSACTION);
}
- if (!is_empty_time (todo.due)) {
+ if (!todo.indefinite && !is_empty_time (todo.due)) {
due = tm_to_icaltimetype (&todo.due, TRUE);
dt.value = &due;
e_cal_component_set_due (comp, &dt);

View file

@ -0,0 +1,347 @@
--- evolution-2.10.3/a11y/Makefile.am.version-checks 2007-04-09 09:10:38.000000000 -0400
+++ evolution-2.10.3/a11y/Makefile.am 2007-07-27 10:45:41.000000000 -0400
@@ -31,4 +31,4 @@ libevolution_a11y_la_LIBADD = \
e-text/libgal-a11y-etext.la \
e-table/libgal-a11y-etable.la \
$(top_builddir)/e-util/libeutil.la \
- $(EXTRA_GNOME_LIBS)
+ $(GNOME_PLATFORM_LIBS)
--- evolution-2.10.3/a11y/e-text/Makefile.am.version-checks 2007-04-09 09:10:36.000000000 -0400
+++ evolution-2.10.3/a11y/e-text/Makefile.am 2007-07-27 10:45:41.000000000 -0400
@@ -1,7 +1,7 @@
INCLUDES = \
-I$(top_srcdir) \
-I$(top_srcdir)/widgets \
- $(EXTRA_GNOME_CFLAGS) \
+ $(GNOME_PLATFORM_CFLAGS) \
-DG_LOG_DOMAIN=\"e-text\"
noinst_LTLIBRARIES = libgal-a11y-etext.la
--- evolution-2.10.3/a11y/e-table/Makefile.am.version-checks 2007-04-09 09:10:38.000000000 -0400
+++ evolution-2.10.3/a11y/e-table/Makefile.am 2007-07-27 10:45:41.000000000 -0400
@@ -1,7 +1,7 @@
INCLUDES = \
-I$(top_srcdir) \
-I$(top_srcdir)/widgets \
- $(EXTRA_GNOME_CFLAGS) \
+ $(GNOME_PLATFORM_CFLAGS) \
-DG_LOG_DOMAIN=\"e-table\"
noinst_LTLIBRARIES = libgal-a11y-etable.la
--- evolution-2.10.3/configure.in.version-checks 2007-07-27 10:45:06.000000000 -0400
+++ evolution-2.10.3/configure.in 2007-07-27 10:55:54.000000000 -0400
@@ -4,6 +4,34 @@ AC_PREREQ(2.52)
AC_INIT(evolution, 2.10.3, http://bugzilla.gnome.org/enter_bug.cgi?product=Evolution)
AC_CONFIG_SRCDIR(README)
+# Some requirements have versioned package names
+# XXX In the spirit of getting rid of versioned
+# files, can we drop these suffixes?
+EDS_PACKAGE=1.2
+GTKHTML_PACKAGE=3.14
+
+# Required Packages
+m4_define([gtk_minimum_version], [2.10.0])
+m4_define([eds_minimum_version], [1.9.4])
+m4_define([gnome_icon_theme_minimum_version], [1.2.0])
+m4_define([gnome_vfs_minimum_version], [2.4.0])
+m4_define([libbonoboui_minimum_version], [2.4.2])
+m4_define([libgtkhtml_minimum_version], [3.14.0])
+m4_define([gconf_minimum_version], [2.0.0]) # XXX Just a Guess
+m4_define([libglade_minimum_version], [2.0.0]) # XXX Just a Guess
+m4_define([libgnomecanvas_minimum_version], [2.0.0]) # XXX Just a Guess
+m4_define([libgnomeui_minimum_version], [2.0.0]) # XXX Just a Guess
+m4_define([libxml_minimum_version], [2.0.0]) # XXX Just a Guess
+
+# Optional Packages
+#
+# FIXME Minimum versions for dbus-glib-1 and libnm_glib ?
+# FIXME Move audio-inline plugin from gstreamer-0.8 to 0.10 ?
+#
+m4_define([dbus_minimum_version], [1.0.0])
+m4_define([hal_minimum_version], [0.5.4])
+m4_define([libnotify_minimum_version], [0.3.0])
+m4_define([gnome_pilot_minimum_version], [2.0.0]) # XXX Just a Guess
# GNOME Documentation
GNOME_DOC_INIT
@@ -127,6 +155,27 @@ AM_CONDITIONAL(OS_WIN32, [test $os_win32
AC_SUBST(NO_UNDEFINED)
AC_SUBST(SOEXT)
+# Check for base dependencies early.
+PKG_CHECK_MODULES(GNOME_PLATFORM,
+ [gtk+-2.0 >= gtk_minimum_version
+ gconf-2.0 >= gconf_minimum_version
+ gnome-vfs-2.0 >= gnome_vfs_minimum_version
+ libbonoboui-2.0 >= libbonoboui_minimum_version
+ libglade-2.0 >= libglade_minimum_version
+ libgnomecanvas-2.0 >= libgnomecanvas_minimum_version
+ libgnomeui-2.0 >= libgnomeui_minimum_version
+ libxml-2.0 >= libxml_minimum_version])
+AC_SUBST(GNOME_PLATFORM_CFLAGS)
+AC_SUBST(GNOME_PLATFORM_LIBS)
+
+PKG_CHECK_MODULES(EVOLUTION_DATA_SERVER,
+ [libebook-$EDS_PACKAGE >= eds_minimum_version
+ libecal-$EDS_PACKAGE >= eds_minimum_version
+ libedataserver-$EDS_PACKAGE >= eds_minimum_version
+ libedataserverui-$EDS_PACKAGE >= eds_minimum_version
+ libegroupwise-$EDS_PACKAGE >= eds_minimum_version
+ libexchange-storage-$EDS_PACKAGE >= eds_minimum_version])
+
dnl ******************************
dnl iconv checking
dnl ******************************
@@ -403,7 +452,7 @@ AC_CHECK_FUNCS(statfs)
dnl **************************************************
dnl * Gnome Icon Theme
dnl **************************************************
-PKG_CHECK_MODULES(GIT, gnome-icon-theme >= 1.2.0)
+PKG_CHECK_MODULES(GIT, gnome-icon-theme >= gnome_icon_theme_minimum_version)
dnl **************************************************
dnl * Accessibility support
@@ -563,7 +612,8 @@ AC_CHECK_FUNCS(regexec,,[AC_CHECK_LIB(re
[AC_MSG_ERROR([No regex library found])])])
AC_SUBST(REGEX_LIBS)
-PKG_CHECK_MODULES(GTKHTML, libgtkhtml-3.14)
+# XXX Drop the version from the package name?
+PKG_CHECK_MODULES(GTKHTML, libgtkhtml-3.14 >= libgtkhtml_minimum_version)
AC_SUBST(GTKHTML_CFLAGS)
AC_SUBST(GTKHTML_LIBS)
GTKHTML_DATADIR=`$PKG_CONFIG --variable gtkhtml_datadir libgtkhtml-3.14`
@@ -580,7 +630,7 @@ dnl ******************************
AC_ARG_ENABLE(pilot-conduits,
[ --enable-pilot-conduits=[no/yes] Enable support for building pilot conduits.],,enable_pilot_conduits=no)
if test "x$enable_pilot_conduits" = "xyes"; then
- PKG_CHECK_MODULES(GNOME_PILOT, gnome-pilot-2.0)
+ PKG_CHECK_MODULES(GNOME_PILOT, gnome-pilot-2.0 >= gnome_pilot_minimum_version)
CFLAGS_save="$CFLAGS"
CFLAGS="$CFLAGS $GNOME_PILOT_CFLAGS"
@@ -1178,27 +1228,12 @@ fi
dnl --- Required version numbers
-GTKHTML_REQUIRED=3.14.0
-GTKHTML_PACKAGE=3.14
-EDS_REQUIRED=1.9.4
-EDS_PACKAGE=1.2
-BONOBOUI_REQUIRED=2.4.2
-GNOME_VFS_REQUIRED=2.4
-
-AC_SUBST(GTKHTML_REQUIRED)
-AC_SUBST(GTKHTML_PACKAGE)
-AC_SUBST(EDS_REQUIRED)
-AC_SUBST(EDS_PACKAGE)
+BONOBOUI_REQUIRED=libbonoboui_minimum_version
AC_SUBST(BONOBOUI_REQUIRED)
-AC_SUBST(GNOME_VFS_REQUIRED)
dnl --- Flags to get all the GNOME stuff
-FULL_GNOME_DEPS="glib-2.0 libbonoboui-2.0 >= $BONOBOUI_REQUIRED gnome-vfs-2.0 >= $GNOME_VFS_REQUIRED libgnomeui-2.0 libglade-2.0 libgnomecanvas-2.0 libxml-2.0 gconf-2.0"
-
-EVO_SET_COMPILE_FLAGS(GNOME_FULL, $FULL_GNOME_DEPS)
-AC_SUBST(GNOME_FULL_CFLAGS)
-AC_SUBST(GNOME_FULL_LIBS)
+FULL_GNOME_DEPS="libbonoboui-2.0 gnome-vfs-2.0 libgnomeui-2.0 libglade-2.0"
CPPFLAGS_save="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS `$PKG_CONFIG --cflags-only-I libgnomeui-2.0`"
@@ -1206,11 +1241,7 @@ AC_CHECK_HEADERS(libgnomeui/gnome-icon-l
AC_CHECK_HEADERS(libgnomeui/gnome-thumbnail.h)
CPPFLAGS="$CPPFLAGS_save"
-PKG_CHECK_MODULES(EXTRA_GNOME, libgnomeprint-2.2 >= 2.7.0 libgnomeprintui-2.2 >= 2.2.1 $FULL_GNOME_DEPS)
-AC_SUBST(EXTRA_GNOME_LIBS)
-AC_SUBST(EXTRA_GNOME_CFLAGS)
-
-PKG_CHECK_MODULES(HAL, hal >= 0.5.4, HAVE_HAL="yes", HAVE_HAL="no")
+PKG_CHECK_MODULES(HAL, hal >= hal_minimum_version, HAVE_HAL="yes", HAVE_HAL="no")
if test "x$HAVE_HAL" = "xyes"; then
AC_DEFINE(HAVE_HAL, 1, [hal available])
HAL_REQUIREMENT="hal"
@@ -1226,7 +1257,7 @@ EVO_SET_COMPILE_FLAGS(CAMEL, camel-provi
AC_SUBST(CAMEL_CFLAGS)
AC_SUBST(CAMEL_LIBS)
-EVO_SET_COMPILE_FLAGS(CAMEL_GROUPWISE, camel-provider-$EDS_PACKAGE libedataserver-$EDS_PACKAGE >= $EDS_REQUIRED libegroupwise-$EDS_PACKAGE >= $EDS_REQUIRED)
+EVO_SET_COMPILE_FLAGS(CAMEL_GROUPWISE, camel-provider-$EDS_PACKAGE libedataserver-$EDS_PACKAGE libegroupwise-$EDS_PACKAGE)
AC_SUBST(CAMEL_GROUPWISE_CFLAGS)
AC_SUBST(CAMEL_GROUPWISE_LIBS)
@@ -1239,33 +1270,33 @@ else
fi
fi
-EVO_SET_COMPILE_FLAGS(CERT_UI, libedataserverui-$EDS_PACKAGE >= $EDS_REQUIRED libglade-2.0 gtk+-2.0 glib-2.0 gobject-2.0 gthread-2.0,
+EVO_SET_COMPILE_FLAGS(CERT_UI, libedataserverui-$EDS_PACKAGE libglade-2.0 gthread-2.0,
$MANUAL_NSS_CFLAGS $MOZILLA_NSS_CFLAGS,
$MOZILLA_L_DIR $MANUAL_NSS_LIBS $MOZILLA_NSS_LIBS)
AC_SUBST(CERT_UI_CFLAGS)
AC_SUBST(CERT_UI_LIBS)
-EVO_SET_COMPILE_FLAGS(E_NAME, libgnomeui-2.0 libbonoboui-2.0 >= $BONOBOUI_REQUIRED)
+EVO_SET_COMPILE_FLAGS(E_NAME, libgnomeui-2.0 libbonoboui-2.0)
AC_SUBST(E_NAME_CFLAGS)
AC_SUBST(E_NAME_LIBS)
-EVO_SET_COMPILE_FLAGS(E_UTIL, gthread-2.0 gconf-2.0 libxml-2.0 gtk+-unix-print-2.0 libbonoboui-2.0 >= $BONOBOUI_REQUIRED libglade-2.0 libgnomeui-2.0 libgnome-2.0 libgnomecanvas-2.0 libgnomeprintui-2.2 libedataserver-$EDS_PACKAGE >= $EDS_REQUIRED libedataserverui-$EDS_PACKAGE >= $EDS_REQUIRED $mozilla_nspr $mono_package, $THREADS_CFLAGS $MANUAL_NSPR_CFLAGS, $THREADS_LIBS $MANUAL_NSPR_LIBS)
+EVO_SET_COMPILE_FLAGS(E_UTIL, libbonoboui-2.0 libglade-2.0 libgnomeui-2.0 libedataserver-$EDS_PACKAGE libedataserverui-$EDS_PACKAGE $mozilla_nspr $mono_package, $THREADS_CFLAGS $MANUAL_NSPR_CFLAGS, $THREADS_LIBS $MANUAL_NSPR_LIBS)
AC_SUBST(E_UTIL_CFLAGS)
AC_SUBST(E_UTIL_LIBS)
-EVO_SET_COMPILE_FLAGS(TZDIALOG, libecal-$EDS_PACKAGE >= $EDS_REQUIRED, $GNOME_FULL_CFLAGS, $GNOME_FULL_LIBS)
+EVO_SET_COMPILE_FLAGS(TZDIALOG, libecal-$EDS_PACKAGE, $GNOME_PLATFORM_CFLAGS, $GNOME_PLATFORM_LIBS)
AC_SUBST(TZDIALOG_CFLAGS)
AC_SUBST(TZDIALOG_LIBS)
-EVO_SET_COMPILE_FLAGS(E_WIDGETS, glib-2.0 libbonoboui-2.0 >= $BONOBOUI_REQUIRED gnome-vfs-2.0 gnome-vfs-module-2.0 libgnomeui-2.0 libglade-2.0 libgnomecanvas-2.0 libxml-2.0 gconf-2.0 libedataserverui-$EDS_PACKAGE libedataserver-$EDS_PACKAGE >= $EDS_REQUIRED)
+EVO_SET_COMPILE_FLAGS(E_WIDGETS, libbonoboui-2.0 gnome-vfs-module-2.0 libgnomeui-2.0 libglade-2.0 libedataserverui-$EDS_PACKAGE libedataserver-$EDS_PACKAGE)
AC_SUBST(E_WIDGETS_CFLAGS)
AC_SUBST(E_WIDGETS_LIBS)
-EVO_SET_COMPILE_FLAGS(IMPORTERS, libedataserverui-$EDS_PACKAGE >= $EDS_REQUIRED camel-provider-$EDS_PACKAGE camel-$EDS_PACKAGE gconf-2.0 libglade-2.0 libbonoboui-2.0 >= $BONOBOUI_REQUIRED libgnomeui-2.0 libebook-$EDS_PACKAGE >= $EDS_REQUIRED)
+EVO_SET_COMPILE_FLAGS(IMPORTERS, libedataserverui-$EDS_PACKAGE camel-provider-$EDS_PACKAGE camel-$EDS_PACKAGE libglade-2.0 libbonoboui-2.0 libgnomeui-2.0 libebook-$EDS_PACKAGE)
AC_SUBST(IMPORTERS_CFLAGS)
AC_SUBST(IMPORTERS_LIBS)
-EVO_SET_COMPILE_FLAGS(LIBFILTER, libgnome-2.0 libgnomeui-2.0 libglade-2.0 libxml-2.0 gconf-2.0 libedataserver-$EDS_PACKAGE >= $EDS_REQUIRED)
+EVO_SET_COMPILE_FLAGS(LIBFILTER, libgnomeui-2.0 libglade-2.0 libedataserver-$EDS_PACKAGE >= $EDS_REQUIRED)
AC_SUBST(LIBFILTER_CFLAGS)
AC_SUBST(LIBFILTER_LIBS)
@@ -1292,14 +1323,14 @@ AM_CONDITIONAL(NM_SUPPORT_GLIB, test x$N
AM_CONDITIONAL(NM_SUPPORT, test x$NM_SUPPORT = xyes)
-EVO_SET_COMPILE_FLAGS(SHELL, libgnome-2.0 libgnomeui-2.0 libbonoboui-2.0 >= $BONOBOUI_REQUIRED libglade-2.0 gnome-vfs-2.0 libgtkhtml-$GTKHTML_PACKAGE >= $GTKHTML_REQUIRED $NM_SUPPORT_PACKAGES)
+EVO_SET_COMPILE_FLAGS(SHELL, libgnomeui-2.0 libbonoboui-2.0 libglade-2.0 gnome-vfs-2.0 libgtkhtml-$GTKHTML_PACKAGE $NM_SUPPORT_PACKAGES)
AC_SUBST(SHELL_CFLAGS)
AC_SUBST(SHELL_LIBS)
dnl --- evolution-addressbook flags
-EVOLUTION_ADDRESSBOOK_DEPS="gconf-2.0 libbonoboui-2.0 >= $BONOBOUI_REQUIRED libglade-2.0 libgnomeui-2.0 libgnome-2.0 libgnomecanvas-2.0 gtk+-unix-print-2.0 gnome-vfs-2.0 libgnomeprintui-2.2 libgtkhtml-$GTKHTML_PACKAGE >= $GTKHTML_REQUIRED libebook-$EDS_PACKAGE >= $EDS_REQUIRED libedataserverui-$EDS_PACKAGE >= $EDS_REQUIRED camel-$EDS_PACKAGE"
+EVOLUTION_ADDRESSBOOK_DEPS="libbonoboui-2.0 libglade-2.0 libgnomeui-2.0 gnome-vfs-2.0 libgtkhtml-$GTKHTML_PACKAGE libebook-$EDS_PACKAGE libedataserverui-$EDS_PACKAGE camel-$EDS_PACKAGE"
EVO_SET_COMPILE_FLAGS(EVOLUTION_ADDRESSBOOK, $EVOLUTION_ADDRESSBOOK_DEPS)
AC_SUBST(EVOLUTION_ADDRESSBOOK_CFLAGS)
@@ -1313,7 +1344,7 @@ fi
LIBNOTIFY_CFLAGS=
LIBNOTIFY_LIBS=
-PKG_CHECK_MODULES(LIBNOTIFY, libnotify >= 0.3.0, HAVE_LIBNOTIFY="yes", HAVE_LIBNOTIFY="no")
+PKG_CHECK_MODULES(LIBNOTIFY, libnotify >= libnotify_minimum_version, HAVE_LIBNOTIFY="yes", HAVE_LIBNOTIFY="no")
if test "x$HAVE_LIBNOTIFY" = "xyes"; then
AC_DEFINE(HAVE_LIBNOTIFY, 1, [libnotify available])
libnotify="libnotify"
@@ -1337,7 +1368,7 @@ EVO_SET_COMPILE_FLAGS(LIBSOUP, $LIBSOUP
AC_SUBST(LIBSOUP_CFLAGS)
AC_SUBST(LIBSOUP_LIBS)
-EVO_SET_COMPILE_FLAGS(EVOLUTION_CALENDAR, libgnome-2.0 libgnomeui-2.0 libbonoboui-2.0 libglade-2.0 gnome-vfs-2.0 gtk+-unix-print-2.0 libgnomeprint-2.2 libgnomeprintui-2.2 gnome-vfs-module-2.0 libgtkhtml-$GTKHTML_PACKAGE >= $GTKHTML_REQUIRED libebook-$EDS_PACKAGE >= $EDS_REQUIRED libecal-$EDS_PACKAGE >= $EDS_REQUIRED libedataserverui-$EDS_PACKAGE >= $EDS_REQUIRED $HAL_REQUIREMENT $libnotify)
+EVO_SET_COMPILE_FLAGS(EVOLUTION_CALENDAR, libgnomeui-2.0 libbonoboui-2.0 libglade-2.0 gnome-vfs-module-2.0 libgtkhtml-$GTKHTML_PACKAGE libebook-$EDS_PACKAGE libecal-$EDS_PACKAGE libedataserverui-$EDS_PACKAGE $HAL_REQUIREMENT $libnotify)
AC_SUBST(EVOLUTION_CALENDAR_CFLAGS)
AC_SUBST(EVOLUTION_CALENDAR_LIBS)
@@ -1349,7 +1380,7 @@ fi
dnl --- evolution-mail flags
-EVO_SET_COMPILE_FLAGS(EVOLUTION_MAIL, camel-provider-$EDS_PACKAGE libgnome-2.0 libgnomeui-2.0 libbonoboui-2.0 >= $BONOBOUI_REQUIRED libglade-2.0 gnome-vfs-module-2.0 libgnomeprint-2.2 libgnomeprintui-2.2 libgtkhtml-$GTKHTML_PACKAGE >= $GTKHTML_REQUIRED libxml-2.0 bonobo-activation-2.0 gthread-2.0 gconf-2.0 gtk+-unix-print-2.0 $mozilla_nss libebook-$EDS_PACKAGE >= $EDS_REQUIRED libedataserverui-$EDS_PACKAGE >= $EDS_REQUIRED)
+EVO_SET_COMPILE_FLAGS(EVOLUTION_MAIL, camel-provider-$EDS_PACKAGE libgnomeui-2.0 libbonoboui-2.0 libglade-2.0 gnome-vfs-module-2.0 libgtkhtml-$GTKHTML_PACKAGE bonobo-activation-2.0 $mozilla_nss libebook-$EDS_PACKAGE libedataserverui-$EDS_PACKAGE)
AC_SUBST(EVOLUTION_MAIL_CFLAGS)
AC_SUBST(EVOLUTION_MAIL_LIBS)
@@ -1372,7 +1403,7 @@ fi
dnl --- evolution-test flags
-EVO_SET_COMPILE_FLAGS(EVOLUTION_TEST, libgnome-2.0 libgnomeui-2.0 libbonobo-2.0 libbonoboui-2.0 >= $BONOBOUI_REQUIRED)
+EVO_SET_COMPILE_FLAGS(EVOLUTION_TEST, libgnomeui-2.0 libbonoboui-2.0)
AC_SUBST(EVOLUTION_TEST_CFLAGS)
AC_SUBST(EVOLUTION_TEST_LIBS)
@@ -1591,7 +1622,7 @@ if echo ${plugins_enabled} | grep "excha
dnl **************************************************
dnl * Exchange Operations plugin
dnl **************************************************
- EVO_SET_COMPILE_FLAGS(CAMEL_EXCHANGE, libbonoboui-2.0 >= $BONOBOUI_REQUIRED libglade-2.0 libgnomeprint-2.2 libgnomeprintui-2.2 gthread-2.0 gconf-2.0 camel-provider-$EDS_PACKAGE libebook-$EDS_PACKAGE >= $EDS_REQUIRED libedataserverui-$EDS_PACKAGE libexchange-storage-$EDS_PACKAGE >= $EDS_REQUIRED libecal-$EDS_PACKAGE)
+ EVO_SET_COMPILE_FLAGS(CAMEL_EXCHANGE, libbonoboui-2.0 libglade-2.0 gconf-2.0 camel-provider-$EDS_PACKAGE libebook-$EDS_PACKAGE libedataserverui-$EDS_PACKAGE libexchange-storage-$EDS_PACKAGE libecal-$EDS_PACKAGE)
AC_SUBST(CAMEL_EXCHANGE_CFLAGS)
AC_SUBST(CAMEL_EXCHANGE_LIBS)
else
--- evolution-2.10.3/widgets/misc/Makefile.am.version-checks 2007-04-09 09:10:24.000000000 -0400
+++ evolution-2.10.3/widgets/misc/Makefile.am 2007-07-27 10:45:41.000000000 -0400
@@ -10,7 +10,7 @@ INCLUDES = \
-DEVOLUTION_GLADEDIR=\""$(gladedir)"\" \
-DG_LOG_DOMAIN=__FILE__ \
$(EVOLUTION_MAIL_CFLAGS) \
- $(EXTRA_GNOME_CFLAGS) \
+ $(GNOME_PLATFORM_CFLAGS) \
$(ICONV_CFLAGS)
@@ -137,7 +137,7 @@ libemiscwidgets_la_LIBADD = $(top_buildd
$(top_builddir)/a11y/widgets/libevolution-widgets-a11y.la \
$(top_builddir)/a11y/libevolution-a11y.la \
$(CAMEL_LIBS) \
- $(EXTRA_GNOME_LIBS) \
+ $(GNOME_PLATFORM_LIBS) \
$(ICONV_LIBS)
libefilterbar_la_SOURCES = \
--- evolution-2.10.3/widgets/table/Makefile.am.version-checks 2007-04-09 09:10:21.000000000 -0400
+++ evolution-2.10.3/widgets/table/Makefile.am 2007-07-27 10:45:41.000000000 -0400
@@ -13,7 +13,7 @@ INCLUDES = \
-I$(top_srcdir) \
-I$(top_srcdir)/widgets \
$(E_WIDGETS_CFLAGS) \
- $(EXTRA_GNOME_CFLAGS) \
+ $(GNOME_PLATFORM_CFLAGS) \
-DEVOLUTION_GLADEDIR=\"$(gladedir)\" \
-DG_LOG_DOMAIN=\"e-table\"
@@ -155,7 +155,7 @@ libetable_la_LIBADD = \
$(top_builddir)/e-util/libeutil.la \
$(top_builddir)/a11y/libevolution-a11y.la \
$(E_WIDGETS_LIBS) \
- $(EXTRA_GNOME_LIBS)
+ $(GNOME_PLATFORM_LIBS)
icons = \
add-col.xpm \
--- evolution-2.10.3/widgets/text/Makefile.am.version-checks 2007-04-09 09:10:17.000000000 -0400
+++ evolution-2.10.3/widgets/text/Makefile.am 2007-07-27 10:45:41.000000000 -0400
@@ -5,7 +5,7 @@ endif
INCLUDES = \
-I$(top_srcdir) \
-I$(top_srcdir)/widgets \
- $(EXTRA_GNOME_CFLAGS) \
+ $(GNOME_PLATFORM_CFLAGS) \
-DG_LOG_DOMAIN=\"e-text\"
@@ -44,5 +44,5 @@ libetext_la_LIBADD = \
$(top_builddir)/e-util/libeutil.la \
$(top_builddir)/a11y/libevolution-a11y.la \
$(top_builddir)/widgets/table/libetable.la \
- $(EXTRA_GNOME_LIBS) \
+ $(GNOME_PLATFORM_LIBS) \
$(REGEX_LIBS)
--- evolution-2.10.3/tools/Makefile.am.version-checks 2007-04-09 09:07:44.000000000 -0400
+++ evolution-2.10.3/tools/Makefile.am 2007-07-27 10:45:41.000000000 -0400
@@ -16,7 +16,7 @@ INCLUDES = \
-DSYSCONFDIR=\""$(sysconfdir)"\" \
-DDATADIR=\""$(datadir)"\" \
-DLIBDIR=\""$(libdir)"\" \
- $(GNOME_FULL_CFLAGS)
+ $(GNOME_PLATFORM_CFLAGS)
EXTRA_DIST = verify-evolution-install.sh

View file

@ -0,0 +1,11 @@
--- evolution-2.4.1/shell/apps_evolution_shell.schemas.in.in.hide-switcher-buttons-by-default 2005-10-26 16:21:15.000000000 -0400
+++ evolution-2.4.1/shell/apps_evolution_shell.schemas.in.in 2005-10-26 16:21:22.000000000 -0400
@@ -99,7 +99,7 @@
<applyto>/apps/evolution/shell/view_defaults/buttons_visible</applyto>
<owner>evolution</owner>
<type>bool</type>
- <default>TRUE</default>
+ <default>FALSE</default>
<locale name="C">
<short>Window buttons are visible</short>
<long>Whether the window buttons should be visible.</long>

View file

@ -0,0 +1,88 @@
--- evolution-2.9.5/addressbook/conduit/Makefile.am.fix-conduit-dir 2007-01-03 10:32:47.000000000 -0500
+++ evolution-2.9.5/addressbook/conduit/Makefile.am 2007-01-21 22:05:23.000000000 -0500
@@ -28,7 +28,7 @@
-e 's^\@BASE_VERSION\@^$(BASE_VERSION)^g' \
$< > $@
-conduitdir = $(datadir)/gnome-pilot/conduits/
+conduitdir = $(libdir)/gnome-pilot/conduits/
conduit_DATA = e-address-$(BASE_VERSION).conduit
BUILT_SOURCES = $(conduit_DATA)
--- evolution-2.9.5/addressbook/conduit/Makefile.in.fix-conduit-dir 2007-01-21 22:05:44.000000000 -0500
+++ evolution-2.9.5/addressbook/conduit/Makefile.in 2007-01-21 22:06:04.000000000 -0500
@@ -459,7 +459,7 @@
$(top_builddir)/widgets/misc/libemiscwidgets.la \
$(EVOLUTION_ADDRESSBOOK_CONDUIT_LIBS)
-conduitdir = $(datadir)/gnome-pilot/conduits/
+conduitdir = $(libdir)/gnome-pilot/conduits/
conduit_DATA = e-address-$(BASE_VERSION).conduit
BUILT_SOURCES = $(conduit_DATA)
CLEANFILES = $(BUILT_SOURCES)
--- evolution-2.9.5/calendar/conduits/todo/Makefile.am.fix-conduit-dir 2007-01-03 10:34:54.000000000 -0500
+++ evolution-2.9.5/calendar/conduits/todo/Makefile.am 2007-01-21 22:05:23.000000000 -0500
@@ -24,7 +24,7 @@
-e 's^\@BASE_VERSION\@^$(BASE_VERSION)^g' \
$< > $@
-conduitdir = $(datadir)/gnome-pilot/conduits/
+conduitdir = $(libdir)/gnome-pilot/conduits/
conduit_DATA = e-todo-$(BASE_VERSION).conduit
BUILT_SOURCES = $(conduit_DATA)
--- evolution-2.9.5/calendar/conduits/todo/Makefile.in.fix-conduit-dir 2007-01-21 22:06:31.000000000 -0500
+++ evolution-2.9.5/calendar/conduits/todo/Makefile.in 2007-01-21 22:06:39.000000000 -0500
@@ -454,7 +454,7 @@
$(top_builddir)/widgets/misc/libemiscwidgets.la \
$(EVOLUTION_CALENDAR_CONDUIT_LIBS)
-conduitdir = $(datadir)/gnome-pilot/conduits/
+conduitdir = $(libdir)/gnome-pilot/conduits/
conduit_DATA = e-todo-$(BASE_VERSION).conduit
BUILT_SOURCES = $(conduit_DATA)
CLEANFILES = $(BUILT_SOURCES)
--- evolution-2.9.5/calendar/conduits/memo/Makefile.am.fix-conduit-dir 2007-01-03 10:34:54.000000000 -0500
+++ evolution-2.9.5/calendar/conduits/memo/Makefile.am 2007-01-21 22:05:23.000000000 -0500
@@ -24,7 +24,7 @@
-e 's^\@BASE_VERSION\@^$(BASE_VERSION)^g' \
$< > $@
-conduitdir = $(datadir)/gnome-pilot/conduits/
+conduitdir = $(libdir)/gnome-pilot/conduits/
conduit_DATA = e-memo-$(BASE_VERSION).conduit
BUILT_SOURCES = $(conduit_DATA)
--- evolution-2.9.5/calendar/conduits/memo/Makefile.in.fix-conduit-dir 2007-01-21 22:06:46.000000000 -0500
+++ evolution-2.9.5/calendar/conduits/memo/Makefile.in 2007-01-21 22:06:54.000000000 -0500
@@ -454,7 +454,7 @@
$(top_builddir)/widgets/misc/libemiscwidgets.la \
$(EVOLUTION_CALENDAR_CONDUIT_LIBS)
-conduitdir = $(datadir)/gnome-pilot/conduits/
+conduitdir = $(libdir)/gnome-pilot/conduits/
conduit_DATA = e-memo-$(BASE_VERSION).conduit
BUILT_SOURCES = $(conduit_DATA)
CLEANFILES = $(BUILT_SOURCES)
--- evolution-2.9.5/calendar/conduits/calendar/Makefile.am.fix-conduit-dir 2007-01-03 10:34:54.000000000 -0500
+++ evolution-2.9.5/calendar/conduits/calendar/Makefile.am 2007-01-21 22:05:23.000000000 -0500
@@ -24,7 +24,7 @@
-e 's^\@BASE_VERSION\@^$(BASE_VERSION)^g' \
$< > $@
-conduitdir = $(datadir)/gnome-pilot/conduits/
+conduitdir = $(libdir)/gnome-pilot/conduits/
conduit_DATA = e-calendar-$(BASE_VERSION).conduit
BUILT_SOURCES = $(conduit_DATA)
--- evolution-2.9.5/calendar/conduits/calendar/Makefile.in.fix-conduit-dir 2007-01-21 22:06:15.000000000 -0500
+++ evolution-2.9.5/calendar/conduits/calendar/Makefile.in 2007-01-21 22:06:23.000000000 -0500
@@ -456,7 +456,7 @@
$(top_builddir)/widgets/misc/libemiscwidgets.la \
$(EVOLUTION_CALENDAR_CONDUIT_LIBS)
-conduitdir = $(datadir)/gnome-pilot/conduits/
+conduitdir = $(libdir)/gnome-pilot/conduits/
conduit_DATA = e-calendar-$(BASE_VERSION).conduit
BUILT_SOURCES = $(conduit_DATA)
CLEANFILES = $(BUILT_SOURCES)

View file

@ -0,0 +1,515 @@
--- evolution-2.5.4/addressbook/conduit/address-conduit.c.fix-conduits 2005-12-08 03:15:02.000000000 -0500
+++ evolution-2.5.4/addressbook/conduit/address-conduit.c 2006-01-10 19:33:44.000000000 -0500
@@ -462,14 +462,19 @@
{
static char buff[ 4096 ];
struct Address addr;
+ pi_buffer_t piBuf;
if (remote == NULL) {
sprintf (buff, "[NULL]");
return buff;
}
+ piBuf.data = remote->record;
+ piBuf.allocated = remote->length;
+ piBuf.used = remote->length;
+
memset (&addr, 0, sizeof (struct Address));
- unpack_Address (&addr, remote->record, remote->length);
+ unpack_Address (&addr, &piBuf, address_v1);
g_snprintf (buff, 4096, "['%s' '%s' '%s']",
addr.entry[entryLastname] ?
@@ -791,7 +796,8 @@
EAddrConduitContext *ctxt)
{
GnomePilotRecord p;
- static char record[0xffff];
+ static unsigned char record[0xffff];
+ pi_buffer_t piBuf;
g_assert (local->addr != NULL );
@@ -803,9 +809,17 @@
p.archived = local->local.archived;
p.secret = local->local.secret;
+ memset (&piBuf, 0, sizeof (piBuf));
+ memset (record, 0, sizeof (record));
+ pack_Address (local->addr, &piBuf, address_v1);
+
/* Generate pilot record structure */
+ if (piBuf.used > 0)
+ memcpy (record, piBuf.data, piBuf.used);
p.record = record;
- p.length = pack_Address (local->addr, p.record, 0xffff);
+ p.length = piBuf.used;
+ if (piBuf.data)
+ free (piBuf.data);
return p;
}
@@ -834,16 +848,16 @@
*/
if (local->local.ID != 0) {
struct Address addr;
- char record[0xffff];
+ pi_buffer_t *buffer = pi_buffer_new (0xffff);
int cat = 0;
if (dlp_ReadRecordById (ctxt->dbi->pilot_socket,
ctxt->dbi->db_handle,
- local->local.ID, &record,
- NULL, NULL, NULL, &cat) > 0) {
+ local->local.ID, buffer,
+ NULL, NULL, &cat) > 0) {
local->local.category = cat;
memset (&addr, 0, sizeof (struct Address));
- unpack_Address (&addr, record, 0xffff);
+ unpack_Address (&addr, buffer, address_v1);
for (i = 0; i < 5; i++) {
if (addr.entry[entryPhone1 + i])
local->addr->entry[entryPhone1 + i] =
@@ -858,6 +872,8 @@
}
free_Address (&addr);
}
+
+ pi_buffer_free (buffer);
}
local->addr->entry[entryFirstname] = e_pilot_utf8_to_pchar (e_contact_get_const (contact, E_CONTACT_GIVEN_NAME));
@@ -1019,10 +1035,16 @@
EContactField next_mail, next_home, next_work, next_fax;
EContactField next_other, next_main, next_pager, next_mobile;
int i;
+ pi_buffer_t piBuf;
g_return_val_if_fail(remote!=NULL,NULL);
memset (&address, 0, sizeof (struct Address));
- unpack_Address (&address, remote->record, remote->length);
+
+ piBuf.data = remote->record;
+ piBuf.allocated = remote->length;
+ piBuf.used = remote->length;
+
+ unpack_Address (&address, &piBuf, address_v1);
if (in_contact == NULL)
contact = e_contact_new ();
@@ -1212,7 +1234,7 @@
EBookQuery *query;
GList *l;
int len;
- unsigned char *buf;
+ pi_buffer_t *buffer;
char *filename;
char *change_id;
char *auth;
@@ -1302,9 +1324,9 @@
gnome_pilot_conduit_sync_abs_set_num_updated_local_records (abs_conduit, mod_records);
gnome_pilot_conduit_sync_abs_set_num_deleted_local_records(abs_conduit, del_records);
- buf = (unsigned char*)g_malloc (0xffff);
+ buffer = pi_buffer_new (0xffff);
len = dlp_ReadAppBlock (dbi->pilot_socket, dbi->db_handle, 0,
- (unsigned char *)buf, 0xffff);
+ -1, buffer);
if (len < 0) {
WARN (_("Could not read pilot's Address application block"));
@@ -1313,8 +1335,8 @@
_("Could not read pilot's Address application block"));
return -1;
}
- unpack_AddressAppInfo (&(ctxt->ai), buf, len);
- g_free (buf);
+ unpack_AddressAppInfo (&(ctxt->ai), buffer->data, len);
+ pi_buffer_free (buffer);
check_for_slow_setting (conduit, ctxt);
if (ctxt->cfg->sync_type == GnomePilotConduitSyncTypeCopyToPilot
--- evolution-2.5.4/calendar/conduits/calendar/calendar-conduit.c.fix-conduits 2006-01-02 06:38:57.000000000 -0500
+++ evolution-2.5.4/calendar/conduits/calendar/calendar-conduit.c 2006-01-10 19:33:44.000000000 -0500
@@ -413,14 +413,20 @@
{
static char buff[ 4096 ];
struct Appointment appt;
+ pi_buffer_t piBuf;
if (remote == NULL) {
sprintf (buff, "[NULL]");
return buff;
}
+
+ piBuf.data = remote->record;
+ piBuf.allocated = remote->length;
+ piBuf.used = remote->length;
+
memset (&appt, 0, sizeof (struct Appointment));
- unpack_Appointment (&appt, remote->record, remote->length);
+ unpack_Appointment (&appt, &piBuf, datebook_v1);
g_snprintf (buff, 4096, "[%ld %ld '%s' '%s']",
mktime (&appt.begin),
@@ -818,7 +824,8 @@
ECalConduitContext *ctxt)
{
GnomePilotRecord p;
- static char record[0xffff];
+ static unsigned char record[0xffff];
+ pi_buffer_t piBuf;
g_assert (local->comp != NULL);
g_assert (local->appt != NULL );
@@ -829,9 +836,17 @@
p.archived = local->local.archived;
p.secret = local->local.secret;
+ memset (&piBuf, 0, sizeof (piBuf));
+ memset (record, 0, sizeof (record));
+ pack_Appointment (local->appt, &piBuf, datebook_v1);
+
/* Generate pilot record structure */
+ if (piBuf.used > 0)
+ memcpy (record, piBuf.data, piBuf.used);
p.record = record;
- p.length = pack_Appointment (local->appt, p.record, 0xffff);
+ p.length = piBuf.used;
+ if (piBuf.data)
+ free (piBuf.data);
return p;
}
@@ -867,22 +882,24 @@
* we don't overwrite them
*/
if (local->local.ID != 0) {
- struct Appointment appt;
- char record[0xffff];
+ struct Appointment appt;
+ pi_buffer_t *buffer = pi_buffer_new (0xffff);
int cat = 0;
if (dlp_ReadRecordById (ctxt->dbi->pilot_socket,
ctxt->dbi->db_handle,
- local->local.ID, &record,
- NULL, NULL, NULL, &cat) > 0) {
+ local->local.ID, buffer,
+ NULL, NULL, &cat) > 0) {
local->local.category = cat;
memset (&appt, 0, sizeof (struct Appointment));
- unpack_Appointment (&appt, record, 0xffff);
+ unpack_Appointment (&appt, buffer, datebook_v1);
local->appt->alarm = appt.alarm;
local->appt->advance = appt.advance;
local->appt->advanceUnits = appt.advanceUnits;
free_Appointment (&appt);
}
+
+ pi_buffer_free (buffer);
}
/* STOP: don't replace these with g_strdup, since free_Appointment
@@ -1140,11 +1157,17 @@
GSList *edl = NULL;
char *txt;
int pos, i;
+ pi_buffer_t piBuf;
g_return_val_if_fail (remote != NULL, NULL);
+
+ piBuf.data = remote->record;
+ piBuf.allocated = remote->length;
+ piBuf.used = remote->length;
+
memset (&appt, 0, sizeof (struct Appointment));
- unpack_Appointment (&appt, remote->record, remote->length);
+ unpack_Appointment (&appt, &piBuf, datebook_v1);
if (in_comp == NULL) {
comp = e_cal_component_new ();
@@ -1409,7 +1432,7 @@
GnomePilotConduitSyncAbs *abs_conduit;
GList *removed = NULL, *added = NULL, *l;
int len;
- unsigned char *buf;
+ pi_buffer_t *buffer;
char *filename, *change_id;
icalcomponent *icalcomp;
gint num_records, add_records = 0, mod_records = 0, del_records = 0;
@@ -1521,9 +1544,9 @@
gnome_pilot_conduit_sync_abs_set_num_updated_local_records (abs_conduit, mod_records);
gnome_pilot_conduit_sync_abs_set_num_deleted_local_records(abs_conduit, del_records);
- buf = (unsigned char*)g_malloc (0xffff);
+ buffer = pi_buffer_new (0xffff);
len = dlp_ReadAppBlock (dbi->pilot_socket, dbi->db_handle, 0,
- (unsigned char *)buf, 0xffff);
+ -1, buffer);
if (len < 0) {
WARN (_("Could not read pilot's Calendar application block"));
@@ -1532,8 +1555,8 @@
_("Could not read pilot's Calendar application block"));
return -1;
}
- unpack_AppointmentAppInfo (&(ctxt->ai), buf, len);
- g_free (buf);
+ unpack_AppointmentAppInfo (&(ctxt->ai), buffer->data, len);
+ pi_buffer_free (buffer);
check_for_slow_setting (conduit, ctxt);
if (ctxt->cfg->sync_type == GnomePilotConduitSyncTypeCopyToPilot
--- evolution-2.5.4/calendar/conduits/todo/todo-conduit.c.fix-conduits 2005-12-08 03:15:03.000000000 -0500
+++ evolution-2.5.4/calendar/conduits/todo/todo-conduit.c 2006-01-10 19:33:44.000000000 -0500
@@ -402,14 +402,19 @@
{
static char buff[ 4096 ];
struct ToDo todo;
+ pi_buffer_t piBuf;
if (remote == NULL) {
sprintf (buff, "[NULL]");
return buff;
}
+ piBuf.data = remote->record;
+ piBuf.allocated = remote->length;
+ piBuf.used = remote->length;
+
memset (&todo, 0, sizeof (struct ToDo));
- unpack_ToDo (&todo, remote->record, remote->length);
+ unpack_ToDo (&todo, &piBuf, todo_v1);
g_snprintf (buff, 4096, "[%d %ld %d %d '%s' '%s' %d]",
todo.indefinite,
@@ -594,7 +599,8 @@
EToDoConduitContext *ctxt)
{
GnomePilotRecord p;
- static char record[0xffff];
+ static unsigned char record[0xffff];
+ pi_buffer_t piBuf;
g_assert (local->comp != NULL);
g_assert (local->todo != NULL );
@@ -607,9 +613,17 @@
p.archived = local->local.archived;
p.secret = local->local.secret;
+ memset (&piBuf, 0, sizeof (piBuf));
+ memset (record, 0, sizeof (record));
+ pack_ToDo (local->todo, &piBuf, todo_v1);
+
/* Generate pilot record structure */
+ if (piBuf.used > 0)
+ memcpy (record, piBuf.data, piBuf.used);
p.record = record;
- p.length = pack_ToDo (local->todo, p.record, 0xffff);
+ p.length = piBuf.used;
+ if (piBuf.data)
+ free (piBuf.data);
return p;
}
@@ -696,15 +710,17 @@
/* Don't overwrite the category */
if (local->local.ID != 0) {
- char record[0xffff];
+ pi_buffer_t *buffer = pi_buffer_new (0xffff);
int cat = 0;
if (dlp_ReadRecordById (ctxt->dbi->pilot_socket,
ctxt->dbi->db_handle,
- local->local.ID, &record,
- NULL, NULL, NULL, &cat) > 0) {
+ local->local.ID, buffer,
+ NULL, NULL, &cat) > 0) {
local->local.category = cat;
}
+
+ pi_buffer_free (buffer);
}
/*
@@ -859,12 +875,17 @@
icaltimezone *utc_zone;
int priority;
char *txt;
+ pi_buffer_t piBuf;
char *category;
g_return_val_if_fail (remote != NULL, NULL);
+ piBuf.data = remote->record;
+ piBuf.allocated = remote->length;
+ piBuf.used = remote->length;
+
memset (&todo, 0, sizeof (struct ToDo));
- unpack_ToDo (&todo, remote->record, remote->length);
+ unpack_ToDo (&todo, &piBuf, todo_v1);
utc_zone = icaltimezone_get_utc_timezone ();
now = icaltime_from_timet_with_zone (time (NULL), FALSE,
@@ -1014,7 +1035,7 @@
GnomePilotConduitSyncAbs *abs_conduit;
GList *l;
int len;
- unsigned char *buf;
+ pi_buffer_t *buffer;
char *filename, *change_id;
icalcomponent *icalcomp;
gint num_records, add_records = 0, mod_records = 0, del_records = 0;
@@ -1104,9 +1125,9 @@
g_message("num_records: %d\nadd_records: %d\nmod_records: %d\ndel_records: %d\n",
num_records, add_records, mod_records, del_records);
- buf = (unsigned char*)g_malloc (0xffff);
+ buffer = pi_buffer_new (0xffff);
len = dlp_ReadAppBlock (dbi->pilot_socket, dbi->db_handle, 0,
- (unsigned char *)buf, 0xffff);
+ -1, buffer);
if (len < 0) {
WARN (_("Could not read pilot's ToDo application block"));
@@ -1115,8 +1136,8 @@
_("Could not read pilot's ToDo application block"));
return -1;
}
- unpack_ToDoAppInfo (&(ctxt->ai), buf, len);
- g_free (buf);
+ unpack_ToDoAppInfo (&(ctxt->ai), buffer->data, len);
+ pi_buffer_free (buffer);
lastDesktopUniqueID = 128;
--- evolution-2.5.4/calendar/conduits/memo/memo-conduit.c.fix-conduits 2006-01-10 22:52:28.000000000 -0500
+++ evolution-2.5.4/calendar/conduits/memo/memo-conduit.c 2006-01-10 23:11:47.000000000 -0500
@@ -331,14 +331,19 @@
{
static char buff[ 64 ];
struct Memo memo;
+ pi_buffer_t piBuf;
if (remote == NULL) {
sprintf (buff, "[NULL]");
return buff;
}
+ piBuf.data = remote->record;
+ piBuf.allocated = remote->length;
+ piBuf.used = remote->length;
+
memset (&memo, 0, sizeof (struct Memo));
- unpack_Memo (&memo, remote->record, remote->length);
+ unpack_Memo (&memo, &piBuf, memo_v1);
g_snprintf (buff, 64, "['%s']",
memo.text ?
@@ -451,7 +456,8 @@
EMemoConduitContext *ctxt)
{
GnomePilotRecord p;
- static char record[0xffff];
+ static unsigned char record[0xffff];
+ pi_buffer_t piBuf;
g_assert (local->comp != NULL);
g_assert (local->memo != NULL );
@@ -466,8 +472,14 @@
/* Generate pilot record structure */
p.record = record;
- p.length = pack_Memo (local->memo, p.record, 0xffff);
-
+ memset (&piBuf, 0, sizeof (piBuf));
+ memset (record, 0, sizeof (record));
+ p.length = pack_Memo (local->memo, &piBuf, memo_v1);
+ if (piBuf.used > 0)
+ memcpy (record, piBuf.data, piBuf.used);
+ p.length = piBuf.used;
+ if (piBuf.data)
+ free (piBuf.data);
return p;
}
@@ -568,16 +580,17 @@
/* Don't overwrite the category */
if (local->local.ID != 0) {
- char record[0xffff];
+ pi_buffer_t *buffer = pi_buffer_new (0xffff);
int cat = 0;
LOG(fprintf(stderr, "local_record_from_comp: calling dlp_ReadRecordById\n"));
if (dlp_ReadRecordById (ctxt->dbi->pilot_socket,
ctxt->dbi->db_handle,
- local->local.ID, &record,
- NULL, NULL, NULL, &cat) > 0) {
+ local->local.ID, buffer,
+ NULL, NULL, &cat) > 0) {
local->local.category = cat;
}
+ pi_buffer_free (buffer);
LOG(fprintf(stderr, "local_record_from_comp: done calling dlp_ReadRecordById\n"));
}
@@ -699,6 +712,7 @@
{
ECalComponent *comp;
struct Memo memo;
+ pi_buffer_t piBuf;
struct icaltimetype now;
icaltimezone *utc_zone;
char *txt, *txt2, *txt3;
@@ -707,8 +721,12 @@
g_return_val_if_fail (remote != NULL, NULL);
+ piBuf.data = remote->record;
+ piBuf.allocated = remote->length;
+ piBuf.used = remote->length;
+
memset (&memo, 0, sizeof (struct Memo));
- unpack_Memo (&memo, remote->record, remote->length);
+ unpack_Memo (&memo, &piBuf, memo_v1);
utc_zone = icaltimezone_get_utc_timezone ();
now = icaltime_from_timet_with_zone (time (NULL), FALSE,
@@ -836,7 +854,7 @@
GnomePilotConduitSyncAbs *abs_conduit;
GList *l;
int len;
- unsigned char *buf;
+ pi_buffer_t *buffer;
char *filename, *change_id;
icalcomponent *icalcomp;
gint num_records, add_records = 0, mod_records = 0, del_records = 0;
@@ -929,9 +947,9 @@
g_message("num_records: %d\nadd_records: %d\nmod_records: %d\ndel_records: %d\n",
num_records, add_records, mod_records, del_records);
- buf = (unsigned char*)g_malloc (0xffff);
+ buffer = pi_buffer_new (0xffff);
len = dlp_ReadAppBlock (dbi->pilot_socket, dbi->db_handle, 0,
- (unsigned char *)buf, 0xffff);
+ -1, buffer);
if (len < 0) {
WARN (_("Could not read pilot's Memo application block"));
@@ -940,8 +958,8 @@
_("Could not read pilot's Memo application block"));
return -1;
}
- unpack_MemoAppInfo (&(ctxt->ai), buf, len);
- g_free (buf);
+ unpack_MemoAppInfo (&(ctxt->ai), buffer->data, len);
+ pi_buffer_free (buffer);
lastDesktopUniqueID = 128;

View file

@ -0,0 +1,242 @@
--- evolution-2.5.5.1/calendar/gui/e-day-view.c.commit-enter-on-calendar 2006-01-16 09:42:17.000000000 -0500
+++ evolution-2.5.5.1/calendar/gui/e-day-view.c 2006-01-25 23:48:24.000000000 -0500
@@ -334,6 +334,10 @@
gint event_num,
gchar *initial_text);
static void e_day_view_stop_editing_event (EDayView *day_view);
+static gboolean e_day_view_text_keypress (GnomeCanvasItem *item,
+ guint keyval,
+ guint state,
+ EDayView *day_view);
static gboolean e_day_view_on_text_item_event (GnomeCanvasItem *item,
GdkEvent *event,
EDayView *day_view);
@@ -4484,6 +4488,8 @@
G_CALLBACK (e_day_view_on_text_item_event), day_view);
g_signal_emit_by_name (G_OBJECT(day_view),
"event_added", event);
+ g_signal_connect (event->canvas_item, "keypress",
+ G_CALLBACK (e_day_view_text_keypress), day_view);
e_day_view_update_long_event_label (day_view, event_num);
}
@@ -4667,6 +4673,8 @@
G_CALLBACK (e_day_view_on_text_item_event), day_view);
g_signal_emit_by_name (G_OBJECT(day_view),
"event_added", event);
+ g_signal_connect (event->canvas_item, "keypress",
+ G_CALLBACK (e_day_view_text_keypress), day_view);
e_day_view_update_event_label (day_view, day, event_num);
}
@@ -5824,46 +5832,74 @@
}
static gboolean
+e_day_view_text_keypress (GnomeCanvasItem *item,
+ guint keyval,
+ guint state,
+ EDayView *day_view)
+{
+ gboolean retval = FALSE;
+
+ tooltip_destroy (day_view, item);
+
+ if (keyval == GDK_Return) {
+ EText *text = E_TEXT (item);
+ gint new_pos = 0;
+
+ /*
+ * HACK: last character which should be \n needs to be deleted
+ * here so that GDK_Return was already processed on EText
+ * before E_TEXT_KEYPRESS event is emitted.
+ */
+ if (text->selection_end >= 1)
+ new_pos = text->selection_end - 1;
+
+ text->selection_end = e_text_model_validate_position (text->model, new_pos);
+ e_text_delete_selection (text);
+
+ day_view->resize_event_num = -1;
+
+ /* We set the keyboard focus to the EDayView, so the
+ EText item loses it and stops the edit. */
+ gtk_widget_grab_focus (GTK_WIDGET (day_view));
+
+ /* Stop the signal last or we will also stop any
+ other events getting to the EText item. */
+ gtk_signal_emit_stop_by_name (GTK_OBJECT (item),
+ "event");
+
+ retval = TRUE;
+ } else if (keyval == GDK_Escape) {
+ cancel_editing (day_view);
+ gtk_signal_emit_stop_by_name (GTK_OBJECT (item), "event");
+ /* focus should go to day view when stop editing */
+ gtk_widget_grab_focus (GTK_WIDGET (day_view));
+
+ retval = TRUE;
+ } else if ((keyval == GDK_Up)
+ && (state & GDK_SHIFT_MASK)
+ && (state & GDK_CONTROL_MASK)
+ && !(state & GDK_MOD1_MASK)) {
+ e_day_view_change_event_end_time_up (day_view);
+
+ retval = TRUE;
+ } else if ((keyval == GDK_Down)
+ && (state & GDK_SHIFT_MASK)
+ && (state & GDK_CONTROL_MASK)
+ && !(state & GDK_MOD1_MASK)) {
+ e_day_view_change_event_end_time_down (day_view);
+
+ retval = TRUE;
+ }
+
+ return retval;
+}
+
+static gboolean
e_day_view_on_text_item_event (GnomeCanvasItem *item,
GdkEvent *event,
EDayView *day_view)
{
switch (event->type) {
- case GDK_KEY_PRESS:
- tooltip_destroy (day_view, item);
- if (event && event->key.keyval == GDK_Return) {
- day_view->resize_event_num = -1;
- day_view->resize_event_num = -1;
-
- /* We set the keyboard focus to the EDayView, so the
- EText item loses it and stops the edit. */
- gtk_widget_grab_focus (GTK_WIDGET (day_view));
-
- /* Stop the signal last or we will also stop any
- other events getting to the EText item. */
- gtk_signal_emit_stop_by_name (GTK_OBJECT (item),
- "event");
- return TRUE;
- } else if (event->key.keyval == GDK_Escape) {
- cancel_editing (day_view);
- gtk_signal_emit_stop_by_name (GTK_OBJECT (item), "event");
- /* focus should go to day view when stop editing */
- gtk_widget_grab_focus (GTK_WIDGET (day_view));
- return TRUE;
- } else if ((event->key.keyval == GDK_Up)
- && (event->key.state & GDK_SHIFT_MASK)
- && (event->key.state & GDK_CONTROL_MASK)
- && !(event->key.state & GDK_MOD1_MASK)) {
- e_day_view_change_event_end_time_up (day_view);
- return TRUE;
- } else if ((event->key.keyval == GDK_Down)
- && (event->key.state & GDK_SHIFT_MASK)
- && (event->key.state & GDK_CONTROL_MASK)
- && !(event->key.state & GDK_MOD1_MASK)) {
- e_day_view_change_event_end_time_down (day_view);
- return TRUE;
- }
- break;
case GDK_2BUTTON_PRESS:
#if 0
g_print ("Item got double-click\n");
--- evolution-2.5.5.1/calendar/gui/e-week-view.c.commit-enter-on-calendar 2006-01-16 09:42:17.000000000 -0500
+++ evolution-2.5.5.1/calendar/gui/e-week-view.c 2006-01-25 23:46:43.000000000 -0500
@@ -175,6 +175,10 @@
const gchar *uid,
EWeekViewForeachEventCallback callback,
gpointer data);
+static gboolean e_week_view_text_keypress (GnomeCanvasItem *item,
+ guint keyval,
+ guint state,
+ EWeekView *week_view);
static gboolean e_week_view_on_text_item_event (GnomeCanvasItem *item,
GdkEvent *event,
EWeekView *week_view);
@@ -2771,6 +2775,8 @@
week_view);
g_signal_emit_by_name (G_OBJECT(week_view),
"event_added", event);
+ g_signal_connect (span->text_item, "keypress",
+ G_CALLBACK (e_week_view_text_keypress), week_view);
}
@@ -3028,6 +3034,51 @@
}
static gboolean
+e_week_view_text_keypress (GnomeCanvasItem *item,
+ guint keyval,
+ guint state,
+ EWeekView *week_view)
+{
+ gboolean retval = FALSE;
+
+ tooltip_destroy (week_view, item);
+
+ if (keyval == GDK_Return) {
+ EText *text = E_TEXT (item);
+ gint new_pos = 0;
+
+ /*
+ * HACK: last charater which should be \n needs to be deleted
+ * here so that GDK_Return was already processed on EText
+ * before E_TEXT_KEYPRESS event is emitted.
+ */
+ if (text->selection_end >= 1)
+ new_pos = text->selection_end - 1;
+
+ text->selection_end = e_text_model_validate_position (text->model, new_pos);
+ e_text_delete_selection (text);
+
+ /* We set the keyboard focus to the EDayView, so the
+ EText item loses it and stops the edit. */
+ gtk_widget_grab_focus (GTK_WIDGET (week_view));
+
+ /* Stop the signal last or we will also stop any
+ other events getting to the EText item. */
+ gtk_signal_emit_stop_by_name (GTK_OBJECT (item),
+ "event");
+ retval = TRUE;
+ } else if (keyval == GDK_Escape) {
+ cancel_editing (week_view);
+ gtk_signal_emit_stop_by_name (GTK_OBJECT (item), "event");
+ /* focus should go to week view when stop editing */
+ gtk_widget_grab_focus (GTK_WIDGET (week_view));
+ retval = TRUE;
+ }
+
+ return retval;
+}
+
+static gboolean
e_week_view_on_text_item_event (GnomeCanvasItem *item,
GdkEvent *gdkevent,
EWeekView *week_view)
@@ -3044,26 +3095,6 @@
#endif
switch (gdkevent->type) {
- case GDK_KEY_PRESS:
- tooltip_destroy (week_view, item);
- if (gdkevent && gdkevent->key.keyval == GDK_Return) {
- /* We set the keyboard focus to the EDayView, so the
- EText item loses it and stops the edit. */
- gtk_widget_grab_focus (GTK_WIDGET (week_view));
-
- /* Stop the signal last or we will also stop any
- other events getting to the EText item. */
- gtk_signal_emit_stop_by_name (GTK_OBJECT (item),
- "event");
- return TRUE;
- } else if (gdkevent->key.keyval == GDK_Escape) {
- cancel_editing (week_view);
- gtk_signal_emit_stop_by_name (GTK_OBJECT (item), "event");
- /* focus should go to week view when stop editing */
- gtk_widget_grab_focus (GTK_WIDGET (week_view));
- return TRUE;
- }
- break;
case GDK_2BUTTON_PRESS:
if (!e_week_view_find_event_from_item (week_view, item,
&event_num, &span_num))

View file

@ -0,0 +1,21 @@
--- evolution-2.6.0/calendar/gui/dialogs/event-page.c.prototypes 2006-03-14 01:00:04.000000000 -0500
+++ evolution-2.6.0/calendar/gui/dialogs/event-page.c 2006-03-14 01:00:21.000000000 -0500
@@ -59,6 +59,8 @@
#include "event-page.h"
#include "e-send-options-utils.h"
+GtkWidget *alarm_list_dialog_peek (ECal *ecal, EAlarmList *list_store);
+
/* Private part of the EventPage structure */
--- evolution-2.6.0/calendar/gui/dialogs/cal-prefs-dialog.c.prototypes 2006-03-13 14:14:07.000000000 -0500
+++ evolution-2.6.0/calendar/gui/dialogs/cal-prefs-dialog.c 2006-03-13 14:14:24.000000000 -0500
@@ -32,6 +32,7 @@
#include "../calendar-config.h"
#include "cal-prefs-dialog.h"
#include <libgnomeui/gnome-color-picker.h>
+#include <libgnomeui/gnome-file-entry.h>
#include <widgets/misc/e-dateedit.h>
#include <e-util/e-dialog-widgets.h>
#include <e-util/e-util-private.h>

View file

@ -0,0 +1,169 @@
--- evolution-2.10.1/configure.no-gnome-common 2007-04-09 12:32:23.000000000 -0400
+++ evolution-2.10.1/configure 2007-04-09 12:33:02.000000000 -0400
@@ -33161,154 +33161,6 @@
- # Check whether --enable-compile-warnings was given.
-if test "${enable_compile_warnings+set}" = set; then
- enableval=$enable_compile_warnings;
-else
- enable_compile_warnings="yes"
-fi
-
-
- warnCFLAGS=
- if test "x$GCC" != xyes; then
- enable_compile_warnings=no
- fi
-
- warning_flags=
- realsave_CFLAGS="$CFLAGS"
-
- case "$enable_compile_warnings" in
- no)
- warning_flags=
- ;;
- minimum)
- warning_flags="-Wall"
- ;;
- yes)
- warning_flags="-Wall -Wmissing-prototypes"
- ;;
- maximum|error)
- warning_flags="-Wall -Wmissing-prototypes -Wnested-externs -Wpointer-arith"
- CFLAGS="$warning_flags $CFLAGS"
- for option in -Wno-sign-compare; do
- SAVE_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS $option"
- { echo "$as_me:$LINENO: checking whether gcc understands $option" >&5
-echo $ECHO_N "checking whether gcc understands $option... $ECHO_C" >&6; }
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- has_option=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- has_option=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- CFLAGS="$SAVE_CFLAGS"
- { echo "$as_me:$LINENO: result: $has_option" >&5
-echo "${ECHO_T}$has_option" >&6; }
- if test $has_option = yes; then
- warning_flags="$warning_flags $option"
- fi
- unset has_option
- unset SAVE_CFLAGS
- done
- unset option
- if test "$enable_compile_warnings" = "error" ; then
- warning_flags="$warning_flags -Werror"
- fi
- ;;
- *)
- { { echo "$as_me:$LINENO: error: Unknown argument '$enable_compile_warnings' to --enable-compile-warnings" >&5
-echo "$as_me: error: Unknown argument '$enable_compile_warnings' to --enable-compile-warnings" >&2;}
- { (exit 1); exit 1; }; }
- ;;
- esac
- CFLAGS="$realsave_CFLAGS"
- { echo "$as_me:$LINENO: checking what warning flags to pass to the C compiler" >&5
-echo $ECHO_N "checking what warning flags to pass to the C compiler... $ECHO_C" >&6; }
- { echo "$as_me:$LINENO: result: $warning_flags" >&5
-echo "${ECHO_T}$warning_flags" >&6; }
-
- # Check whether --enable-iso-c was given.
-if test "${enable_iso_c+set}" = set; then
- enableval=$enable_iso_c;
-else
- enable_iso_c=no
-fi
-
-
- { echo "$as_me:$LINENO: checking what language compliance flags to pass to the C compiler" >&5
-echo $ECHO_N "checking what language compliance flags to pass to the C compiler... $ECHO_C" >&6; }
- complCFLAGS=
- if test "x$enable_iso_c" != "xno"; then
- if test "x$GCC" = "xyes"; then
- case " $CFLAGS " in
- *\ \ -ansi\ \ *) ;;
- *) complCFLAGS="$complCFLAGS -ansi" ;;
- esac
- case " $CFLAGS " in
- *\ \ -pedantic\ \ *) ;;
- *) complCFLAGS="$complCFLAGS -pedantic" ;;
- esac
- fi
- fi
- { echo "$as_me:$LINENO: result: $complCFLAGS" >&5
-echo "${ECHO_T}$complCFLAGS" >&6; }
-
- WARN_CFLAGS="$warning_flags $complCFLAGS"
-
-
-CFLAGS="$CFLAGS $WARN_CFLAGS"
case $CFLAGS in
*-Wall*)
# Turn off the annoying "comparison between signed and unsigned"
--- evolution-2.10.1/configure.in.no-gnome-common 2007-04-09 09:11:47.000000000 -0400
+++ evolution-2.10.1/configure.in 2007-04-09 12:32:23.000000000 -0400
@@ -1136,9 +1136,6 @@
dnl *************************
dnl CFLAGS and LIBS and stuff
dnl *************************
-
-GNOME_COMPILE_WARNINGS(yes)
-CFLAGS="$CFLAGS $WARN_CFLAGS"
case $CFLAGS in
*-Wall*)
# Turn off the annoying "comparison between signed and unsigned"

View file

@ -0,0 +1,51 @@
--- evolution-2.7.2.1/calendar/gui/alarm-notify/alarm-queue.c.notification-cleanups 2006-04-22 00:39:20.000000000 -0400
+++ evolution-2.7.2.1/calendar/gui/alarm-notify/alarm-queue.c 2006-05-23 16:04:23.000000000 -0400
@@ -1566,10 +1566,11 @@
const char *summary, *location;
GtkTooltips *tooltips;
ECalComponentText text;
- char *str, *start_str, *end_str, *alarm_str, *time_str;
+ char *start_str, *end_str, *alarm_str, *time_str;
icaltimezone *current_zone;
ECalComponentOrganizer organiser;
char *body;
+ NotifyNotification *n;
d(printf("%s:%d (popup_notification)\n",__FILE__, __LINE__));
@@ -1601,9 +1602,6 @@
end_str = timet_to_str_with_zone (qa->instance->occur_end, current_zone);
time_str = calculate_time (qa->instance->occur_start, qa->instance->occur_end);
- str = g_strdup_printf ("%s %s",
- start_str, time_str);
-
if (organiser.cn) {
if (location)
body = g_strdup_printf ("<b>%s</b>\n%s %s\n%s %s", organiser.cn, _("Location:"), location, start_str, time_str);
@@ -1617,16 +1615,21 @@
body = g_strdup_printf ("%s %s", start_str, time_str);
}
- NotifyNotification *n = notify_notification_new (summary, body, "stock_appointment-reminder", NULL);
- if (!notify_notification_show(n, NULL))
+ n = notify_notification_new (summary, body, "stock_appointment-reminder", NULL);
+
+ /* Notifications don't timeout: require explicit user action: */
+ notify_notification_set_timeout (n, NOTIFY_EXPIRES_NEVER);
+
+ if (!notify_notification_show (n, NULL))
g_warning ("Could not send notification to daemon\n");
- /* create the private structure */
+ g_object_unref (n);
+
+ g_free (body);
g_free (start_str);
g_free (end_str);
g_free (alarm_str);
g_free (time_str);
- g_free (str);
}

View file

@ -0,0 +1,178 @@
diff -ur evolution-2.7.3/filter/filter-datespec.c my-evolution-2.7.3/filter/filter-datespec.c
--- evolution-2.7.3/filter/filter-datespec.c 2005-08-09 17:29:27.000000000 -0600
+++ my-evolution-2.7.3/filter/filter-datespec.c 2006-06-28 20:51:01.000000000 -0600
@@ -61,8 +61,10 @@
typedef struct _timespan {
guint32 seconds;
- const char *singular;
- const char *plural;
+ const char *past_singular;
+ const char *past_plural;
+ const char *future_singular;
+ const char *future_plural;
float max;
} timespan;
@@ -75,13 +77,13 @@
#define ngettext(a, b) a, b
static const timespan timespans[] = {
- { 1, ngettext("1 second ago", "%d seconds ago"), 59.0 },
- { 60, ngettext("1 minute ago", "%d minutes ago"), 59.0 },
- { 3600, ngettext("1 hour ago", "%d hours ago"), 23.0 },
- { 86400, ngettext("1 day ago", "%d days ago"), 31.0 },
- { 604800, ngettext("1 week ago", "%d weeks ago"), 52.0 },
- { 2419200, ngettext("1 month ago", "%d months ago"), 12.0 },
- { 31557600, ngettext("1 year ago", "%d years ago"), 1000.0 },
+ { 1, ngettext("1 second ago", "%d seconds ago"), ngettext("1 second in the future", "%d seconds in the future"), 59.0 },
+ { 60, ngettext("1 minute ago", "%d minutes ago"), ngettext("1 minute in the future", "%d minutes in the future"), 59.0 },
+ { 3600, ngettext("1 hour ago", "%d hours ago"), ngettext("1 hour in the future", "%d hours in the future"), 23.0 },
+ { 86400, ngettext("1 day ago", "%d days ago"), ngettext("1 day in the future", "%d days in the future"), 31.0 },
+ { 604800, ngettext("1 week ago", "%d weeks ago"), ngettext("1 week in the future", "%d weeks in the future"), 52.0 },
+ { 2419200, ngettext("1 month ago", "%d months ago"), ngettext("1 month in the future", "%d months in the future"), 12.0 },
+ { 31557600, ngettext("1 year ago", "%d years ago"), ngettext("1 year in the future", "%d years in the future"), 1000.0 },
};
/* now we let the compiler see the real function call */
@@ -92,7 +94,7 @@
struct _FilterDatespecPrivate {
GtkWidget *label_button;
- GtkWidget *notebook_type, *option_type, *calendar_specify, *spin_relative, *option_relative;
+ GtkWidget *notebook_type, *option_type, *calendar_specify, *spin_relative, *option_relative, *option_past_future;
FilterDatespec_type type;
int span;
};
@@ -264,7 +266,7 @@
get_best_span (time_t val)
{
int i;
-
+
for (i=N_TIMESPANS-1;i>=0;i--) {
if (val % timespans[i].seconds == 0)
return i;
@@ -302,8 +304,18 @@
span = get_best_span(fds->value);
count = fds->value / timespans[span].seconds;
+ sprintf(buf, ngettext(timespans[span].past_singular, timespans[span].past_plural, count), count);
+ }
+ break;
+ case FDST_X_FUTURE:
+ if (fds->value == 0)
+ label = _("now");
+ else {
+ int span, count;
- sprintf(buf, ngettext(timespans[span].singular, timespans[span].plural, count), count);
+ span = get_best_span(fds->value);
+ count = fds->value / timespans[span].seconds;
+ sprintf(buf, ngettext(timespans[span].future_singular, timespans[span].future_plural, count), count);
}
break;
}
@@ -329,6 +341,7 @@
fds->value = mktime(&tm);
/* what about timezone? */
break; }
+ case FDST_X_FUTURE:
case FDST_X_AGO: {
int val;
@@ -349,6 +362,8 @@
struct _FilterDatespecPrivate *p = PRIV(fds);
p->type = fds->type==FDST_UNKNOWN ? FDST_NOW : fds->type;
+
+ int note_type = fds->type==FDST_X_FUTURE ? FDST_X_AGO : fds->type; // FUTURE and AGO use the same notebook pages/etc.
switch (p->type) {
case FDST_NOW:
@@ -368,11 +383,18 @@
p->span = get_best_span(fds->value);
gtk_spin_button_set_value((GtkSpinButton*)p->spin_relative, fds->value/timespans[p->span].seconds);
gtk_option_menu_set_history((GtkOptionMenu*)p->option_relative, p->span);
+ gtk_option_menu_set_history((GtkOptionMenu*)p->option_past_future, 0);
+ break;
+ case FDST_X_FUTURE:
+ p->span = get_best_span(fds->value);
+ gtk_spin_button_set_value((GtkSpinButton*)p->spin_relative, fds->value/timespans[p->span].seconds);
+ gtk_option_menu_set_history((GtkOptionMenu*)p->option_relative, p->span);
+ gtk_option_menu_set_history((GtkOptionMenu*)p->option_past_future, 1);
break;
}
- gtk_notebook_set_current_page ((GtkNotebook*) p->notebook_type, p->type);
- gtk_option_menu_set_history ((GtkOptionMenu*) p->option_type, p->type);
+ gtk_notebook_set_current_page ((GtkNotebook*) p->notebook_type, note_type);
+ gtk_option_menu_set_history ((GtkOptionMenu*) p->option_type, note_type);
}
@@ -397,6 +419,18 @@
}
static void
+set_option_past_future (GtkMenu *menu, FilterDatespec *fds)
+{
+ GtkWidget *w;
+
+ w = gtk_menu_get_active (menu);
+ if(g_list_index (GTK_MENU_SHELL (menu)->children, w) == 0)
+ fds->type = fds->priv->type = FDST_X_AGO;
+ else
+ fds->type = fds->priv->type = FDST_X_FUTURE;
+}
+
+static void
button_clicked (GtkButton *button, FilterDatespec *fds)
{
struct _FilterDatespecPrivate *p = PRIV(fds);
@@ -424,6 +458,7 @@
p->calendar_specify = glade_xml_get_widget (gui, "calendar_specify");
p->spin_relative = glade_xml_get_widget (gui, "spin_relative");
p->option_relative = glade_xml_get_widget (gui, "option_relative");
+ p->option_past_future = glade_xml_get_widget (gui, "option_past_future");
set_values (fds);
@@ -431,6 +466,8 @@
G_CALLBACK (set_option_type), fds);
g_signal_connect (GTK_OPTION_MENU (p->option_relative)->menu, "deactivate",
G_CALLBACK (set_option_relative), fds);
+ g_signal_connect (GTK_OPTION_MENU (p->option_past_future)->menu, "deactivate",
+ G_CALLBACK (set_option_past_future), fds);
gtk_box_pack_start ((GtkBox *) dialog->vbox, toplevel, TRUE, TRUE, 3);
@@ -486,5 +523,8 @@
case FDST_X_AGO:
g_string_append_printf (out, "(- (get-current-date) %d)", (int) fds->value);
break;
+ case FDST_X_FUTURE:
+ g_string_append_printf (out, "(+ (get-current-date) %d)", (int) fds->value);
+ break;
}
}
diff -ur evolution-2.7.3/filter/filter-datespec.h my-evolution-2.7.3/filter/filter-datespec.h
--- evolution-2.7.3/filter/filter-datespec.h 2002-11-01 16:22:57.000000000 -0700
+++ my-evolution-2.7.3/filter/filter-datespec.h 2006-06-28 17:25:55.000000000 -0600
@@ -42,6 +42,7 @@
FDST_NOW,
FDST_SPECIFIED,
FDST_X_AGO,
+ FDST_X_FUTURE,
} FilterDatespec_type;
struct _FilterDatespec {
@@ -52,7 +53,7 @@
/* either a timespan, an absolute time, or 0
* depending on type -- the above mapping to
- * (X_AGO, SPECIFIED, NOW)
+ * (X_FUTURE, X_AGO, SPECIFIED, NOW)
*/
time_t value;

View file

@ -0,0 +1,22 @@
--- evolution-2.7.3/widgets/text/e-text.c.replicated_cjk_input 2006-07-06 09:57:22.000000000 -0400
+++ evolution-2.7.3/widgets/text/e-text.c 2006-07-06 09:58:27.000000000 -0400
@@ -1498,7 +1498,8 @@
}
- insert_preedit_text (text);
+ if (text->im_context_signals_registered)
+ insert_preedit_text (text);
if (!pango_layout_get_text (text->layout))
return;
@@ -2212,7 +2213,8 @@
G_SIGNAL_MATCH_DATA,
0, 0, NULL,
NULL, save_text);
- save_text->im_context_signals_registered = FALSE;
+ save_text->im_context_signals_registered = FALSE;
+ reset_layout (save_text);
}
if (text->im_context) {

View file

@ -0,0 +1,112 @@
--- evolution-2.7.4/widgets/text/e-text.h.cal 2006-07-13 10:15:56.000000000 -0400
+++ evolution-2.7.4/widgets/text/e-text.h 2006-07-13 10:18:20.000000000 -0400
@@ -109,6 +109,7 @@
const gchar *text; /* Text to display --- from the ETextModel */
gint preedit_len; /* preedit length to display */
+ gint preedit_pos; /* preedit cursor position */
PangoLayout *layout;
int num_lines; /* Number of lines of text */
--- evolution-2.7.4/widgets/text/e-text.c.cal 2006-07-13 10:15:51.000000000 -0400
+++ evolution-2.7.4/widgets/text/e-text.c 2006-07-13 10:18:20.000000000 -0400
@@ -132,6 +132,7 @@
static void reset_layout_attrs (EText *text);
+static void update_im_cursor_position (EText *text);
#if 0
/* GtkEditable Methods */
static void e_text_editable_do_insert_text (GtkEditable *editable,
@@ -325,6 +326,8 @@
pango_layout_set_attributes (text->layout, attrs);
pango_attr_list_unref (attrs);
}
+
+ update_im_cursor_position (text);
}
if (preedit_string)
@@ -3723,6 +3726,7 @@
text->model = e_text_model_new ();
text->text = e_text_model_get_text (text->model);
text->preedit_len = 0;
+ text->preedit_pos = 0;
text->layout = NULL;
text->revert = NULL;
@@ -3840,17 +3844,71 @@
}
}
+/*
+ * Fetch cursor location into Strong or Weak positions so as to
+ * display the preedit candidate selection window in the right place
+ */
+static void
+e_text_get_cursor_locations (EText *text,
+ GdkRectangle *strong_pos,
+ GdkRectangle *weak_pos)
+{
+ double x1, y1;
+ PangoRectangle pango_strong_pos;
+ PangoRectangle pango_weak_pos;
+ int cx, cy;
+ gint index;
+
+ gnome_canvas_item_get_bounds (GNOME_CANVAS_ITEM (text), &x1, &y1, NULL, NULL);
+
+ gnome_canvas_get_scroll_offsets (GNOME_CANVAS (GNOME_CANVAS_ITEM (text)->canvas), &cx, &cy);
+
+ index = g_utf8_offset_to_pointer (text->text, text->selection_start) - text->text;
+
+ pango_layout_get_cursor_pos (text->layout, index + text->preedit_pos,
+ strong_pos ? &pango_strong_pos : NULL,
+ weak_pos ? &pango_weak_pos : NULL);
+
+ if (strong_pos) {
+ strong_pos->x = x1 - cx - text->xofs_edit + pango_strong_pos.x / PANGO_SCALE;
+ strong_pos->y = y1 - cy - text->yofs_edit + pango_strong_pos.y / PANGO_SCALE;
+ strong_pos->width = 0;
+ strong_pos->height = pango_strong_pos.height / PANGO_SCALE;
+ }
+
+ if (weak_pos) {
+ weak_pos->x = x1 - cx - text->xofs_edit + pango_weak_pos.x / PANGO_SCALE;
+ weak_pos->y = y1 - cy - text->yofs_edit + pango_weak_pos.y / PANGO_SCALE;
+ weak_pos->width = 0;
+ weak_pos->height = pango_weak_pos.height / PANGO_SCALE;
+ }
+}
+
+/* Update IM's cursor position to display candidate selection window */
+static void
+update_im_cursor_position (EText *text)
+{
+ GdkRectangle area;
+
+ e_text_get_cursor_locations (text, &area, NULL);
+
+ gtk_im_context_set_cursor_location (text->im_context, &area);
+}
+
static void
e_text_preedit_changed_cb (GtkIMContext *context,
- EText *etext)
+ EText *etext)
{
gchar *preedit_string = NULL;
+ gint cursor_pos;
gtk_im_context_get_preedit_string (context, &preedit_string,
- NULL, NULL);
+ NULL, &cursor_pos);
+ cursor_pos = CLAMP (cursor_pos, 0, g_utf8_strlen (preedit_string, -1));
etext->preedit_len = strlen (preedit_string);
- g_free (preedit_string);
+ etext->preedit_pos = g_utf8_offset_to_pointer (preedit_string, cursor_pos) - preedit_string;
+ g_free (preedit_string);
g_signal_emit (etext, e_text_signals[E_TEXT_KEYPRESS], 0, 0, 0);
}

View file

@ -0,0 +1,110 @@
--- evolution-2.7.4/widgets/table/e-cell-text.c.task 2006-07-13 10:56:19.000000000 -0400
+++ evolution-2.7.4/widgets/table/e-cell-text.c 2006-07-13 10:56:27.000000000 -0400
@@ -199,6 +199,7 @@
gboolean im_context_signals_registered;
guint16 preedit_length; /* length of preedit string, in bytes */
+ gint preedit_pos; /* position of preedit cursor */
ECellActions actions;
};
@@ -222,6 +223,7 @@
static void _insert (ECellTextView *text_view, char *string, int value);
static void _delete_selection (ECellTextView *text_view);
static PangoAttrList* build_attr_list (ECellTextView *text_view, int row, int text_length);
+static void update_im_cursor_location (ECellTextView *tv);
static ECellClass *parent_class;
@@ -560,6 +562,9 @@
if (preedit_attrs)
pango_attr_list_unref (preedit_attrs);
pango_attr_list_unref (attrs);
+
+ update_im_cursor_location (text_view);
+
return layout;
}
@@ -1863,6 +1868,66 @@
/* IM Context Callbacks */
static void
+e_cell_text_get_cursor_locations (ECellTextView *tv,
+ GdkRectangle *strong_pos,
+ GdkRectangle *weak_pos)
+{
+ GdkRectangle area;
+ CellEdit *edit=tv->edit;
+ ECellView *cell_view = (ECellView *)tv;
+ ETableItem *item = E_TABLE_ITEM ((cell_view)->e_table_item_view);
+ GnomeCanvasItem *parent_item = GNOME_CANVAS_ITEM (item)->parent;
+ PangoRectangle pango_strong_pos;
+ PangoRectangle pango_weak_pos;
+ gint x, y, col, row;
+ gdouble x1,y1;
+ gint cx, cy;
+ gint index;
+
+ row = edit->row;
+ col = edit->view_col;
+
+ e_table_item_get_cell_geometry (item, &row, &col,
+ &x, &y, NULL, &area.height);
+
+ gnome_canvas_item_get_bounds (GNOME_CANVAS_ITEM (parent_item), &x1, &y1, NULL, NULL);
+
+ gnome_canvas_get_scroll_offsets (GNOME_CANVAS (GNOME_CANVAS_ITEM (parent_item)->canvas), &cx, &cy);
+
+ index = edit->selection_end + edit->preedit_pos;
+
+ pango_layout_get_cursor_pos (edit->layout,
+ index,
+ strong_pos ? &pango_strong_pos : NULL,
+ weak_pos ? &pango_weak_pos : NULL);
+
+ if (strong_pos) {
+ strong_pos->x = x + x1 - cx - edit->xofs_edit + pango_strong_pos.x / PANGO_SCALE;
+ strong_pos->y = y + y1 - cy - edit->yofs_edit + pango_strong_pos.y / PANGO_SCALE;
+ strong_pos->width = 0;
+ strong_pos->height = pango_strong_pos.height / PANGO_SCALE;
+ }
+
+ if (weak_pos) {
+ weak_pos->x = x + x1 - cx - edit->xofs_edit + pango_weak_pos.x / PANGO_SCALE;
+ weak_pos->y = y + y1 - cy - edit->yofs_edit + pango_weak_pos.y / PANGO_SCALE;
+ weak_pos->width = 0;
+ weak_pos->height = pango_weak_pos.height / PANGO_SCALE;
+ }
+}
+
+static void
+update_im_cursor_location (ECellTextView *tv)
+{
+ CellEdit *edit=tv->edit;
+ GdkRectangle area;
+
+ e_cell_text_get_cursor_locations (tv, &area, NULL);
+
+ gtk_im_context_set_cursor_location (edit->im_context, &area);
+}
+
+static void
e_cell_text_preedit_changed_cb (GtkIMContext *context,
ECellTextView *tv)
{
@@ -1871,10 +1936,12 @@
CellEdit *edit=tv->edit;
gtk_im_context_get_preedit_string (edit->im_context, &preedit_string,
NULL, &cursor_pos);
-
+
edit->preedit_length = strlen (preedit_string);
- cursor_pos = CLAMP (cursor_pos, 0, g_utf8_strlen (preedit_string, -1));
+ cursor_pos = CLAMP (cursor_pos, 0, g_utf8_strlen (preedit_string, -1));
+ edit->preedit_pos = g_utf8_offset_to_pointer (preedit_string, cursor_pos) - preedit_string;
g_free (preedit_string);
+
ect_queue_redraw (tv, edit->view_col, edit->row);
}

View file

@ -0,0 +1,110 @@
--- evolution-2.7.90/widgets/text/e-text.c.deleting-preedit-buffer 2006-07-26 10:16:02.000000000 -0400
+++ evolution-2.7.90/widgets/text/e-text.c 2006-07-26 10:25:29.000000000 -0400
@@ -284,7 +284,7 @@
PangoAttrList *preedit_attrs = NULL;
gchar *preedit_string = NULL;
GString *tmp_string = g_string_new (NULL);
- gint length = 0, cpos = 0, preedit_length = 0;
+ gint length = 0, cpos = 0;
gboolean new_attrs = FALSE;
if (text->layout == NULL || !GTK_IS_IM_CONTEXT (text->im_context))
@@ -295,19 +295,15 @@
g_string_prepend_len (tmp_string, text->text,length);
- if (text->preedit_len)
- gtk_im_context_get_preedit_string (text->im_context,
- &preedit_string, &preedit_attrs,
- NULL);
+ /* we came into this function only when text->preedit_len was not 0
+ so we can saftely fetch the preedit string */
+ gtk_im_context_get_preedit_string (text->im_context, &preedit_string, &preedit_attrs, NULL);
if (preedit_string && g_utf8_validate (preedit_string, -1, NULL))
- text->preedit_len = preedit_length = strlen (preedit_string);
- else
- text->preedit_len = preedit_length = 0;
-
- cpos = g_utf8_offset_to_pointer (text->text, text->selection_start) - text->text;
+ {
+ text->preedit_len = strlen (preedit_string);
+ cpos = g_utf8_offset_to_pointer (text->text, text->selection_start) - text->text;
- if (preedit_length) {
g_string_insert (tmp_string, cpos, preedit_string);
reset_layout_attrs (text);
@@ -320,15 +316,17 @@
pango_layout_set_text (text->layout, tmp_string->str, tmp_string->len);
- pango_attr_list_splice (attrs, preedit_attrs, cpos, preedit_length);
+ pango_attr_list_splice (attrs, preedit_attrs, cpos, text->preedit_len);
if (new_attrs) {
pango_layout_set_attributes (text->layout, attrs);
pango_attr_list_unref (attrs);
- }
+ }
update_im_cursor_position (text);
}
+ else
+ text->preedit_len = 0;
if (preedit_string)
g_free (preedit_string);
@@ -385,9 +383,12 @@
pango_attr_list_insert_before (attrs, attr);
}
}
+
pango_layout_set_attributes (text->layout, attrs);
+
if (attrs)
pango_attr_list_unref (attrs);
+
calc_height (text);
}
@@ -1510,9 +1511,14 @@
}
}
-
- if (text->im_context_signals_registered)
- insert_preedit_text (text);
+ /* Insert preedit text only when im_context signals are connected & text->preedit_len is not zero */
+ if (text->im_context_signals_registered && text->preedit_len)
+ insert_preedit_text (text);
+
+ /* Need to reset the layout to cleanly clear the preedit buffer
+ * when typing in CJK & using backspace on the preedit */
+ if(!text->preedit_len)
+ reset_layout (text);
if (!pango_layout_get_text (text->layout))
return;
@@ -2220,11 +2226,12 @@
*/
if (save_text && save_text->im_context) {
+ gtk_im_context_focus_out(save_text->im_context);
g_signal_handlers_disconnect_matched (save_text->im_context,
G_SIGNAL_MATCH_DATA,
0, 0, NULL,
NULL, save_text);
- save_text->im_context_signals_registered = FALSE;
+ save_text->im_context_signals_registered = FALSE;
reset_layout (save_text);
}
@@ -2240,6 +2247,7 @@
G_CALLBACK (e_text_delete_surrounding_cb), text);
text->im_context_signals_registered = TRUE;
}
+ gtk_im_context_focus_in(text->im_context);
}
start_editing (text);
text->show_cursor = FALSE; /* so we'll redraw and the cursor will be shown */

View file

@ -0,0 +1,83 @@
--- evolution-2.9.91/plugins/print-message/print-message.c.fix-indic-printing 2007-02-12 01:58:01.000000000 -0500
+++ evolution-2.9.91/plugins/print-message/print-message.c 2007-02-12 13:30:17.000000000 -0500
@@ -83,7 +83,7 @@
data->config = e_print_load_settings ();
data->preview = 0;
- data->msg = e_msg_composer_get_message (composer, 1);
+ data->msg = e_msg_composer_get_message_print (composer, 1);
dialog = (GtkDialog *)e_print_get_dialog_with_config (_("Print Message"), 0, data->config);
gtk_dialog_set_default_response(dialog, GTK_RESPONSE_OK);
e_dialog_set_transient_for ((GtkWindow *) dialog, (GtkWidget *) composer);
@@ -102,7 +102,7 @@
data->config = e_print_load_settings ();
data->preview = 0;
- data->msg = e_msg_composer_get_message (composer, 1);
+ data->msg = e_msg_composer_get_message_print (composer, 1);
print_response(NULL, GTK_RESPONSE_APPLY, data);
}
--- evolution-2.9.91/composer/e-msg-composer.h.fix-indic-printing 2007-01-22 10:23:06.000000000 -0500
+++ evolution-2.9.91/composer/e-msg-composer.h 2007-02-12 13:29:24.000000000 -0500
@@ -101,6 +101,8 @@
CamelMimePart *part);
CamelMimeMessage *e_msg_composer_get_message (EMsgComposer *composer,
gboolean save_html_object_data);
+CamelMimeMessage *e_msg_composer_get_message_print (EMsgComposer *composer,
+ gboolean save_html_object_data);
CamelMimeMessage *e_msg_composer_get_message_draft (EMsgComposer *composer);
void e_msg_composer_show_sig_file (EMsgComposer *composer);
gboolean e_msg_composer_get_send_html (EMsgComposer *composer);
--- evolution-2.9.91/composer/e-msg-composer.c.fix-indic-printing 2007-02-12 13:29:24.000000000 -0500
+++ evolution-2.9.91/composer/e-msg-composer.c 2007-02-12 13:29:24.000000000 -0500
@@ -5267,6 +5267,49 @@
}
CamelMimeMessage *
+e_msg_composer_get_message_print (EMsgComposer *composer, gboolean save_html_object_data)
+{
+ EMsgComposer *temp_composer;
+ CamelMimeMessage *msg;
+ GString *flags;
+
+ msg = build_message (composer, save_html_object_data);
+ temp_composer = e_msg_composer_new_with_message (msg);
+ camel_object_unref (msg);
+
+ /* build flags string */
+ flags = g_string_sized_new (128);
+ if (temp_composer->priv->send_html)
+ g_string_append (flags, "text/html");
+ else
+ g_string_append (flags, "text/plain");
+ if (temp_composer->priv->pgp_sign)
+ g_string_append (flags, ", pgp-sign");
+ if (temp_composer->priv->pgp_encrypt)
+ g_string_append (flags, ", pgp-encrypt");
+ if (temp_composer->priv->smime_sign)
+ g_string_append (flags, ", smime-sign");
+ if (temp_composer->priv->smime_encrypt)
+ g_string_append (flags, ", smime-encrypt");
+
+ /* override composer flags */
+ temp_composer->priv->send_html = TRUE;
+ temp_composer->priv->pgp_sign = FALSE;
+ temp_composer->priv->pgp_encrypt = FALSE;
+ temp_composer->priv->smime_sign = FALSE;
+ temp_composer->priv->smime_encrypt = FALSE;
+
+ msg = build_message (temp_composer, save_html_object_data);
+ camel_medium_set_header (CAMEL_MEDIUM (msg),
+ "X-Evolution-Format", flags->str);
+
+ e_msg_composer_delete (temp_composer);
+ g_string_free (flags, TRUE);
+
+ return msg;
+}
+
+CamelMimeMessage *
e_msg_composer_get_message_draft (EMsgComposer *composer)
{
CamelMimeMessage *msg;

View file

@ -0,0 +1,117 @@
--- evolution-2.8.0/widgets/text/e-text.c.indic-cursor-movement 2006-09-13 14:53:39.000000000 -0400
+++ evolution-2.8.0/widgets/text/e-text.c 2006-09-13 14:53:48.000000000 -0400
@@ -2876,6 +2876,76 @@
}
}
+
+
+/* direction = TRUE (move forward), FALSE (move backward)
+ Any error shall return length(text->text) or 0 or text->selection_end (as deemed fit) */
+static int
+_get_updated_position (EText *text, gboolean direction)
+{
+ PangoLogAttr *log_attrs = NULL;
+ gint n_attrs;
+ char *p = NULL;
+ gint new_pos = 0;
+ gint length = 0;
+
+ /* Basic sanity test, return whatever position we are currently at. */
+ g_return_val_if_fail (text->layout != NULL, text->selection_end);
+
+ length = g_utf8_strlen (text->text, -1);
+
+ /* length checks to make sure we are not wandering off into nonexistant memory... */
+ if((text->selection_end >= length) && (TRUE == direction)) /* forward */
+ return length;
+ /* checking for -ve value wont hurt! */
+ if((text->selection_end <= 0) && (FALSE == direction)) /* backward */
+ return 0;
+
+ /* check for validness of full text->text */
+ if(!g_utf8_validate(text->text, -1, NULL))
+ return text->selection_end;
+
+ /* get layout's PangoLogAttr to facilitate moving when moving across grapheme cluster as in indic langs */
+ pango_layout_get_log_attrs (text->layout, &log_attrs, &n_attrs);
+
+ /* Fetch the current char index in the line & keep moving
+ forward until we can display cursor */
+ p = g_utf8_offset_to_pointer (text->text, text->selection_end);
+
+ new_pos = text->selection_end;
+ while(1)
+ {
+ /* check before moving forward/backwards if we have more chars to move or not */
+ if(TRUE == direction)
+ p = g_utf8_next_char (p);
+ else
+ p = g_utf8_prev_char (p);
+
+ /* validate the new string & return with original position if check fails */
+ if(!g_utf8_validate (p, -1, NULL))
+ break; /* will return old value of new_pos */
+
+ new_pos = g_utf8_pointer_to_offset (text->text, p);
+
+ /* if is_cursor_position is set, cursor can appear in front of character.
+ i.e. this is a grapheme boundary AND make some sanity checks */
+ if((new_pos >=0) && (new_pos < n_attrs) && (log_attrs[new_pos].is_cursor_position))
+ break;
+ else if((new_pos < 0) || (new_pos >= n_attrs))
+ {
+ new_pos = text->selection_end;
+ break;
+ }
+ }
+
+ if(log_attrs)
+ g_free(log_attrs);
+
+ return new_pos;
+}
+
+
+
static int
_get_position(EText *text, ETextEventProcessorCommand *command)
{
@@ -2951,15 +3021,14 @@
if (text->selection_end >= length)
new_pos = length;
else
- new_pos = text->selection_end + 1;
-
+ new_pos = _get_updated_position(text, TRUE); /* get updated position to display cursor */
+
break;
case E_TEP_BACKWARD_CHARACTER:
new_pos = 0;
- if (text->selection_end >= 1) {
- new_pos = text->selection_end - 1;
- }
+ if (text->selection_end >= 1)
+ new_pos = _get_updated_position(text, FALSE); /* get updated position to display cursor */
break;
@@ -3341,6 +3410,7 @@
if (!text->layout)
create_layout (text);
+ /* We move cursor only if scroll is TRUE */
if (scroll && !text->button_down) {
/* XXX do we really need the @trailing logic here? if
we don't we can scrap the loop and just use
@@ -3349,7 +3419,9 @@
int selection_index;
PangoLayoutIter *iter = pango_layout_get_iter (text->layout);
+ /* check if we are using selection_start or selection_end for moving? */
selection_index = use_start ? text->selection_start : text->selection_end;
+
/* convert to a byte index */
selection_index = g_utf8_offset_to_pointer (text->text, selection_index) - text->text;

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,91 @@
--- evolution-2.9.1/calendar/gui/e-day-view.c.first-ascii 2006-11-06 11:25:23.000000000 -0500
+++ evolution-2.9.1/calendar/gui/e-day-view.c 2006-11-06 11:34:32.000000000 -0500
@@ -333,7 +333,7 @@
static void e_day_view_start_editing_event (EDayView *day_view,
gint day,
gint event_num,
- gchar *initial_text);
+ GdkEventKey *key_event);
static void e_day_view_stop_editing_event (EDayView *day_view);
static gboolean e_day_view_text_keypress (GnomeCanvasItem *item,
guint keyval,
@@ -6012,7 +6012,6 @@
ECalModel *model;
ECalComponent *comp;
gint day, event_num;
- gchar *initial_text;
guint keyval;
gboolean stop_emission;
time_t dtstart, dtend;
@@ -6153,15 +6152,12 @@
/* We only want to start an edit with a return key or a simple
character. */
- if (keyval == GDK_Return) {
- initial_text = NULL;
- } else if (((keyval >= 0x20) && (keyval <= 0xFF)
- && (event->state & (GDK_CONTROL_MASK | GDK_MOD1_MASK)))
- || (event->length == 0)
- || (keyval == GDK_Tab)) {
+ if ((keyval != GDK_Return) &&
+ (((keyval >= 0x20) && (keyval <= 0xFF)
+ && (event->state & (GDK_CONTROL_MASK | GDK_MOD1_MASK)))
+ || (event->length == 0)
+ || (keyval == GDK_Tab)))
return FALSE;
- } else
- initial_text = e_utf8_from_gtk_event_key (widget, event->keyval, event->string);
/* Add a new event covering the selected range */
icalcomp = e_cal_model_create_component_with_defaults (model);
@@ -6207,15 +6203,11 @@
gtk_widget_queue_draw (day_view->main_canvas);
if (e_day_view_find_event_from_uid (day_view, ecal, uid, NULL, &day, &event_num)) {
- e_day_view_start_editing_event (day_view, day, event_num,
- initial_text);
+ e_day_view_start_editing_event (day_view, day, event_num, event);
} else {
g_warning ("Couldn't find event to start editing.\n");
}
- if (initial_text)
- g_free (initial_text);
-
g_object_unref (comp);
return TRUE;
@@ -6897,7 +6889,7 @@
e_day_view_start_editing_event (EDayView *day_view,
gint day,
gint event_num,
- gchar *initial_text)
+ GdkEventKey *key_event)
{
EDayViewEvent *event;
ETextEventProcessor *event_processor = NULL;
@@ -6937,10 +6929,20 @@
rid of the start and end times. */
e_canvas_item_grab_focus (event->canvas_item, TRUE);
- if (initial_text) {
- gnome_canvas_item_set (event->canvas_item,
- "text", initial_text,
- NULL);
+ if (key_event) {
+ if (gtk_im_context_filter_keypress (((EText *)(event->canvas_item))->im_context, key_event)) {
+ ((EText *)(event->canvas_item))->need_im_reset = TRUE;
+ }
+ else {
+ char *initial_text;
+
+ initial_text = e_utf8_from_gtk_event_key (GTK_WIDGET (day_view), key_event->keyval, key_event->string);
+ gnome_canvas_item_set (event->canvas_item,
+ "text", initial_text,
+ NULL);
+ if (initial_text)
+ g_free (initial_text);
+ }
}
/* Try to move the cursor to the end of the text. */

View file

@ -0,0 +1,12 @@
--- evolution-2.9.1/calendar/gui/e-day-view.c.im-context-reset 2006-11-06 10:14:26.000000000 -0500
+++ evolution-2.9.1/calendar/gui/e-day-view.c 2006-11-06 10:15:39.000000000 -0500
@@ -6928,6 +6928,9 @@
if (!event->canvas_item)
return;
+ /* Reset IM context. */
+ gtk_im_context_reset (E_TEXT (event->canvas_item)->im_context);
+
/* We must grab the focus before setting the initial text, since
grabbing the focus will result in a call to
e_day_view_on_editing_started(), which will reset the text to get

View file

@ -0,0 +1,299 @@
--- evolution-2.9.1/mail/message-list.c.ememory 2006-10-25 11:11:34.000000000 -0400
+++ evolution-2.9.1/mail/message-list.c 2006-10-25 11:15:12.000000000 -0400
@@ -412,70 +412,28 @@
return info;
}
-static const char *
-get_normalised_string (MessageList *message_list, CamelMessageInfo *info, int col)
+static const gchar *
+get_normalised_string (MessageList *message_list, const gchar *string)
{
- const char *string, *str;
- char *normalised;
- EPoolv *poolv;
- int index;
-
- switch (col) {
- case COL_SUBJECT_NORM:
- string = camel_message_info_subject (info);
- index = NORMALISED_SUBJECT;
- break;
- case COL_FROM_NORM:
- string = camel_message_info_from (info);
- index = NORMALISED_FROM;
- break;
- case COL_TO_NORM:
- string = camel_message_info_to (info);
- index = NORMALISED_TO;
- break;
- default:
- string = NULL;
- index = NORMALISED_LAST;
- g_assert_not_reached ();
- }
-
- /* slight optimisation */
- if (string == NULL || string[0] == '\0')
+ GHashTable *hash_table = message_list->normalised_hash;
+ GStringChunk *string_chunk = message_list->string_chunk;
+ gchar *collation_key, *temp;
+
+ if (string == NULL || *string == '\0')
return "";
-
- poolv = g_hash_table_lookup (message_list->normalised_hash, camel_message_info_uid (info));
- if (poolv == NULL) {
- poolv = e_poolv_new (NORMALISED_LAST);
- g_hash_table_insert (message_list->normalised_hash, (char *) camel_message_info_uid (info), poolv);
- } else {
- str = e_poolv_get (poolv, index);
- if (*str)
- return str;
- }
-
- if (col == COL_SUBJECT_NORM) {
- const unsigned char *subject;
-
- subject = (const unsigned char *) string;
- while (!g_ascii_strncasecmp (subject, "Re:", 3)) {
- subject += 3;
-
- /* jump over any spaces */
- while (*subject && isspace ((int) *subject))
- subject++;
- }
-
- /* jump over any spaces */
- while (*subject && isspace ((int) *subject))
- subject++;
-
- string = (const char *) subject;
- }
-
- normalised = g_utf8_collate_key (string, -1);
- e_poolv_set (poolv, index, normalised, TRUE);
-
- return e_poolv_get (poolv, index);
+
+ collation_key = g_hash_table_lookup (hash_table, string);
+ if (collation_key != NULL)
+ return collation_key;
+
+ temp = g_utf8_collate_key (string, -1);
+ collation_key = g_string_chunk_insert_const (string_chunk, temp);
+ g_free (temp);
+
+ temp = g_string_chunk_insert_const (string_chunk, string);
+ g_hash_table_insert (hash_table, temp, collation_key);
+
+ return collation_key;
}
static void
@@ -1283,12 +1241,23 @@
str = camel_message_info_from (msg_info);
return (void *)(str ? str : "");
case COL_FROM_NORM:
- return (void *) get_normalised_string (message_list, msg_info, col);
+ str = camel_message_info_from (msg_info);
+ return (void *) get_normalised_string (message_list, str);
case COL_SUBJECT:
str = camel_message_info_subject (msg_info);
return (void *)(str ? str : "");
case COL_SUBJECT_NORM:
- return (void *) get_normalised_string (message_list, msg_info, col);
+ str = camel_message_info_subject (msg_info);
+ while (str != NULL && *str != '\0') {
+ /* skip over spaces and reply prefixes */
+ if (g_ascii_strncasecmp (str, "Re:", 3) == 0)
+ str += 3;
+ else if (g_ascii_isspace (*str))
+ str++;
+ else
+ break;
+ }
+ return (void *) get_normalised_string (message_list, str);
case COL_SENT: {
ETreePath child;
@@ -1312,7 +1281,8 @@
str = camel_message_info_to (msg_info);
return (void *)(str ? str : "");
case COL_TO_NORM:
- return (void *) get_normalised_string (message_list, msg_info, col);
+ str = camel_message_info_to (msg_info);
+ return (void *) get_normalised_string (message_list, str);
case COL_SIZE:
return GINT_TO_POINTER (camel_message_info_size(msg_info));
case COL_DELETED:
@@ -2023,9 +1993,10 @@
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (message_list), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
message_list->normalised_hash = g_hash_table_new (g_str_hash, g_str_equal);
+ message_list->string_chunk = g_string_chunk_new (1024);
message_list->hidden = NULL;
- message_list->hidden_pool = NULL;
+ message_list->hidden_string_chunk = NULL;
message_list->hide_before = ML_HIDE_NONE_START;
message_list->hide_after = ML_HIDE_NONE_END;
@@ -2054,14 +2025,6 @@
g_signal_connect (((GtkScrolledWindow *) message_list)->vscrollbar, "value-changed", G_CALLBACK (ml_scrolled), message_list);
}
-static gboolean
-normalised_free (gpointer key, gpointer value, gpointer user_data)
-{
- e_poolv_destroy (value);
-
- return TRUE;
-}
-
static void
message_list_destroy(GtkObject *object)
{
@@ -2127,17 +2090,17 @@
MessageList *message_list = MESSAGE_LIST (object);
struct _MessageListPrivate *p = message_list->priv;
- g_hash_table_foreach (message_list->normalised_hash, (GHFunc) normalised_free, NULL);
g_hash_table_destroy (message_list->normalised_hash);
+ g_string_chunk_free (message_list->string_chunk);
if (message_list->thread_tree)
camel_folder_thread_messages_unref(message_list->thread_tree);
if (message_list->hidden) {
g_hash_table_destroy(message_list->hidden);
- e_mempool_destroy(message_list->hidden_pool);
+ g_string_chunk_free(message_list->hidden_string_chunk);
message_list->hidden = NULL;
- message_list->hidden_pool = NULL;
+ message_list->hidden_string_chunk = NULL;
}
g_free(message_list->search);
@@ -2940,17 +2903,6 @@
d(printf("changed = %d added = %d removed = %d\n",
changes->uid_changed->len, changes->uid_added->len, changes->uid_removed->len));
- for (i = 0; i < changes->uid_removed->len; i++) {
- /* uncache the normalised strings for these uids */
- EPoolv *poolv;
-
- poolv = g_hash_table_lookup (ml->normalised_hash, changes->uid_removed->pdata[i]);
- if (poolv != NULL) {
- g_hash_table_remove (ml->normalised_hash, changes->uid_removed->pdata[i]);
- e_poolv_destroy (poolv);
- }
- }
-
/* check if the hidden state has changed, if so modify accordingly, then regenerate */
if (ml->hidejunk || ml->hidedeleted)
mail_folder_hide_by_flag (folder, ml, &changes, (ml->hidejunk ? CAMEL_MESSAGE_JUNK : 0) | (ml->hidedeleted ? CAMEL_MESSAGE_DELETED : 0));
@@ -3028,7 +2980,11 @@
}
/* reset the normalised sort performance hack */
- g_hash_table_foreach_remove (message_list->normalised_hash, normalised_free, NULL);
+ /* XXX GLib 2.12 added g_hash_table_remove_all() */
+ g_hash_table_destroy (message_list->normalised_hash);
+ message_list->normalised_hash = g_hash_table_new (g_str_hash, g_str_equal);
+ g_string_chunk_free (message_list->string_chunk);
+ message_list->string_chunk = g_string_chunk_new (1024);
mail_regen_cancel(message_list);
@@ -3479,14 +3435,14 @@
MESSAGE_LIST_LOCK (ml, hide_lock);
if (ml->hidden == NULL) {
ml->hidden = g_hash_table_new (g_str_hash, g_str_equal);
- ml->hidden_pool = e_mempool_new (512, 256, E_MEMPOOL_ALIGN_BYTE);
+ ml->hidden_string_chunk = g_string_chunk_new (512);
}
- uid = e_mempool_strdup (ml->hidden_pool, uids->pdata[i]);
+ uid = g_string_chunk_insert (ml->hidden_string_chunk, uids->pdata[i]);
g_hash_table_insert (ml->hidden, uid, uid);
for ( ; i < uids->len; i++) {
if (g_hash_table_lookup (ml->uid_nodemap, uids->pdata[i])) {
- uid = e_mempool_strdup (ml->hidden_pool, uids->pdata[i]);
+ uid = g_string_chunk_insert (ml->hidden_string_chunk, uids->pdata[i]);
g_hash_table_insert (ml->hidden, uid, uid);
}
}
@@ -3507,9 +3463,9 @@
MESSAGE_LIST_LOCK (ml, hide_lock);
if (ml->hidden) {
g_hash_table_destroy (ml->hidden);
- e_mempool_destroy (ml->hidden_pool);
+ g_string_chunk_free (ml->hidden_string_chunk);
ml->hidden = NULL;
- ml->hidden_pool = NULL;
+ ml->hidden_string_chunk = NULL;
}
ml->hide_before = ML_HIDE_NONE_START;
ml->hide_after = ML_HIDE_NONE_END;
@@ -3545,9 +3501,9 @@
MESSAGE_LIST_LOCK(ml, hide_lock);
if (ml->hidden) {
g_hash_table_destroy (ml->hidden);
- e_mempool_destroy (ml->hidden_pool);
+ g_string_chunk_free (ml->hidden_string_chunk);
ml->hidden = NULL;
- ml->hidden_pool = NULL;
+ ml->hidden_string_chunk = NULL;
}
ml->hide_before = ML_HIDE_NONE_START;
ml->hide_after = ML_HIDE_NONE_END;
@@ -3558,7 +3514,7 @@
camel_file_util_decode_fixed_int32 (in, &version);
if (version == HIDE_STATE_VERSION) {
ml->hidden = g_hash_table_new(g_str_hash, g_str_equal);
- ml->hidden_pool = e_mempool_new(512, 256, E_MEMPOOL_ALIGN_BYTE);
+ ml->hidden_string_chunk = g_string_chunk_new(512);
camel_file_util_decode_fixed_int32 (in, &lower);
ml->hide_before = lower;
camel_file_util_decode_fixed_int32 (in, &upper);
@@ -3567,7 +3523,7 @@
char *olduid, *uid;
if (camel_file_util_decode_string (in, &olduid) != -1) {
- uid = e_mempool_strdup(ml->hidden_pool, olduid);
+ uid = g_string_chunk_insert(ml->hidden_string_chunk, olduid);
g_free (olduid);
g_hash_table_insert(ml->hidden, uid, uid);
}
@@ -3717,12 +3673,12 @@
if (m->ml->hidden == NULL) {
m->ml->hidden = g_hash_table_new (g_str_hash, g_str_equal);
- m->ml->hidden_pool = e_mempool_new (512, 256, E_MEMPOOL_ALIGN_BYTE);
+ m->ml->hidden_string_chunk = g_string_chunk_new (512);
}
for (i = 0; i < uidnew->len; i++) {
if (g_hash_table_lookup (m->ml->hidden, uidnew->pdata[i]) == 0) {
- char *uid = e_mempool_strdup (m->ml->hidden_pool, uidnew->pdata[i]);
+ char *uid = g_string_chunk_insert (m->ml->hidden_string_chunk, uidnew->pdata[i]);
g_hash_table_insert (m->ml->hidden, uid, uid);
}
}
--- evolution-2.9.1/mail/message-list.h.ememory 2006-09-28 04:56:51.000000000 -0400
+++ evolution-2.9.1/mail/message-list.h 2006-10-25 11:15:12.000000000 -0400
@@ -102,11 +102,12 @@
GHashTable *uid_nodemap; /* uid (from info) -> tree node mapping */
GHashTable *normalised_hash;
+ GStringChunk *string_chunk;
/* UID's to hide. Keys in the mempool */
/* IMPORTANT: You MUST have obtained the hide lock, to operate on this data */
GHashTable *hidden;
- struct _EMemPool *hidden_pool;
+ GStringChunk *hidden_string_chunk;
int hide_unhidden; /* total length, before hiding */
int hide_before, hide_after; /* hide ranges of messages */

View file

@ -0,0 +1,153 @@
--- evolution-2.9.2/mail/em-mailer-prefs.c.gtk-font-button 2006-08-09 04:43:27.000000000 -0400
+++ evolution-2.9.2/mail/em-mailer-prefs.c 2006-11-11 08:31:53.000000000 -0500
@@ -36,8 +36,8 @@
#include <bonobo/bonobo-generic-factory.h>
#include <libgnomeui/gnome-color-picker.h>
-#include <libgnomeui/gnome-font-picker.h>
#include <gtk/gtkfilechooserbutton.h>
+#include <gtk/gtkfontbutton.h>
#include <glade/glade.h>
@@ -535,12 +535,14 @@
}
static void
-font_changed (GnomeFontPicker *fontpicker, const char *arg1, EMMailerPrefs *prefs)
+font_changed (GtkFontButton *font_button, EMMailerPrefs *prefs)
{
- const char *key;
+ const gchar *key;
+ const gchar *font_name;
- key = g_object_get_data ((GObject *) fontpicker, "key");
- gconf_client_set_string (prefs->gconf, key, gnome_font_picker_get_font_name (fontpicker), NULL);
+ key = g_object_get_data (G_OBJECT (font_button), "key");
+ font_name = gtk_font_button_get_font_name (font_button);
+ gconf_client_set_string (prefs->gconf, key, font_name, NULL);
}
static void
@@ -841,8 +843,8 @@
/* Mail Fonts */
font = gconf_client_get_string (prefs->gconf, "/apps/evolution/mail/display/fonts/monospace", NULL);
- prefs->font_fixed = GNOME_FONT_PICKER (glade_xml_get_widget (gui, "FontFixed"));
- gnome_font_picker_set_font_name (prefs->font_fixed, font);
+ prefs->font_fixed = GTK_FONT_BUTTON (glade_xml_get_widget (gui, "FontFixed"));
+ gtk_font_button_set_font_name (prefs->font_fixed, font);
g_free (font);
g_object_set_data ((GObject *) prefs->font_fixed, "key", "/apps/evolution/mail/display/fonts/monospace");
g_signal_connect (prefs->font_fixed, "font-set", G_CALLBACK (font_changed), prefs);
@@ -850,8 +852,8 @@
gtk_widget_set_sensitive ((GtkWidget *) prefs->font_fixed, FALSE);
font = gconf_client_get_string (prefs->gconf, "/apps/evolution/mail/display/fonts/variable", NULL);
- prefs->font_variable = GNOME_FONT_PICKER (glade_xml_get_widget (gui, "FontVariable"));
- gnome_font_picker_set_font_name (prefs->font_variable, font);
+ prefs->font_variable = GTK_FONT_BUTTON (glade_xml_get_widget (gui, "FontVariable"));
+ gtk_font_button_set_font_name (prefs->font_variable, font);
g_free (font);
g_object_set_data ((GObject *) prefs->font_variable, "key", "/apps/evolution/mail/display/fonts/variable");
g_signal_connect (prefs->font_variable, "font-set", G_CALLBACK (font_changed), prefs);
--- evolution-2.9.2/mail/em-mailer-prefs.h.gtk-font-button 2006-05-25 00:59:47.000000000 -0400
+++ evolution-2.9.2/mail/em-mailer-prefs.h 2006-11-11 08:31:53.000000000 -0500
@@ -39,7 +39,7 @@
struct _GladeXML;
struct _GnomeColorPicker;
struct _GtkFileChooserbutton;
-struct _GnomeFontPicker;
+struct _GtkFontButton;
struct _GConfClient;
struct _GtkButton;
struct _GtkTreeView;
@@ -92,8 +92,8 @@
struct _GtkFileChooserButton *notify_sound_file;
/* HTML Mail tab */
- struct _GnomeFontPicker *font_variable;
- struct _GnomeFontPicker *font_fixed;
+ struct _GtkFontButton *font_variable;
+ struct _GtkFontButton *font_fixed;
struct _GtkToggleButton *font_share;
/* Loading Images */
--- evolution-2.9.2/mail/mail-config.glade.gtk-font-button 2006-07-19 11:26:27.000000000 -0400
+++ evolution-2.9.2/mail/mail-config.glade 2006-11-11 08:31:53.000000000 -0500
@@ -4700,14 +4700,14 @@
</child>
<child>
- <widget class="GnomeFontPicker" id="FontFixed">
+ <widget class="GtkFontButton" id="FontFixed">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="title" translatable="yes">Select HTML fixed width font</property>
- <property name="mode">GNOME_FONT_PICKER_MODE_FONT_INFO</property>
+ <property name="show_style">True</property>
<property name="show_size">True</property>
- <property name="use_font_in_label">False</property>
- <property name="label_font_size">14</property>
+ <property name="use_font">False</property>
+ <property name="use_size">False</property>
<property name="focus_on_click">True</property>
<signal name="font_set" handler="changed"/>
</widget>
@@ -4722,14 +4722,14 @@
</child>
<child>
- <widget class="GnomeFontPicker" id="FontVariable">
+ <widget class="GtkFontButton" id="FontVariable">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="title" translatable="yes">Select HTML variable width font</property>
- <property name="mode">GNOME_FONT_PICKER_MODE_FONT_INFO</property>
+ <property name="show_style">True</property>
<property name="show_size">True</property>
- <property name="use_font_in_label">False</property>
- <property name="label_font_size">14</property>
+ <property name="use_font">False</property>
+ <property name="use_size">False</property>
<property name="focus_on_click">True</property>
<signal name="font_set" handler="changed"/>
</widget>
@@ -8484,14 +8484,14 @@
</child>
<child>
- <widget class="GnomeFontPicker" id="print_fixed">
+ <widget class="GtkFontButton" id="print_fixed">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="title" translatable="yes">Select HTML fixed width font for printing</property>
- <property name="mode">GNOME_FONT_PICKER_MODE_FONT_INFO</property>
+ <property name="show_style">True</property>
<property name="show_size">True</property>
- <property name="use_font_in_label">False</property>
- <property name="label_font_size">14</property>
+ <property name="use_font">False</property>
+ <property name="use_size">False</property>
<property name="focus_on_click">True</property>
<signal name="font_set" handler="changed"/>
</widget>
@@ -8506,14 +8506,14 @@
</child>
<child>
- <widget class="GnomeFontPicker" id="print_variable">
+ <widget class="GtkFontButton" id="print_variable">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="title" translatable="yes">Select HTML variable width font for printing</property>
- <property name="mode">GNOME_FONT_PICKER_MODE_FONT_INFO</property>
+ <property name="show_style">True</property>
<property name="show_size">True</property>
- <property name="use_font_in_label">False</property>
- <property name="label_font_size">14</property>
+ <property name="use_font">False</property>
+ <property name="use_size">False</property>
<property name="focus_on_click">True</property>
<signal name="font_set" handler="changed"/>
</widget>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,86 @@
--- evolution-2.9.3/calendar/gui/e-meeting-list-view.c.meeting-list-view 2006-12-11 23:13:47.000000000 -0500
+++ evolution-2.9.3/calendar/gui/e-meeting-list-view.c 2006-12-11 23:14:17.000000000 -0500
@@ -623,18 +623,45 @@
}
+void
+attendee_added_cb (EMeetingStore *store, GtkTreePath *path,
+ GtkTreeIter *iter, EMeetingListView *view)
+{
+ EMeetingAttendee *attendee;
+ gint row;
+
+ /* Add the new attendee to the name selector. */
+ row = gtk_tree_path_get_indices (path) [0];
+ attendee = e_meeting_store_find_attendee_at_row (store, row);
+ e_meeting_list_view_add_attendee_to_name_selector (view, attendee);
+}
+
+void
+attendee_deleted_cb (EMeetingStore *store, GtkTreePath *path,
+ EMeetingListView *view)
+{
+ EMeetingAttendee *attendee;
+ gint row;
+
+ /* Remove the old attendee from the name selector. */
+ row = gtk_tree_path_get_indices (path) [0];
+ attendee = e_meeting_store_find_attendee_at_row (store, row);
+ e_meeting_list_view_remove_attendee_from_name_selector (view, attendee);
+}
EMeetingListView *
e_meeting_list_view_new (EMeetingStore *store)
{
- EMeetingListView *view = g_object_new (E_TYPE_MEETING_LIST_VIEW, NULL);
+ EMeetingListView *view;
GtkTreeSelection *selection;
- if (view) {
- view->priv->store = store;
- gtk_tree_view_set_model (GTK_TREE_VIEW (view), GTK_TREE_MODEL (store));
- build_table (view);
- }
+ view = g_object_new (E_TYPE_MEETING_LIST_VIEW, NULL);
+ view->priv->store = store;
+ gtk_tree_view_set_model (GTK_TREE_VIEW (view), GTK_TREE_MODEL (store));
+ build_table (view);
+
+ g_signal_connect (store, "row-inserted", G_CALLBACK (attendee_added_cb), view);
+ g_signal_connect (store, "row-deleted", G_CALLBACK (attendee_deleted_cb), view);
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(view));
g_signal_connect (selection, "changed", G_CALLBACK (row_activated_cb), view);
--- evolution-2.9.3/calendar/gui/e-meeting-store.c.meeting-list-view 2006-12-04 10:44:42.000000000 -0500
+++ evolution-2.9.3/calendar/gui/e-meeting-store.c 2006-12-11 23:14:17.000000000 -0500
@@ -794,14 +794,13 @@
}
if (row != -1) {
-
- g_ptr_array_remove_index (store->priv->attendees, row);
- g_object_unref (attendee);
-
path = gtk_tree_path_new ();
gtk_tree_path_append_index (path, row);
gtk_tree_model_row_deleted (GTK_TREE_MODEL (store), path);
gtk_tree_path_free (path);
+
+ g_ptr_array_remove_index (store->priv->attendees, row);
+ g_object_unref (attendee);
}
}
@@ -815,10 +814,10 @@
for (i = 0; i < store->priv->attendees->len; i++) {
EMeetingAttendee *attendee = g_ptr_array_index (store->priv->attendees, i);
- g_object_unref (attendee);
gtk_tree_model_row_deleted (GTK_TREE_MODEL (store), path);
gtk_tree_path_next (path);
+ g_object_unref (attendee);
}
g_ptr_array_set_size (store->priv->attendees, 0);

View file

@ -0,0 +1,19 @@
--- evolution-2.9.3/mail/mail-config.glade.source-path-entry 2006-12-08 20:15:16.000000000 -0500
+++ evolution-2.9.3/mail/mail-config.glade 2006-12-08 20:16:13.000000000 -0500
@@ -1343,7 +1343,7 @@
<widget class="GtkFileChooserButton" id="source_path_entry">
<property name="visible">True</property>
<property name="title" translatable="yes">Mailbox location</property>
- <property name="action">GTK_FILE_CHOOSER_ACTION_OPEN</property>
+ <property name="action">GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER</property>
<property name="local_only">True</property>
<property name="show_hidden">False</property>
<property name="do_overwrite_confirmation">False</property>
@@ -1354,7 +1354,6 @@
<property name="right_attach">2</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
- <property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>

View file

@ -0,0 +1,63 @@
--- evolution-2.9.3/mail/em-folder-properties.c.unread-messages 2006-12-09 09:00:08.000000000 -0500
+++ evolution-2.9.3/mail/em-folder-properties.c 2006-12-09 09:00:09.000000000 -0500
@@ -145,27 +145,27 @@
gtk_widget_show (table);
gtk_box_pack_start ((GtkBox *) parent, table, TRUE, TRUE, 0);
- /* TODO: can this be done in a loop? */
/* to be on the safe side, ngettext is used here, see e.g. comment #3 at bug 272567 */
- label = gtk_label_new (ngettext ("Total messages:", "Total messages:", prop_data->total));
+ label = gtk_label_new (ngettext ("Unread messages:", "Unread messages:", prop_data->unread));
gtk_widget_show (label);
gtk_misc_set_alignment ((GtkMisc *) label, 0.0, 0.5);
gtk_table_attach ((GtkTable *) table, label, 0, 1, row, row+1, GTK_FILL, 0, 0, 0);
- sprintf(countstr, "%d", prop_data->total);
+ sprintf(countstr, "%d", prop_data->unread);
label = gtk_label_new (countstr);
gtk_widget_show (label);
gtk_misc_set_alignment ((GtkMisc *) label, 1.0, 0.5);
gtk_table_attach ((GtkTable *) table, label, 1, 2, row, row+1, GTK_FILL | GTK_EXPAND, 0, 0, 0);
row++;
+ /* TODO: can this be done in a loop? */
/* to be on the safe side, ngettext is used here, see e.g. comment #3 at bug 272567 */
- label = gtk_label_new (ngettext ("Unread messages:", "Unread messages:", prop_data->unread));
+ label = gtk_label_new (ngettext ("Total messages:", "Total messages:", prop_data->total));
gtk_widget_show (label);
gtk_misc_set_alignment ((GtkMisc *) label, 0.0, 0.5);
gtk_table_attach ((GtkTable *) table, label, 0, 1, row, row+1, GTK_FILL, 0, 0, 0);
- sprintf(countstr, "%d", prop_data->unread);
+ sprintf(countstr, "%d", prop_data->total);
label = gtk_label_new (countstr);
gtk_widget_show (label);
gtk_misc_set_alignment ((GtkMisc *) label, 1.0, 0.5);
--- evolution-2.9.3/mail/mail-component.c.unread-messages 2006-12-09 09:00:08.000000000 -0500
+++ evolution-2.9.3/mail/mail-component.c 2006-12-09 09:00:09.000000000 -0500
@@ -544,6 +544,9 @@
|| g_ascii_strcasecmp(emfv->folder->full_name, ".") == 0)
bits |= 8;
+ if (selected->len > 1)
+ g_string_append_printf(tmp, ngettext ("%d selected, ", "%d selected, ", selected->len), selected->len);
+
if (bits == 1)
g_string_append_printf(tmp, ngettext ("%d draft", "%d drafts", visible), visible);
else if (bits == 2)
@@ -553,13 +556,11 @@
else {
if (!emfv->hide_deleted)
visible += deleted;
+ if (unread && selected->len <= 1)
+ g_string_append_printf(tmp, ngettext ("%d unread, ", "%d unread, ", unread), unread);
g_string_append_printf(tmp, ngettext ("%d total", "%d total", visible), visible);
- if (unread && selected->len <=1)
- g_string_append_printf(tmp, ngettext (", %d unread", ", %d unread", unread), unread);
}
- if (selected->len > 1)
- g_string_append_printf(tmp, ngettext (", %d selected", ", %d selected", selected->len), selected->len);
message_list_free_uids(emfv->list, selected);
}

View file

@ -0,0 +1,46 @@
--- evolution-2.9.3/mail/mail-ops.c.view-attachment-uri 2006-12-06 10:26:24.000000000 -0500
+++ evolution-2.9.3/mail/mail-ops.c 2006-12-06 11:16:46.000000000 -0500
@@ -2089,21 +2089,23 @@
save_part_save (struct _mail_msg *mm)
{
struct _save_part_msg *m = (struct _save_part_msg *)mm;
+ mode_t mode = S_IRUSR | S_IRGRP | S_IROTH;
+ int flags = O_WRONLY | O_CREAT | O_TRUNC;
CamelDataWrapper *content;
CamelStream *stream;
-
- if(!m->readonly){
- if (!(stream = camel_stream_vfs_new_with_uri (m->path, O_WRONLY | O_CREAT | O_TRUNC, 0644))) {
- camel_exception_setv (&mm->ex, CAMEL_EXCEPTION_SYSTEM,
- _("Cannot create output file: %s:\n %s"),
- m->path, g_strerror (errno));
- return;
- }
- } else if (!(stream = camel_stream_vfs_new_with_uri (m->path, O_WRONLY | O_CREAT | O_TRUNC, 0444))) {
+ gchar *uri;
+
+ uri = g_filename_to_uri (m->path, NULL, NULL);
+
+ if (!m->readonly)
+ mode |= S_IWUSR;
+
+ stream = camel_stream_vfs_new_with_uri (uri, flags, mode);
+ if (stream == NULL) {
camel_exception_setv (&mm->ex, CAMEL_EXCEPTION_SYSTEM,
_("Cannot create output file: %s:\n %s"),
m->path, g_strerror (errno));
- return;
+ goto exit;
}
content = camel_medium_get_content_object (CAMEL_MEDIUM (m->part));
@@ -2115,6 +2117,9 @@
g_strerror (errno));
camel_object_unref (stream);
+
+exit:
+ g_free (uri);
}
static void

View file

@ -0,0 +1,11 @@
--- evolution-2.9.4/mail/em-format-html.c.view-message-source 2006-12-20 10:51:00.000000000 -0500
+++ evolution-2.9.4/mail/em-format-html.c 2006-12-21 10:08:02.000000000 -0500
@@ -1872,7 +1872,7 @@
filtered_stream = camel_stream_filter_new_with_stream ((CamelStream *) stream);
html_filter = camel_mime_filter_tohtml_new (CAMEL_MIME_FILTER_TOHTML_CONVERT_NL
| CAMEL_MIME_FILTER_TOHTML_CONVERT_SPACES
- | CAMEL_MIME_FILTER_TOHTML_ESCAPE_8BIT, 0);
+ | CAMEL_MIME_FILTER_TOHTML_PRESERVE_8BIT, 0);
camel_stream_filter_add(filtered_stream, html_filter);
camel_object_unref(html_filter);

File diff suppressed because it is too large Load diff

View file

@ -1,10 +0,0 @@
#!/bin/bash
# see https://gitlab.gnome.org/GNOME/glib/issues/1737
# previous versions used milliseconds instead of seconds as the timeout argument",
(`pkg-config --atleast-version 2.60.1 gio-2.0` || `pkg-config --atleast-version 2.61.0 gio-2.0`) && TIMEOUTMULT= || TIMEOUTMULT=000
sed -e "s|\@SOURCES_SERVICE\@|$(pkg-config --variable=sourcesdbusservicename evolution-data-server-1.2)|" \
-e "s|\@ADDRESSBOOK_SERVICE\@|$(pkg-config --variable=addressbookdbusservicename evolution-data-server-1.2)|" \
-e "s|\@CALENDAR_SERVICE\@|$(pkg-config --variable=calendardbusservicename evolution-data-server-1.2)|" \
-e "s|\@TIMEOUTMULT\@|${TIMEOUTMULT}|"

View file

@ -1,29 +0,0 @@
#!/bin/bash
if [ "$1" = "--quit" -o "$1" = "--force-shutdown" ]; then
/app/bin/evolution.bin "$@"
else
export BOGOFILTER_DIR="${XDG_DATA_HOME}/bogofilter/"
export GIO_USE_NETWORK_MONITOR=base
gsettings reset org.gnome.evolution-data-server network-monitor-gio-name
LINES=$(gdbus call --session --dest org.freedesktop.DBus --object-path /org/freedesktop/DBus --method org.freedesktop.DBus.ListNames | grep @SOURCES_SERVICE@ | wc -l)
if [ "${LINES}" = "0" ]; then
/app/libexec/evolution-source-registry &
gdbus wait --session --timeout=1@TIMEOUTMULT@ @SOURCES_SERVICE@
fi
LINES=$(gdbus call --session --dest org.freedesktop.DBus --object-path /org/freedesktop/DBus --method org.freedesktop.DBus.ListNames | grep @ADDRESSBOOK_SERVICE@ | wc -l)
if [ "${LINES}" = "0" ]; then
/app/libexec/evolution-addressbook-factory -r &
gdbus wait --session --timeout=1@TIMEOUTMULT@ @ADDRESSBOOK_SERVICE@
fi
LINES=$(gdbus call --session --dest org.freedesktop.DBus --object-path /org/freedesktop/DBus --method org.freedesktop.DBus.ListNames | grep @CALENDAR_SERVICE@ | wc -l)
if [ "${LINES}" = "0" ]; then
/app/libexec/evolution-calendar-factory -r &
gdbus wait --session --timeout=1@TIMEOUTMULT@ @CALENDAR_SERVICE@
fi
/app/bin/evolution.bin "$@"
fi

View file

@ -1,5 +0,0 @@
---
runpath:
allowed_paths:
- /usr/lib/evolution
- /usr/lib64/evolution

View file

@ -1 +1 @@
SHA512 (evolution-3.59.1.tar.xz) = 26d6d4dfcdbc3d89f88d9e24096c7ff910d221119def75d7f80a397f682be96860726832c7c62b46769ce9cfcc15e5844cbcc016facc9b21b4eb9bbb2c17360d
09cc60b037849b3c9b34961eb7da217f evolution-2.10.3.tar.bz2