From a66f94d8c70cf965b8898589f21b41b40896273c9992efca0360fd35a5c2f1fa Mon Sep 17 00:00:00 2001 From: OBS User unknown Date: Thu, 20 Nov 2008 14:18:48 +0000 Subject: [PATCH] OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/evolution?expand=0&rev=52 --- bgo-556224-search-events-offline.patch | 105 +++++ bnc-210959-evo-accept-ics.patch | 67 +++ bnc-433448-backup-restore-fails.patch | 20 + bnc-434320-mail-notify-fix.patch | 51 +++ bnc-440624-six-appts-timeslot.patch | 441 +++++++++++++++++++ bnc-440646-set-color-proxy.patch | 11 + bnc-440649-display-meeting-bold.patch | 152 +++++++ bnc-443190-warning-before-editing-appt.patch | 28 ++ bnc-443851-calendar-tooltip-info.patch | 141 ++++++ bnc-446286-message-tracking-status.patch | 28 ++ bnc-446356-a11y-crash.diff | 13 + bnc-446390-corrupted-vfolders.patch | 14 + evolution.changes | 32 ++ evolution.spec | 71 ++- 14 files changed, 1171 insertions(+), 3 deletions(-) create mode 100644 bgo-556224-search-events-offline.patch create mode 100644 bnc-210959-evo-accept-ics.patch create mode 100644 bnc-433448-backup-restore-fails.patch create mode 100644 bnc-434320-mail-notify-fix.patch create mode 100644 bnc-440624-six-appts-timeslot.patch create mode 100644 bnc-440646-set-color-proxy.patch create mode 100644 bnc-440649-display-meeting-bold.patch create mode 100644 bnc-443190-warning-before-editing-appt.patch create mode 100644 bnc-443851-calendar-tooltip-info.patch create mode 100644 bnc-446286-message-tracking-status.patch create mode 100644 bnc-446356-a11y-crash.diff create mode 100644 bnc-446390-corrupted-vfolders.patch diff --git a/bgo-556224-search-events-offline.patch b/bgo-556224-search-events-offline.patch new file mode 100644 index 0000000..f59f9d3 --- /dev/null +++ b/bgo-556224-search-events-offline.patch @@ -0,0 +1,105 @@ +Index: calendar/gui/gnome-cal.c +=================================================================== +--- calendar/gui/gnome-cal.c (revision 36783) ++++ calendar/gui/gnome-cal.c (working copy) +@@ -194,6 +194,9 @@ struct _GnomeCalendarPrivate { + /* We should know which calendar has been used to create object, so store it here + before emitting "user_created" signal and make it NULL just after the emit. */ + ECal *user_created_cal; ++ ++ /* used in update_todo_view, to prevent interleaving when called in separate thread */ ++ GMutex *todo_update_lock; + }; + + /* Signal IDs */ +@@ -885,6 +888,8 @@ update_query_async (struct _date_query_m + + real_sexp = adjust_e_cal_view_sexp (gcal, priv->sexp); + if (!real_sexp) { ++ g_object_unref (msg->gcal); ++ g_slice_free (struct _date_query_msg, msg); + return; /* No time range is set, so don't start a query */ + } + +@@ -1304,18 +1309,30 @@ timezone_changed_cb (GConfClient *client + set_timezone (calendar); + } + ++struct _mupdate_todo_msg { ++ Message header; ++ GnomeCalendar *gcal; ++}; ++ + static void +-update_todo_view (GnomeCalendar *gcal) ++update_todo_view_async (struct _mupdate_todo_msg *msg) + { ++ GnomeCalendar *gcal; + GnomeCalendarPrivate *priv; + ECalModel *model; + char *sexp = NULL; + ++ g_return_if_fail (msg != NULL); ++ ++ gcal = msg->gcal; + priv = gcal->priv; + ++ g_mutex_lock (priv->todo_update_lock); ++ + /* Set the query on the task pad */ + if (priv->todo_sexp) { + g_free (priv->todo_sexp); ++ priv->todo_sexp = NULL; + } + + model = e_calendar_table_get_model (E_CALENDAR_TABLE (priv->todo)); +@@ -1330,6 +1347,22 @@ update_todo_view (GnomeCalendar *gcal) + e_cal_model_set_search_query (model, priv->todo_sexp); + } + ++ g_mutex_unlock (priv->todo_update_lock); ++ ++ g_object_unref (msg->gcal); ++ g_slice_free (struct _mupdate_todo_msg, msg); ++} ++ ++static void ++update_todo_view (GnomeCalendar *gcal) ++{ ++ struct _mupdate_todo_msg *msg; ++ ++ msg = g_slice_new0 (struct _mupdate_todo_msg); ++ msg->header.func = (MessageFunc) update_todo_view_async; ++ msg->gcal = g_object_ref (gcal); ++ ++ message_push ((Message *) msg); + } + + static void +@@ -1661,7 +1694,7 @@ setup_widgets (GnomeCalendar *gcal) + "TaskPad", NULL); + e_calendar_table_load_state (E_CALENDAR_TABLE (priv->todo), filename); + +- update_todo_view (gcal); ++ /* update_todo_view (gcal); */ + g_free (filename); + + etable = e_calendar_table_get_table (E_CALENDAR_TABLE (priv->todo)); +@@ -1828,6 +1861,8 @@ gnome_calendar_init (GnomeCalendar *gcal + + e_categories_register_change_listener (G_CALLBACK (categories_changed_cb), gcal); + ++ priv->todo_update_lock = g_mutex_new (); ++ + priv->current_view_type = GNOME_CAL_DAY_VIEW; + priv->range_selected = FALSE; + priv->lview_select_daten_range = TRUE; +@@ -2004,6 +2039,8 @@ gnome_calendar_destroy (GtkObject *objec + g_signal_handlers_disconnect_by_func (cal_model, + G_CALLBACK (view_done_cb), gcal); + ++ g_mutex_free (priv->todo_update_lock); ++ + g_free (priv); + gcal->priv = NULL; + } diff --git a/bnc-210959-evo-accept-ics.patch b/bnc-210959-evo-accept-ics.patch new file mode 100644 index 0000000..9b2a99f --- /dev/null +++ b/bnc-210959-evo-accept-ics.patch @@ -0,0 +1,67 @@ +Index: plugins/itip-formatter/itip-formatter.c +=================================================================== +--- plugins/itip-formatter/itip-formatter.c (revision 35641) ++++ plugins/itip-formatter/itip-formatter.c (working copy) +@@ -1620,6 +1620,26 @@ idle_open_cb (gpointer data) + return FALSE; + } + ++static gboolean ++is_gw_item (icalcomponent *icalcomp) ++{ ++ icalproperty *prop; ++ ++ prop = icalcomponent_get_first_property (icalcomp, ICAL_X_PROPERTY); ++ while (prop) { ++ const char *x_name, *x_val; ++ ++ x_name = icalproperty_get_x_name (prop); ++ x_val = icalproperty_get_x (prop); ++ if (!strcmp (x_name, "X-GWRECORDID")) { ++ return TRUE; ++ } ++ ++ prop = icalcomponent_get_next_property (icalcomp, ICAL_X_PROPERTY); ++ } ++ return FALSE; ++} ++ + static void + view_response_cb (GtkWidget *widget, ItipViewResponse response, gpointer data) + { +@@ -1664,7 +1684,7 @@ view_response_cb (GtkWidget *widget, Iti + if (status) { + e_cal_component_rescan (pitip->comp); + flag = update_item (pitip, response); +- if (save_schedules && flag) ++ if (save_schedules && flag && is_gw_item (pitip->ical_comp)) + delete_invitation_from_cache = TRUE; + } + break; +@@ -1674,7 +1694,7 @@ view_response_cb (GtkWidget *widget, Iti + if (status) { + e_cal_component_rescan (pitip->comp); + flag = update_item (pitip, response); +- if (save_schedules && flag) ++ if (save_schedules && flag && is_gw_item (pitip->ical_comp)) + delete_invitation_from_cache = TRUE; + + } +@@ -1693,7 +1713,7 @@ view_response_cb (GtkWidget *widget, Iti + if (status) { + e_cal_component_rescan (pitip->comp); + flag = update_item (pitip, response); +- if (save_schedules && flag) ++ if (save_schedules && flag && is_gw_item (pitip->ical_comp)) + delete_invitation_from_cache = TRUE; + } + break; +@@ -1753,7 +1773,7 @@ view_response_cb (GtkWidget *widget, Iti + } + } + +- if (!save_schedules && pitip->delete_message) { ++ if (!delete_invitation_from_cache && pitip->delete_message) { + g_message ("Deleting!"); + camel_folder_delete_message (pitip->folder, pitip->uid); + } diff --git a/bnc-433448-backup-restore-fails.patch b/bnc-433448-backup-restore-fails.patch new file mode 100644 index 0000000..48455a2 --- /dev/null +++ b/bnc-433448-backup-restore-fails.patch @@ -0,0 +1,20 @@ +Index: plugins/backup-restore/backup.c +=================================================================== +--- plugins/backup-restore/backup.c (revision 36769) ++++ plugins/backup-restore/backup.c (working copy) +@@ -39,6 +39,7 @@ + #include "e-util/e-util.h" + + #define EVOLUTION "evolution" ++#define PKILL "/usr/bin/pkill" + #define EVOLUTION_DIR "$HOME/.evolution/" + #define EVOLUTION_DIR_BACKUP "$HOME/.evolution-old/" + #define GCONF_DUMP_FILE "backup-restore-gconf.xml" +@@ -272,6 +273,7 @@ + + CANCEL (complete); + txt = _("Loading Evolution settings"); ++ s (PKILL " gconf"); + s ("gconftool-2 --load " GCONF_DUMP_PATH); + + CANCEL (complete); diff --git a/bnc-434320-mail-notify-fix.patch b/bnc-434320-mail-notify-fix.patch new file mode 100644 index 0000000..3be4030 --- /dev/null +++ b/bnc-434320-mail-notify-fix.patch @@ -0,0 +1,51 @@ +--- plugins/mail-notification/mail-notification.c ++++ plugins/mail-notification/mail-notification.c +@@ -56,6 +56,7 @@ + + static gboolean enabled = FALSE; + static GtkWidget *get_cfg_widget (void); ++static GStaticMutex mlock = G_STATIC_MUTEX_INIT; + + /** + * each part should "implement" its own "public" functions: +@@ -441,6 +442,24 @@ popup_menu_status (GtkStatusIcon *status_icon, guint button, guint activate_time + g_object_unref (menu); + } + ++static void ++notifyActionCallback (NotifyNotification *n, gchar *label, gpointer a) ++{ ++ g_static_mutex_lock (&mlock); ++ ++ gtk_status_icon_set_visible (status_icon, FALSE); ++ g_object_unref (status_icon); ++ ++ if (blink_timeout_id) { ++ g_source_remove (blink_timeout_id); ++ blink_timeout_id = 0; ++ } ++ ++ status_icon = NULL; ++ status_count = 0; ++ g_static_mutex_unlock (&mlock); ++} ++ + static void + new_notify_status (EMEventTargetFolder *t) + { +@@ -487,6 +506,7 @@ new_notify_status (EMEventTargetFolder *t) + + notify_notification_set_urgency (notify, NOTIFY_URGENCY_NORMAL); + notify_notification_set_timeout (notify, NOTIFY_EXPIRES_DEFAULT); ++ notify_notification_add_action(notify, "default", "Default", notifyActionCallback, NULL, NULL); + g_timeout_add (500, notification_callback, notify); + } + } +@@ -835,7 +855,6 @@ void org_gnome_mail_read_notify (EPlugin *ep, EMEventTargetMessage *t); + int e_plugin_lib_enable (EPluginLib *ep, int enable); + GtkWidget *e_plugin_lib_get_configure_widget (EPlugin *epl); + +-static GStaticMutex mlock = G_STATIC_MUTEX_INIT; + + void + org_gnome_mail_new_notify (EPlugin *ep, EMEventTargetFolder *t) diff --git a/bnc-440624-six-appts-timeslot.patch b/bnc-440624-six-appts-timeslot.patch new file mode 100644 index 0000000..98a4a4c --- /dev/null +++ b/bnc-440624-six-appts-timeslot.patch @@ -0,0 +1,441 @@ +Index: calendar/gui/e-day-view.c +=================================================================== +--- calendar/gui/e-day-view.c (revision 35721) ++++ calendar/gui/e-day-view.c (working copy) +@@ -186,8 +186,6 @@ static void e_day_view_top_scroll (EDayV + + static void e_day_view_update_top_scroll (EDayView *day_view, gboolean scroll_to_top); + +-static gboolean e_day_view_check_if_new_event_fits (EDayView *day_view); +- + static void e_day_view_on_canvas_realized (GtkWidget *widget, + EDayView *day_view); + +@@ -953,6 +951,10 @@ e_day_view_init (EDayView *day_view) + /* + * Scrollbar. + */ ++ day_view->mc_hscrollbar = gtk_hscrollbar_new (GTK_LAYOUT (day_view->main_canvas)->hadjustment); ++ gtk_table_attach (GTK_TABLE (day_view), day_view->mc_hscrollbar, 1, 2, 2, 3, GTK_FILL, 0, 0, 0); ++ gtk_widget_show (day_view->mc_hscrollbar); ++ + day_view->tc_vscrollbar = gtk_vscrollbar_new (GTK_LAYOUT (day_view->top_canvas)->vadjustment); + gtk_table_attach (GTK_TABLE (day_view), day_view->tc_vscrollbar, + 2, 3, 0, 1, 0, GTK_FILL, 0, 0); +@@ -1423,28 +1425,19 @@ e_day_view_style_set (GtkWidget *widget, + pango_font_metrics_unref (font_metrics); + } + +-/* This recalculates the sizes of each column. */ + static void +-e_day_view_size_allocate (GtkWidget *widget, GtkAllocation *allocation) ++e_day_view_recalc_main_canvas_size (EDayView *day_view) + { +- EDayView *day_view; + gint day, scroll_y; + gboolean need_reshape; + +-#if 0 +- g_print ("In e_day_view_size_allocate\n"); +-#endif +- day_view = E_DAY_VIEW (widget); +- +- (*GTK_WIDGET_CLASS (e_day_view_parent_class)->size_allocate) (widget, allocation); +- +- e_day_view_recalc_cell_sizes (day_view); +- + /* Set the scroll region of the top canvas */ + e_day_view_update_top_scroll (day_view, TRUE); + + need_reshape = e_day_view_update_scroll_regions (day_view); + ++ e_day_view_recalc_cell_sizes (day_view); ++ + /* Scroll to the start of the working day, if this is the initial + allocation. */ + if (day_view->scroll_to_work_day) { +@@ -1465,6 +1458,17 @@ e_day_view_size_allocate (GtkWidget *wid + } + } + ++/* This recalculates the sizes of each column. */ ++static void ++e_day_view_size_allocate (GtkWidget *widget, GtkAllocation *allocation) ++{ ++#if 0 ++ g_print ("In e_day_view_size_allocate\n"); ++#endif ++ (*GTK_WIDGET_CLASS (e_day_view_parent_class)->size_allocate) (widget, allocation); ++ ++ e_day_view_recalc_main_canvas_size (E_DAY_VIEW (widget)); ++} + + static void + e_day_view_recalc_cell_sizes (EDayView *day_view) +@@ -1491,6 +1495,8 @@ e_day_view_recalc_cell_sizes (EDayView * + get divided evenly. Note that we use one more element than the + number of columns, to make it easy to get the column widths. */ + width = day_view->main_canvas->allocation.width; ++ if (day_view->days_shown == 1) ++ width = MAX (width, day_view->max_cols * (E_DAY_VIEW_MIN_DAY_COL_WIDTH + E_DAY_VIEW_GAP_WIDTH) - E_DAY_VIEW_MIN_DAY_COL_WIDTH - 1); + width /= day_view->days_shown; + offset = 0; + for (day = 0; day <= day_view->days_shown; day++) { +@@ -2638,12 +2644,21 @@ e_day_view_update_scroll_regions (EDayVi + gnome_canvas_get_scroll_region (GNOME_CANVAS (day_view->main_canvas), + NULL, NULL, &old_x2, &old_y2); + new_x2 = day_view->main_canvas->allocation.width - 1; ++ ++ if (day_view->days_shown == 1) ++ new_x2 = MAX (new_x2, day_view->max_cols * (E_DAY_VIEW_MIN_DAY_COL_WIDTH + E_DAY_VIEW_GAP_WIDTH) - E_DAY_VIEW_MIN_DAY_COL_WIDTH - 1); ++ + if (old_x2 != new_x2 || old_y2 != new_y2) { + need_reshape = TRUE; + gnome_canvas_set_scroll_region (GNOME_CANVAS (day_view->main_canvas), + 0, 0, new_x2, new_y2); + } + ++ if (new_x2 <= day_view->main_canvas->allocation.width - 1) ++ gtk_widget_hide (day_view->mc_hscrollbar); ++ else ++ gtk_widget_show (day_view->mc_hscrollbar); ++ + return need_reshape; + } + +@@ -4232,13 +4247,13 @@ e_day_view_add_event (ECalComponent *com + return TRUE; + } + +- + /* This lays out the short (less than 1 day) events in the columns. + Any long events are simply skipped. */ + void + e_day_view_check_layout (EDayView *day_view) + { + gint day, rows_in_top_display; ++ gint max_cols = -1; + + /* Don't bother if we aren't visible. */ + if (!GTK_WIDGET_VISIBLE (day_view)) +@@ -4248,11 +4263,17 @@ e_day_view_check_layout (EDayView *day_v + e_day_view_ensure_events_sorted (day_view); + + for (day = 0; day < day_view->days_shown; day++) { +- if (day_view->need_layout[day]) +- e_day_view_layout_day_events (day_view->events[day], ++ if (day_view->need_layout[day]) { ++ gint cols; ++ ++ cols = e_day_view_layout_day_events (day_view->events[day], + day_view->rows, + day_view->mins_per_row, +- day_view->cols_per_row[day]); ++ day_view->cols_per_row[day], ++ day_view->days_shown == 1 ? -1 : E_DAY_VIEW_MULTI_DAY_MAX_COLUMNS); ++ ++ max_cols = MAX (cols, max_cols); ++ } + + if (day_view->need_layout[day] + || day_view->need_reshape[day]) { +@@ -4278,13 +4299,17 @@ e_day_view_check_layout (EDayView *day_v + } + } + +- + if (day_view->long_events_need_layout + || day_view->long_events_need_reshape) + e_day_view_reshape_long_events (day_view); + + day_view->long_events_need_layout = FALSE; + day_view->long_events_need_reshape = FALSE; ++ ++ if (max_cols != -1 && max_cols != day_view->max_cols) { ++ day_view->max_cols = max_cols; ++ e_day_view_recalc_main_canvas_size (day_view); ++ } + } + + +@@ -4826,13 +4851,6 @@ e_day_view_do_key_press (GtkWidget *widg + if (day_view->selection_start_day == -1) + return FALSE; + +- /* Check if there is room for a new event to be typed in. If there +- isn't we don't want to add an event as we will then add a new +- event for every key press. */ +- if (!e_day_view_check_if_new_event_fits (day_view)) { +- return FALSE; +- } +- + /* Check if the client is read only */ + model = e_calendar_view_get_model (E_CALENDAR_VIEW (day_view)); + ecal = e_cal_model_get_default_client (model); +@@ -5543,33 +5561,6 @@ e_day_view_top_scroll (EDayView *day_vie + gtk_adjustment_set_value (adj, new_value); + } + +-static gboolean +-e_day_view_check_if_new_event_fits (EDayView *day_view) +-{ +- gint day, start_row, end_row, row; +- +- day = day_view->selection_start_day; +- start_row = day_view->selection_start_row; +- end_row = day_view->selection_end_row; +- +- /* Long events always fit, since we keep adding rows to the top +- canvas. */ +- if (day != day_view->selection_end_day) +- return TRUE; +- if (start_row == 0 && end_row == day_view->rows) +- return TRUE; +- +- /* If any of the rows already have E_DAY_VIEW_MAX_COLUMNS columns, +- return FALSE. */ +- for (row = start_row; row <= end_row; row++) { +- if (day_view->cols_per_row[day][row] >= E_DAY_VIEW_MAX_COLUMNS) +- return FALSE; +- } +- +- return TRUE; +-} +- +- + void + e_day_view_ensure_rows_visible (EDayView *day_view, + gint start_row, +Index: calendar/gui/e-day-view.h +=================================================================== +--- calendar/gui/e-day-view.h (revision 35721) ++++ calendar/gui/e-day-view.h (working copy) +@@ -45,8 +45,11 @@ G_BEGIN_DECLS + of a normal event. */ + #define E_DAY_VIEW_LONG_EVENT E_DAY_VIEW_MAX_DAYS + +-/* The maximum number of columns of appointments within a day. */ +-#define E_DAY_VIEW_MAX_COLUMNS 6 ++/* The maximum number of columns of appointments within a day in multi-day view. */ ++#define E_DAY_VIEW_MULTI_DAY_MAX_COLUMNS 6 ++ ++/* minimum width of the event in one-day view in pixels */ ++#define E_DAY_VIEW_MIN_DAY_COL_WIDTH 60 + + /* The width of the gap between appointments. This should be at least + E_DAY_VIEW_BAR_WIDTH, since in the top canvas we use this space to draw +@@ -204,6 +207,9 @@ struct _EDayView + /* scrollbar for top_canvas */ + GtkWidget *tc_vscrollbar; + ++ /* horizontal scrollbar for main_canvas */ ++ GtkWidget *mc_hscrollbar; ++ + /* The main canvas where the rest of the appointments are shown. */ + GtkWidget *main_canvas; + GnomeCanvasItem *main_canvas_item; +@@ -310,6 +316,8 @@ struct _EDayView + Note that there are a maximum of 12 * 24 rows (when a row is 5 mins) + but we don't always have that many rows. */ + guint8 cols_per_row[E_DAY_VIEW_MAX_DAYS][12 * 24]; ++ /* The maximum number of columns from all rows in cols_per_row */ ++ gint max_cols; + + /* Sizes of the various time strings. */ + gint small_hour_widths[24]; +Index: calendar/gui/e-day-view-layout.c +=================================================================== +--- calendar/gui/e-day-view-layout.c (revision 35721) ++++ calendar/gui/e-day-view-layout.c (working copy) +@@ -29,6 +29,7 @@ + #include + + #include "e-day-view-layout.h" ++#include "e-util/e-bit-array.h" + + static void e_day_view_layout_long_event (EDayViewEvent *event, + guint8 *grid, +@@ -37,13 +38,14 @@ static void e_day_view_layout_long_event + gint *rows_in_top_display); + + static void e_day_view_layout_day_event (EDayViewEvent *event, +- guint8 *grid, ++ EBitArray **grid, + guint16 *group_starts, + guint8 *cols_per_row, + gint rows, +- gint mins_per_row); ++ gint mins_per_row, ++ gint max_cols); + static void e_day_view_expand_day_event (EDayViewEvent *event, +- guint8 *grid, ++ EBitArray **grid, + guint8 *cols_per_row, + gint mins_per_row); + static void e_day_view_recalc_cols_per_row (gint rows, +@@ -127,15 +129,17 @@ e_day_view_layout_long_event (EDayViewEv + } + + +-void ++/* returns maximum number of columns among all rows */ ++gint + e_day_view_layout_day_events (GArray *events, + gint rows, + gint mins_per_row, +- guint8 *cols_per_row) ++ guint8 *cols_per_row, ++ gint max_cols) + { + EDayViewEvent *event; +- gint row, event_num; +- guint8 *grid; ++ gint row, event_num, res; ++ EBitArray **grid; + + /* This is a temporary array which keeps track of rows which are + connected. When an appointment spans multiple rows then the number +@@ -145,18 +149,20 @@ e_day_view_layout_day_events (GArray + rows. */ + guint16 group_starts[12 * 24]; + ++ /* This is a temporary 2-d grid which is used to place events. ++ Each element is 0 if the position is empty, or 1 if occupied. */ ++ grid = g_new0 (EBitArray *, rows); ++ + /* Reset the cols_per_row array, and initialize the connected rows so + that all rows are not connected - each row is the start of a new + group. */ + for (row = 0; row < rows; row++) { + cols_per_row[row] = 0; + group_starts[row] = row; +- } +- +- /* This is a temporary 2-d grid which is used to place events. +- Each element is 0 if the position is empty, or 1 if occupied. */ +- grid = g_new0 (guint8, rows * E_DAY_VIEW_MAX_COLUMNS); + ++ /* row doesn't contain any event at the moment */ ++ grid [row] = e_bit_array_new (0); ++ } + + /* Iterate over the events, finding which rows they cover, and putting + them in the first free column available. Increment the number of +@@ -166,7 +172,7 @@ e_day_view_layout_day_events (GArray + event = &g_array_index (events, EDayViewEvent, event_num); + + e_day_view_layout_day_event (event, grid, group_starts, +- cols_per_row, rows, mins_per_row); ++ cols_per_row, rows, mins_per_row, max_cols); + } + + /* Recalculate the number of columns needed in each row. */ +@@ -180,8 +186,15 @@ e_day_view_layout_day_events (GArray + mins_per_row); + } + +- /* Free the grid. */ ++ /* Free the grid and compute maximum number of columns used. */ ++ res = 0; ++ for (row = 0; row < rows; row++) { ++ res = MAX (res, e_bit_array_bit_count (grid [row])); ++ g_object_unref (grid [row]); ++ } + g_free (grid); ++ ++ return res; + } + + +@@ -190,11 +203,12 @@ e_day_view_layout_day_events (GArray + sure they are all in one group. */ + static void + e_day_view_layout_day_event (EDayViewEvent *event, +- guint8 *grid, ++ EBitArray **grid, + guint16 *group_starts, + guint8 *cols_per_row, + gint rows, +- gint mins_per_row) ++ gint mins_per_row, ++ gint max_cols) + { + gint start_row, end_row, free_col, col, row, group_start; + +@@ -214,10 +228,11 @@ e_day_view_layout_day_event (EDayViewEve + end_row = CLAMP (end_row, 0, rows - 1); + + /* Try each column until we find a free one. */ +- for (col = 0; col < E_DAY_VIEW_MAX_COLUMNS; col++) { ++ for (col = 0; max_cols <= 0 || col < max_cols; col++) { + free_col = col; + for (row = start_row; row <= end_row; row++) { +- if (grid[row * E_DAY_VIEW_MAX_COLUMNS + col]) { ++ if (e_bit_array_bit_count (grid [row]) > col && ++ e_bit_array_value_at (grid [row], col)) { + free_col = -1; + break; + } +@@ -243,7 +258,11 @@ e_day_view_layout_day_event (EDayViewEve + all the events have been layed out. Also make sure all the rows that + the event covers are in one group. */ + for (row = start_row; row <= end_row; row++) { +- grid[row * E_DAY_VIEW_MAX_COLUMNS + free_col] = 1; ++ /* resize the array if necessary */ ++ if (e_bit_array_bit_count (grid [row]) <= free_col) ++ e_bit_array_insert (grid [row], e_bit_array_bit_count (grid [row]), free_col - e_bit_array_bit_count (grid [row]) + 1); ++ ++ e_bit_array_change_one_row (grid [row], free_col, TRUE); + cols_per_row[row]++; + group_starts[row] = group_start; + } +@@ -284,7 +303,7 @@ e_day_view_recalc_cols_per_row (gint + /* Expands the event horizontally to fill any free space. */ + static void + e_day_view_expand_day_event (EDayViewEvent *event, +- guint8 *grid, ++ EBitArray **grid, + guint8 *cols_per_row, + gint mins_per_row) + { +@@ -300,7 +319,8 @@ e_day_view_expand_day_event (EDayViewEve + clashed = FALSE; + for (col = event->start_row_or_col + 1; col < cols_per_row[start_row]; col++) { + for (row = start_row; row <= end_row; row++) { +- if (grid[row * E_DAY_VIEW_MAX_COLUMNS + col]) { ++ if (e_bit_array_bit_count (grid [row]) > col && ++ e_bit_array_value_at (grid [row], col)) { + clashed = TRUE; + break; + } +Index: calendar/gui/e-day-view-layout.h +=================================================================== +--- calendar/gui/e-day-view-layout.h (revision 35721) ++++ calendar/gui/e-day-view-layout.h (working copy) +@@ -38,10 +38,11 @@ void e_day_view_layout_long_events (GArr + gint *rows_in_top_display); + + +-void e_day_view_layout_day_events (GArray *events, ++gint e_day_view_layout_day_events (GArray *events, + gint rows, + gint mins_per_row, +- guint8 *cols_per_row); ++ guint8 *cols_per_row, ++ gint max_cols); + + gboolean e_day_view_find_long_event_days (EDayViewEvent *event, + gint days_shown, +Index: calendar/gui/print.c +=================================================================== +--- calendar/gui/print.c (revision 35721) ++++ calendar/gui/print.c (working copy) +@@ -1320,7 +1320,7 @@ print_day_details (GtkPrintContext *cont + + /* lay out the short events, within the day. */ + e_day_view_layout_day_events (pdi.events[0], DAY_VIEW_ROWS, +- DAY_VIEW_MINS_PER_ROW, pdi.cols_per_row); ++ DAY_VIEW_MINS_PER_ROW, pdi.cols_per_row, -1); + + /* print the short events. */ + if (top > bottom ) diff --git a/bnc-440646-set-color-proxy.patch b/bnc-440646-set-color-proxy.patch new file mode 100644 index 0000000..b1d9063 --- /dev/null +++ b/bnc-440646-set-color-proxy.patch @@ -0,0 +1,11 @@ +--- plugins/groupwise-account-setup/camel-gw-listener.c 2008/11/11 08:14:34 36770 ++++ plugins/groupwise-account-setup/camel-gw-listener.c 2008/11/11 10:52:26 36771 +@@ -559,7 +559,7 @@ + + url = camel_url_new (info->source_url, NULL); + +- color = g_strdup_printf ("%u", g_random_int_range (0x100000, 0xffffaa)); ++ color = g_strdup_printf ("#%06X", g_random_int_range (0x100000, 0xffffaa)); + /* The above range is chosen so that the colors are neither too light nor too dark + and appealing in all the themes */ + diff --git a/bnc-440649-display-meeting-bold.patch b/bnc-440649-display-meeting-bold.patch new file mode 100644 index 0000000..b73c8d8 --- /dev/null +++ b/bnc-440649-display-meeting-bold.patch @@ -0,0 +1,152 @@ +Index: calendar/gui/e-day-view.c +=================================================================== +--- calendar/gui/e-day-view.c (revision 36769) ++++ calendar/gui/e-day-view.c (working copy) +@@ -1775,41 +1775,38 @@ + return TRUE; + } + +-#if 0 +-/* Checks if the users participation status is Needs action and shows the summary as bold text*/ ++/* Checks if the users participation status is NEEDS-ACTION and shows the summary as bold text */ + static void + set_text_as_bold (EDayViewEvent *event) + { + ECalComponent *comp; +- char *address; +- GSList *attendees, *l; ++ GSList *attendees = NULL, *l; ++ gchar *address; + ECalComponentAttendee *at = NULL; + + comp = e_cal_component_new (); + e_cal_component_set_icalcomponent (comp, icalcomponent_new_clone (event->comp_data->icalcomp)); + address = itip_get_comp_attendee (comp, event->comp_data->client); + e_cal_component_get_attendee_list (comp, &attendees); +- + for (l = attendees; l; l = l->next) { + ECalComponentAttendee *attendee = l->data; + +- if (g_str_equal (itip_strip_mailto (attendee->value), address)) { ++ if ((g_str_equal (itip_strip_mailto (attendee->value), address)) ++ || (attendee->sentby && g_str_equal (itip_strip_mailto (attendee->sentby), address))) { + at = attendee; + break; + } + } +- +- /* The attendee has not yet accepted the meeting, display the summary as bolded . +- If the attendee is not present, it might have come through a mailing list*/ +- if (!at || (at->status == ICAL_PARTSTAT_NEEDSACTION)) { +- gnome_canvas_item_set (event->canvas_item, "bold", TRUE, NULL); +- } +- + e_cal_component_free_attendee_list (attendees); +- g_object_unref (comp); + g_free (address); ++ g_object_unref (comp); ++ ++ /* The attendee has not yet accepted the meeting, display the summary as bolded. ++ If the attendee is not present, it might have come through a mailing list. ++ In that case, we never show the meeting as bold even if it is unaccepted. */ ++ if (at && (at->status == ICAL_PARTSTAT_NEEDSACTION)) ++ gnome_canvas_item_set (event->canvas_item, "bold", TRUE, NULL); + } +-#endif + + /* This updates the text shown for an event. If the event start or end do not + lie on a row boundary, the time is displayed before the summary. */ +@@ -1859,9 +1856,9 @@ + "text", text, + NULL); + +-/* if (e_cal_get_static_capability (event->comp_data->client, CAL_STATIC_CAPABILITY_HAS_UNACCEPTED_MEETING) ++ if (e_cal_get_static_capability (event->comp_data->client, CAL_STATIC_CAPABILITY_HAS_UNACCEPTED_MEETING) + && e_cal_util_component_has_attendee (event->comp_data->icalcomp)) +- set_text_as_bold (event); */ ++ set_text_as_bold (event); + + if (free_text) + g_free (text); +@@ -1891,9 +1888,9 @@ + if (free_text) + g_free ((gchar*)summary); + +-/* if (e_cal_get_static_capability (event->comp_data->client, CAL_STATIC_CAPABILITY_HAS_UNACCEPTED_MEETING) ++ if (e_cal_get_static_capability (event->comp_data->client, CAL_STATIC_CAPABILITY_HAS_UNACCEPTED_MEETING) + && e_cal_util_component_has_attendee (event->comp_data->icalcomp)) +- set_text_as_bold (event); */ ++ set_text_as_bold (event); + } + + +Index: calendar/gui/e-week-view.c +=================================================================== +--- calendar/gui/e-week-view.c (revision 36769) ++++ calendar/gui/e-week-view.c (working copy) +@@ -1877,41 +1877,38 @@ + return FALSE; + } + +-#if 0 +-/* Checks if the users participation status is Needs action and shows the summary as bold text*/ ++/* Checks if the users participation status is NEEDS-ACTION and shows the summary as bold text */ + static void + set_text_as_bold (EWeekViewEvent *event, EWeekViewEventSpan *span) + { + ECalComponent *comp; +- char *address; +- GSList *attendees, *l; ++ GSList *attendees = NULL, *l; ++ gchar *address; + ECalComponentAttendee *at = NULL; + + comp = e_cal_component_new (); + e_cal_component_set_icalcomponent (comp, icalcomponent_new_clone (event->comp_data->icalcomp)); + address = itip_get_comp_attendee (comp, event->comp_data->client); + e_cal_component_get_attendee_list (comp, &attendees); +- + for (l = attendees; l; l = l->next) { + ECalComponentAttendee *attendee = l->data; + +- if (g_str_equal (itip_strip_mailto (attendee->value), address)) { ++ if ((g_str_equal (itip_strip_mailto (attendee->value), address)) ++ || (attendee->sentby && g_str_equal (itip_strip_mailto (attendee->sentby), address))) { + at = attendee; + break; + } + } ++ e_cal_component_free_attendee_list (attendees); ++ g_free (address); ++ g_object_unref (comp); + + /* The attendee has not yet accepted the meeting, display the summary as bolded. +- If the attendee is not present, it might have come through a mailing list*/ +- if (!at || (at->status == ICAL_PARTSTAT_NEEDSACTION)) { ++ If the attendee is not present, it might have come through a mailing list. ++ In that case, we never show the meeting as bold even if it is unaccepted. */ ++ if (at && (at->status == ICAL_PARTSTAT_NEEDSACTION)) + gnome_canvas_item_set (span->text_item, "bold", TRUE, NULL); +- } +- +- e_cal_component_free_attendee_list (attendees); +- g_object_unref (comp); +- g_free (address); + } +-#endif + + /* This calls a given function for each event instance that matches the given + uid. Note that it is safe for the callback to remove the event (since we +@@ -2816,11 +2813,10 @@ + if (free_text) + g_free ((gchar*)summary); + +-/* Uncomment once the pango fix is in + if (e_cal_get_static_capability (event->comp_data->client, CAL_STATIC_CAPABILITY_HAS_UNACCEPTED_MEETING) + && e_cal_util_component_has_attendee (event->comp_data->icalcomp)) { + set_text_as_bold (event, span); +- } */ ++ } + g_object_set_data (G_OBJECT (span->text_item), "event-num", GINT_TO_POINTER (event_num)); + g_signal_connect (span->text_item, "event", + G_CALLBACK (e_week_view_on_text_item_event), diff --git a/bnc-443190-warning-before-editing-appt.patch b/bnc-443190-warning-before-editing-appt.patch new file mode 100644 index 0000000..0e34450 --- /dev/null +++ b/bnc-443190-warning-before-editing-appt.patch @@ -0,0 +1,28 @@ +--- calendar/gui/dialogs/comp-editor.c 2008/11/09 21:25:02 36767 ++++ calendar/gui/dialogs/comp-editor.c 2008/11/10 10:29:17 36768 +@@ -2903,7 +2903,9 @@ + if (e_cal_component_has_attachments (priv->comp)) { + GSList *attachment_list = NULL; + e_cal_component_get_attachment_list (priv->comp, &attachment_list); ++ g_signal_handlers_block_by_func(priv->attachment_bar, G_CALLBACK (attachment_bar_changed_cb), editor); + set_attachment_list (editor, attachment_list); ++ g_signal_handlers_unblock_by_func(priv->attachment_bar, G_CALLBACK (attachment_bar_changed_cb), editor); + g_slist_foreach (attachment_list, (GFunc)g_free, NULL); + g_slist_free (attachment_list); + } +@@ -2916,7 +2918,6 @@ + real_edit_comp (CompEditor *editor, ECalComponent *comp) + { + CompEditorPrivate *priv; +- const char *uid; + + g_return_if_fail (IS_COMP_EDITOR (editor)); + +@@ -2935,7 +2936,6 @@ + priv->warned = FALSE; + + update_window_border (editor, NULL); +- e_cal_component_get_uid (comp, &uid); + + fill_widgets (editor); + diff --git a/bnc-443851-calendar-tooltip-info.patch b/bnc-443851-calendar-tooltip-info.patch new file mode 100644 index 0000000..d430e53 --- /dev/null +++ b/bnc-443851-calendar-tooltip-info.patch @@ -0,0 +1,141 @@ +--- calendar/gui/e-calendar-table.c 2008-10-20 08:58:33.000000000 +0530 ++++ calendar/gui/e-calendar-table.c 2008-11-19 12:56:42.000000000 +0530 +@@ -432,6 +432,16 @@ query_tooltip_cb (GtkWidget *widget, gin + e_cal_component_free_datetime (&dtstart); + e_cal_component_free_datetime (&dtdue); + ++ tmp = e_calendar_view_get_attendees_status_info (new_comp); ++ if (tmp) { ++ l = gtk_label_new (tmp); ++ gtk_misc_set_alignment (GTK_MISC (l), 0.0, 0.5); ++ gtk_box_pack_start (GTK_BOX (w), l, FALSE, FALSE, 0); ++ ++ g_free (tmp); ++ tmp = NULL; ++ } ++ + tmp2 = g_string_new (""); + e_cal_component_get_description_list (new_comp, &desc); + for (len = 0, p = desc; p != NULL; p = p->next) { +--- calendar/gui/e-calendar-view.c 2008-11-19 12:02:10.000000000 +0530 ++++ calendar/gui/e-calendar-view.c 2008-11-19 12:56:59.000000000 +0530 +@@ -2131,6 +2131,83 @@ e_calendar_view_move_tip (GtkWidget *wid + gtk_widget_show (widget); + } + ++/** ++ * Returns information about attendees in the component. If no attendees, then returns NULL. ++ * The information is like "Status: Accepted: X Declined: Y ...". ++ * Free returned pointer with g_free. ++ **/ ++char * ++e_calendar_view_get_attendees_status_info (ECalComponent *comp) ++{ ++ struct _values { ++ icalparameter_partstat status; ++ const char *caption; ++ int count; ++ } values[] = { ++ { ICAL_PARTSTAT_ACCEPTED, N_("Accepted"), 0 }, ++ { ICAL_PARTSTAT_DECLINED, N_("Declined"), 0 }, ++ { ICAL_PARTSTAT_TENTATIVE, N_("Tentative"), 0 }, ++ { ICAL_PARTSTAT_DELEGATED, N_("Delegated"), 0 }, ++ { ICAL_PARTSTAT_NEEDSACTION, N_("Needs action"), 0 }, ++ { ICAL_PARTSTAT_NONE, N_("Other"), 0 }, ++ { ICAL_PARTSTAT_X, NULL, -1 } ++ }; ++ ++ GSList *attendees = NULL, *a; ++ gboolean have = FALSE; ++ char *res = NULL; ++ int i; ++ ++ if (!comp || !e_cal_component_has_attendees (comp)) ++ return NULL; ++ ++ e_cal_component_get_attendee_list (comp, &attendees); ++ ++ for (a = attendees; a; a = a->next) { ++ ECalComponentAttendee *att = a->data; ++ ++ if (att && att->cutype == ICAL_CUTYPE_INDIVIDUAL && ++ (att->role == ICAL_ROLE_CHAIR || ++ att->role == ICAL_ROLE_REQPARTICIPANT || ++ att->role == ICAL_ROLE_OPTPARTICIPANT)) { ++ have = TRUE; ++ ++ for (i = 0; values[i].count != -1; i++) { ++ if (att->status == values[i].status || values[i].status == ICAL_PARTSTAT_NONE) { ++ values[i].count++; ++ break; ++ } ++ } ++ } ++ } ++ ++ if (have) { ++ GString *str = g_string_new (""); ++ ++ for (i = 0; values[i].count != -1; i++) { ++ if (values[i].count > 0) { ++ if (str->str && *str->str) ++ g_string_append (str, " "); ++ ++ g_string_append_printf (str, "%s: %d", _(values[i].caption), values[i].count); ++ } ++ } ++ ++ g_string_prepend (str, ": "); ++ ++ /* To Translators: 'Status' here means the state of the attendees, the resulting string will be in a form: ++ Status: Accepted: X Declined: Y ... */ ++ g_string_prepend (str, _("Status")); ++ ++ res = g_string_free (str, FALSE); ++ } ++ ++ if (attendees) ++ e_cal_component_free_attendee_list (attendees); ++ ++ return res; ++} ++ + /* + * It is expected to show the tooltips in this below format + * +@@ -2138,6 +2215,7 @@ e_calendar_view_move_tip (GtkWidget *wid + * Organiser: NameOfTheUser + * Location: PlaceOfTheMeeting + * Time : DateAndTime (xx Minutes) ++ * Status: Accepted: X Declined: Y ... + */ + + gboolean +@@ -2276,6 +2354,17 @@ e_calendar_view_get_tooltips (ECalendarV + g_free (tmp2); + g_free (tmp1); + ++ tmp = e_calendar_view_get_attendees_status_info (newcomp); ++ if (tmp) { ++ hbox = gtk_hbox_new (FALSE, 0); ++ gtk_box_pack_start ((GtkBox *)hbox, gtk_label_new (tmp), FALSE, FALSE, 0); ++ ebox = gtk_event_box_new (); ++ gtk_container_add ((GtkContainer *)ebox, hbox); ++ gtk_box_pack_start ((GtkBox *)box, ebox, FALSE, FALSE, 0); ++ ++ g_free (tmp); ++ } ++ + pevent->tooltip = gtk_window_new (GTK_WINDOW_POPUP); + frame = gtk_frame_new (NULL); + gtk_frame_set_shadow_type ((GtkFrame *)frame, GTK_SHADOW_IN); +--- calendar/gui/e-calendar-view.h 2008-11-19 12:02:10.000000000 +0530 ++++ calendar/gui/e-calendar-view.h 2008-11-19 12:57:07.000000000 +0530 +@@ -175,6 +175,7 @@ gboolean e_calendar_view_get_tooltips (E + void e_calendar_view_move_tip (GtkWidget *widget, int x, int y); + + const gchar *e_calendar_view_get_icalcomponent_summary (ECal *ecal, icalcomponent *icalcomp, gboolean *free_text); ++char *e_calendar_view_get_attendees_status_info (ECalComponent *comp); + + void draw_curved_rectangle (cairo_t *cr, + double x0, diff --git a/bnc-446286-message-tracking-status.patch b/bnc-446286-message-tracking-status.patch new file mode 100644 index 0000000..68ea74f --- /dev/null +++ b/bnc-446286-message-tracking-status.patch @@ -0,0 +1,28 @@ +Index: plugins/groupwise-features/status-track.c +=================================================================== +--- plugins/groupwise-features/status-track.c (revision 36806) ++++ plugins/groupwise-features/status-track.c (working copy) +@@ -79,8 +79,6 @@ + + gchar *boldmsg; + +- const char *status = NULL ; +- + int row = 0; + + EGwConnection *cnc; +@@ -93,14 +91,6 @@ + return ; + } + +- status = camel_medium_get_header ( CAMEL_MEDIUM(msg), "X-gw-status-opt") ; +- if (!status) { +- g_print ("Error!! No header\n"); +- /* No need to make any call if this header is not available. +- This is the server side identifier for sent-items */ +- return ; +- } +- + /*Create the dialog*/ + d = (GtkDialog *) gtk_dialog_new (); + gtk_dialog_add_button (d, GTK_STOCK_OK, GTK_RESPONSE_OK); diff --git a/bnc-446356-a11y-crash.diff b/bnc-446356-a11y-crash.diff new file mode 100644 index 0000000..a84bea8 --- /dev/null +++ b/bnc-446356-a11y-crash.diff @@ -0,0 +1,13 @@ +Index: a11y/calendar/ea-cal-view.c +=================================================================== +--- a11y/calendar/ea-cal-view.c (revision 36795) ++++ a11y/calendar/ea-cal-view.c (working copy) +@@ -277,7 +277,7 @@ + } + g_object_notify (G_OBJECT (ea_cal_view), "accessible-name"); + g_signal_emit_by_name (ea_cal_view, "visible_data_changed"); +- g_signal_emit_by_name (ea_cal_view, "children_changed", NULL); ++ g_signal_emit_by_name (ea_cal_view, "children_changed", NULL, NULL, NULL); + #ifdef ACC_DEBUG + printf ("AccDebug: cal view date changed\n"); + #endif diff --git a/bnc-446390-corrupted-vfolders.patch b/bnc-446390-corrupted-vfolders.patch new file mode 100644 index 0000000..c026821 --- /dev/null +++ b/bnc-446390-corrupted-vfolders.patch @@ -0,0 +1,14 @@ +--- mail/mail-vfolder.c ++++ mail/mail-vfolder.c +@@ -266,6 +266,11 @@ vfolder_adduri_exec (struct _adduri_msg *m) + g_warning("Folder '%s' disappeared while I was adding/remove it to/from my vfolder", m->uri); + return; + } ++ if (strncmp(m->uri, "vfolder:/", 9) == 0 || ++ strncmp(m->uri, "email://vfolder@local", 21) == 0) { ++ printf("Ignoring loading vfolder as a subfolder \n"); ++ return; ++ } + + if (folder == NULL) + folder = mail_tool_uri_to_folder (m->uri, 0, &m->base.ex); diff --git a/evolution.changes b/evolution.changes index 49c869f..7e056e5 100644 --- a/evolution.changes +++ b/evolution.changes @@ -1,3 +1,35 @@ +------------------------------------------------------------------- +Thu Nov 20 10:40:30 CET 2008 - abharath@suse.de + +- Patches added + + bgo#556224 - bgo-556224-search-events-offline.patch - Search + folder "Include threads" setting is unreliable. + + bnc#433448 - bnc-433448-backup-restore-fails.patch - Taking + backup from Evolution does not work. + + bnc#434320 - bnc-434320-mail-notify-fix.patch - New Mail + Notification Icon should be Removed on Bar after + closing Notification Window. + + bnc#440624 - bnc-440624-six-appts-timeslot.patch - Only 6 + appointments are displayed in same time slot. + + bnc#440646 - bnc-440646-set-color-proxy.patch - Calendar colors + not displayed correctly when proxied to account. + + bnc#440649 - bnc-440649-display-meeting-bold.patch - Unaccepted + meetings should display in bold. + + bnc#443190 - bnc-443190-warning-before-editing-appt.patch - + Evolution warns about editing appointment before + appointment is displayed. + + bnc#443851 - bnc-443851-calendar-tooltip-info.patch - enhancement + fix for calendar tooltip info. + + bnc#446356 - bnc-446356-a11y-crash.diff - Evolution crash on + opening the calendars. + + bnc#446390 - bnc-446390-corrupted-vfolders.patch - corrupted + vfolders; SIGSEGV in camel_folder_get_message(). + + bnc#446286 - bnc-446286-message-tracking-status.patch - Track + Message Status not working. + + bnc#210959 - bnc-210959-evo-accept-ics.patch - Receving meeting + request from the Personal source should work in + groupwise connector. + ------------------------------------------------------------------- Thu Nov 6 07:33:08 CET 2008 - abharath@suse.de diff --git a/evolution.spec b/evolution.spec index 37323d4..909ea5d 100644 --- a/evolution.spec +++ b/evolution.spec @@ -60,7 +60,7 @@ Group: Productivity/Networking/Email/Clients # This should be updated upon major version changes; it should match BASE_VERSION as defined in configure.in. %define evolution_base_version 2.24 Version: 2.24.1.1 -Release: 1 +Release: 2 Summary: The Integrated GNOME Mail, Calendar, and Address Book Suite Source0: %{name}-%{version}.tar.bz2 Source1: summerdance-about2.png @@ -82,7 +82,7 @@ Patch16: evolution-shared-nss-db.patch Patch17: bgo-558354-alarm-notify-improved.patch # PATCH-FIX-UPSTREAM bnc-435668-hide-accept.patch bnc#435668 -- Meetings In SentItems Should Hide Accept/Decline. Patch18: bnc-435668-hide-accept.patch -# PATCH-FIX-UPSTREAM bnc-435722-book-uri-long.patch bnc#435722 -- Book URI: Spills Into Second Column. +# PATCH-FIX-UPSTREAM bnc-435722-book-uri-long.patch bnc#435722 abharath@suse.de -- Book URI: Spills Into Second Column. Patch19: bnc-435722-book-uri-long.patch # PATCH-FIX-UPSTREAM bnc-441763-diff-meeting-icon.patch bnc#441763 -- This patch shows different icons for meetings Patch20: bnc-441763-diff-meeting-icon.patch @@ -92,6 +92,30 @@ Patch21: bnc-441770-non-intrusive-calendar.patch Patch22: bnc-442135-exchange-settings-offline.patch # PATCH-FIX-UPSTREAM sharepoint-account-setup.patch pchenthill@suse.de -- This patch allows you to connect to sharepoint servers. Patch23: sharepoint-account-setup.patch +# PATCH-FIX-UPSTREAM bgo-556224-search-events-offline.patch bgo556224 -- Fix has been submitted upstream. +Patch24: bgo-556224-search-events-offline.patch +# PATCH-FIX-OPENSUSE bnc-433448-backup-restore-fails.patch bnc433448 abharath@suse.de -- Not required upstream. +Patch25: bnc-433448-backup-restore-fails.patch +# PATCH-FIX-UPSTREAM bnc-434320-mail-notify-fix.patch bnc434320 sragavan@novell.com -- Fix has been submitted upstream. +Patch26: bnc-434320-mail-notify-fix.patch +# PATCH-FIX-UPSTREAM bnc-440624-six-appts-timeslot.patch bnc440624 bgo246313 -- Fix has been submitted upstream. +Patch27: bnc-440624-six-appts-timeslot.patch +# PATCH-FIX-UPSTREAM bnc-440646-set-color-proxy.patch bnc440646 msuman@suse.de -- Fix has been submitted upstream. +Patch28: bnc-440646-set-color-proxy.patch +# PATCH-FIX-UPSTREAM bnc-440649-display-meeting-bold.patch bnc440649 bgo490503 -- Fix has been submitted upstream. +Patch29: bnc-440649-display-meeting-bold.patch +# PATCH-FIX-UPSTREAM bnc-443190-warning-before-editing-appt.patch bnc443190 msuman@suse.de -- Fix has been submitted upstream. +Patch30: bnc-443190-warning-before-editing-appt.patch +# PATCH-FIX-UPSTREAM bnc-443851-calendar-tooltip-info.patch bnc443851 bgo559604 -- Fix has been submitted upstream. +Patch31: bnc-443851-calendar-tooltip-info.patch +# PATCH-FIX-UPSTREAM bnc-446356-a11y-crash.diff bnc446356 bgo560329 -- Fix has been submitted upstream. +Patch32: bnc-446356-a11y-crash.diff +# PATCH-FIX-UPSTREAM bnc-446390-corrupted-vfolders.patch bnc446390 bgo559604 sragavan@novell.com -- Fix has been submitted upstream. +Patch33: bnc-446390-corrupted-vfolders.patch +# PATCH-FIX-UPSTREAM bnc-446286-message-tracking-status.patch bnc446286 abharath@suse.de -- Fix has been submitted upstream. +Patch34: bnc-446286-message-tracking-status.patch +# PATCH-FIX-UPSTREAM bnc-210959-evo-accept-ics.patch bnc210959 pchenthill@novell.com -- Patch yet to be pushed upstream. +Patch35: bnc-210959-evo-accept-ics.patch # PATCH-FIX-UPSTREAM evo-core-mapi-changes.diff msuman@suse.de -- This patch contains changes in the core code base for the MAPI provider. Patch100: evo-core-mapi-changes.diff Url: http://gnome.org/projects/evolution/ @@ -337,6 +361,18 @@ Authors: %patch21 %patch22 %patch23 -p1 +%patch24 +%patch25 +%patch26 +%patch27 +%patch28 +%patch29 +%patch30 +%patch31 +%patch32 +%patch33 +%patch34 +%patch35 %patch100 -p1 %build @@ -394,7 +430,7 @@ done %fdupes $RPM_BUILD_ROOT %if %suse_version > 1100 %{__mv} $RPM_BUILD_ROOT/%{_bindir}/evolution $RPM_BUILD_ROOT/%{_bindir}/evolution.bin -echo -e "#!/bin/sh\n\nLD_LIBRARY_PATH=%{_libdir}/evoldap/lib MONO_PATH=%{_libdir}/mono:%{_libdir}/dice exec -a \"%{_bindir}/evolution\" %{_bindir}/evolution.bin \$@\n\nexit \$?" > $RPM_BUILD_ROOT/%{_bindir}/evolution +echo -e "#!/bin/sh\n\ncase \$1 in\n\t\"--force-shutdown\")\n\t\tLD_LIBRARY_PATH=%{_libdir}/evoldap/lib MONO_PATH=%{_libdir}/mono:%{_libdir}/dice exec -a \"%{_bindir}/evolution\" %{_bindir}/evolution.bin \$@ &\n\t\tpkill evolution.bin\n\t\t;;\n\t*)\n\t\tLD_LIBRARY_PATH=%{_libdir}/evoldap/lib MONO_PATH=%{_libdir}/mono:%{_libdir}/dice exec -a \"%{_bindir}/evolution\" %{_bindir}/evolution.bin \$@\n\t\t;;\n\nesac\n\nexit \$?" > $RPM_BUILD_ROOT/%{_bindir}/evolution %{__chmod} +x $RPM_BUILD_ROOT/%{_bindir}/evolution %endif @@ -451,6 +487,35 @@ fi %{_libdir}/evolution/*/conduits %changelog +* Thu Nov 20 2008 abharath@suse.de +- Patches added + + bgo#556224 - bgo-556224-search-events-offline.patch - Search + folder "Include threads" setting is unreliable. + + bnc#433448 - bnc-433448-backup-restore-fails.patch - Taking + backup from Evolution does not work. + + bnc#434320 - bnc-434320-mail-notify-fix.patch - New Mail + Notification Icon should be Removed on Bar after + closing Notification Window. + + bnc#440624 - bnc-440624-six-appts-timeslot.patch - Only 6 + appointments are displayed in same time slot. + + bnc#440646 - bnc-440646-set-color-proxy.patch - Calendar colors + not displayed correctly when proxied to account. + + bnc#440649 - bnc-440649-display-meeting-bold.patch - Unaccepted + meetings should display in bold. + + bnc#443190 - bnc-443190-warning-before-editing-appt.patch - + Evolution warns about editing appointment before + appointment is displayed. + + bnc#443851 - bnc-443851-calendar-tooltip-info.patch - enhancement + fix for calendar tooltip info. + + bnc#446356 - bnc-446356-a11y-crash.diff - Evolution crash on + opening the calendars. + + bnc#446390 - bnc-446390-corrupted-vfolders.patch - corrupted + vfolders; SIGSEGV in camel_folder_get_message(). + + bnc#446286 - bnc-446286-message-tracking-status.patch - Track + Message Status not working. + + bnc#210959 - bnc-210959-evo-accept-ics.patch - Receving meeting + request from the Personal source should work in + groupwise connector. * Thu Nov 06 2008 abharath@suse.de - Update to version 2.24.1.1 Releasing Evolution under 'GNU LGPL V2 or (at your option) V3'.