diff --git a/bgo-332729-invalid-write-econfig.patch b/bgo-332729-invalid-write-econfig.patch deleted file mode 100644 index 912a345..0000000 --- a/bgo-332729-invalid-write-econfig.patch +++ /dev/null @@ -1,15 +0,0 @@ -Index: e-util/e-config.c -=================================================================== ---- e-util/e-config.c (revision 36811) -+++ e-util/e-config.c (working copy) -@@ -122,6 +122,10 @@ ep_finalise(GObject *o) - } - - while ( (wn = (struct _widget_node *)e_dlist_remhead(&p->widgets)) ) { -+ /* disconnect the gtk_widget_destroyed function from the widget */ -+ if (wn->widget) -+ g_signal_handlers_disconnect_matched (wn->widget, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, &wn->widget); -+ - g_free(wn); - } - diff --git a/bgo-556224-search-events-offline.patch b/bgo-556224-search-events-offline.patch deleted file mode 100644 index f59f9d3..0000000 --- a/bgo-556224-search-events-offline.patch +++ /dev/null @@ -1,105 +0,0 @@ -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/bgo-558354-alarm-notify-improved.patch b/bgo-558354-alarm-notify-improved.patch deleted file mode 100644 index 5216bb8..0000000 --- a/bgo-558354-alarm-notify-improved.patch +++ /dev/null @@ -1,270 +0,0 @@ -Index: calendar/gui/alarm-notify/alarm-notify-dialog.c -=================================================================== ---- calendar/gui/alarm-notify/alarm-notify-dialog.c (revision 36738) -+++ calendar/gui/alarm-notify/alarm-notify-dialog.c (working copy) -@@ -67,6 +67,7 @@ typedef struct { - GtkWidget *snooze_time_min; - GtkWidget *snooze_time_hrs; - GtkWidget *snooze_btn; -+ GtkWidget *dismiss_btn; - GtkWidget *minutes_label; - GtkWidget *hrs_label; - GtkWidget *description; -@@ -191,7 +192,30 @@ snooze_pressed_cb (GtkButton *button, gp - if (!snooze_timeout) - snooze_timeout = DEFAULT_SNOOZE_MINS; - (* funcinfo->func) (ALARM_NOTIFY_SNOOZE, snooze_timeout, funcinfo->func_data); -+} -+ -+static void -+dismiss_pressed_cb (GtkButton *button, gpointer user_data) -+{ -+ AlarmNotify *an = user_data; -+ GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (an->treeview)); -+ -+ g_return_if_fail (model != NULL); - -+ if (gtk_tree_model_iter_n_children (model, NULL) <= 1) { -+ gtk_dialog_response (GTK_DIALOG (an->dialog), GTK_RESPONSE_CLOSE); -+ } else { -+ GtkTreeIter iter; -+ AlarmFuncInfo *funcinfo = NULL; -+ GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (an->treeview)); -+ -+ if (gtk_tree_selection_get_selected (selection, &model, &iter)) -+ gtk_tree_model_get (model, &iter, ALARM_FUNCINFO_COLUMN, &funcinfo, -1); -+ -+ g_return_if_fail (funcinfo); -+ -+ (* funcinfo->func) (ALARM_NOTIFY_DISMISS, -1, funcinfo->func_data); -+ } - } - - static void -@@ -256,10 +280,11 @@ notified_alarms_dialog_new (void) - an->scrolledwindow = glade_xml_get_widget (an->xml, "treeview-scrolledwindow"); - snooze_btn = glade_xml_get_widget (an->xml, "snooze-button"); - an->snooze_btn = snooze_btn; -+ an->dismiss_btn = glade_xml_get_widget (an->xml, "dismiss-button"); - edit_btn = glade_xml_get_widget (an->xml, "edit-button"); - - if (!(an->dialog && an->scrolledwindow && an->treeview && an->snooze_time_min && an->snooze_time_hrs -- && an->description && an->location && edit_btn && snooze_btn)) { -+ && an->description && an->location && edit_btn && snooze_btn && an->dismiss_btn)) { - g_message ("alarm_notify_dialog(): Could not find all widgets in Glade file!"); - g_object_unref (an->xml); - g_free (an); -@@ -292,6 +317,7 @@ notified_alarms_dialog_new (void) - - g_signal_connect (edit_btn, "clicked", G_CALLBACK (edit_pressed_cb), an); - g_signal_connect (snooze_btn, "clicked", G_CALLBACK (snooze_pressed_cb), an); -+ g_signal_connect (an->dismiss_btn, "clicked", G_CALLBACK (dismiss_pressed_cb), an); - g_signal_connect (G_OBJECT (an->dialog), "response", G_CALLBACK (dialog_response_cb), an); - g_signal_connect (G_OBJECT (an->dialog), "destroy", G_CALLBACK (dialog_destroyed_cb), an); - -Index: calendar/gui/alarm-notify/alarm-notify-dialog.h -=================================================================== ---- calendar/gui/alarm-notify/alarm-notify-dialog.h (revision 36738) -+++ calendar/gui/alarm-notify/alarm-notify-dialog.h (working copy) -@@ -32,7 +32,8 @@ - typedef enum { - ALARM_NOTIFY_CLOSE, - ALARM_NOTIFY_SNOOZE, -- ALARM_NOTIFY_EDIT -+ ALARM_NOTIFY_EDIT, -+ ALARM_NOTIFY_DISMISS - } AlarmNotifyResult; - - typedef struct _AlarmNotificationsDialog AlarmNotificationsDialog; -Index: calendar/gui/alarm-notify/alarm-queue.c -=================================================================== ---- calendar/gui/alarm-notify/alarm-queue.c (revision 36738) -+++ calendar/gui/alarm-notify/alarm-queue.c (working copy) -@@ -1248,6 +1248,13 @@ notify_dialog_cb (AlarmNotifyResult resu - - break; - -+ case ALARM_NOTIFY_DISMISS: -+ if (alarm_notifications_dialog) { -+ GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (alarm_notifications_dialog->treeview)); -+ gtk_list_store_remove (GTK_LIST_STORE (model), &tray_data->iter); -+ } -+ break; -+ - case ALARM_NOTIFY_CLOSE: - d(printf("%s:%d (notify_dialog_cb) - Dialog close\n",__FILE__, __LINE__)); - if (alarm_notifications_dialog) { -@@ -1268,7 +1275,7 @@ notify_dialog_cb (AlarmNotifyResult resu - - /* Task to remove the tray icons */ - tray_list_remove_icons (); -- } -+ } - - break; - -Index: calendar/gui/alarm-notify/alarm-notify.glade -=================================================================== ---- calendar/gui/alarm-notify/alarm-notify.glade (revision 36738) -+++ calendar/gui/alarm-notify/alarm-notify.glade (working copy) -@@ -37,11 +37,73 @@ - True - True - True -- gtk-close -- True - GTK_RELIEF_NORMAL - True - -7 -+ -+ -+ -+ True -+ 0.5 -+ 0.5 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ -+ -+ -+ True -+ False -+ 2 -+ -+ -+ -+ True -+ gtk-close -+ 4 -+ 0.5 -+ 0.5 -+ 0 -+ 0 -+ -+ -+ 0 -+ False -+ False -+ -+ -+ -+ -+ -+ True -+ Dismiss _all -+ True -+ False -+ GTK_JUSTIFY_LEFT -+ False -+ False -+ 0.5 -+ 0.5 -+ 0 -+ 0 -+ PANGO_ELLIPSIZE_NONE -+ -1 -+ False -+ 0 -+ -+ -+ 0 -+ False -+ False -+ -+ -+ -+ -+ -+ - - - -@@ -527,6 +589,84 @@ - False - - -+ -+ -+ -+ True -+ True -+ GTK_RELIEF_NORMAL -+ True -+ -+ -+ -+ True -+ 0.5 -+ 0.5 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ 0 -+ -+ -+ -+ True -+ False -+ 2 -+ -+ -+ -+ True -+ gtk-apply -+ 4 -+ 0.5 -+ 0.5 -+ 0 -+ 0 -+ -+ -+ 0 -+ False -+ False -+ -+ -+ -+ -+ -+ True -+ _Dismiss -+ True -+ False -+ GTK_JUSTIFY_LEFT -+ False -+ False -+ 0.5 -+ 0.5 -+ 0 -+ 0 -+ PANGO_ELLIPSIZE_NONE -+ -1 -+ False -+ 0 -+ -+ -+ 0 -+ False -+ False -+ -+ -+ -+ -+ -+ -+ -+ -+ 0 -+ False -+ False -+ -+ - - - 0 diff --git a/bgo-559604-calendar-tooltip-updated.patch b/bgo-559604-calendar-tooltip-updated.patch deleted file mode 100644 index 2b1041f..0000000 --- a/bgo-559604-calendar-tooltip-updated.patch +++ /dev/null @@ -1,57 +0,0 @@ -Index: calendar/gui/e-calendar-table.c -=================================================================== ---- calendar/gui/e-calendar-table.c (revision 36811) -+++ calendar/gui/e-calendar-table.c (working copy) -@@ -432,7 +432,7 @@ 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); -+ tmp = e_calendar_view_get_attendees_status_info (new_comp, comp->client); - if (tmp) { - l = gtk_label_new (tmp); - gtk_misc_set_alignment (GTK_MISC (l), 0.0, 0.5); -Index: calendar/gui/e-calendar-view.c -=================================================================== ---- calendar/gui/e-calendar-view.c (revision 36811) -+++ calendar/gui/e-calendar-view.c (working copy) -@@ -2137,7 +2137,7 @@ e_calendar_view_move_tip (GtkWidget *wid - * Free returned pointer with g_free. - **/ - char * --e_calendar_view_get_attendees_status_info (ECalComponent *comp) -+e_calendar_view_get_attendees_status_info (ECalComponent *comp, ECal *client) - { - struct _values { - icalparameter_partstat status; -@@ -2158,7 +2158,7 @@ e_calendar_view_get_attendees_status_inf - char *res = NULL; - int i; - -- if (!comp || !e_cal_component_has_attendees (comp)) -+ if (!comp || !e_cal_component_has_attendees (comp) || !itip_organizer_is_user (comp, client)) - return NULL; - - e_cal_component_get_attendee_list (comp, &attendees); -@@ -2354,7 +2354,7 @@ e_calendar_view_get_tooltips (ECalendarV - g_free (tmp2); - g_free (tmp1); - -- tmp = e_calendar_view_get_attendees_status_info (newcomp); -+ tmp = e_calendar_view_get_attendees_status_info (newcomp, pevent->comp_data->client); - if (tmp) { - hbox = gtk_hbox_new (FALSE, 0); - gtk_box_pack_start ((GtkBox *)hbox, gtk_label_new (tmp), FALSE, FALSE, 0); -Index: calendar/gui/e-calendar-view.h -=================================================================== ---- calendar/gui/e-calendar-view.h (revision 36811) -+++ calendar/gui/e-calendar-view.h (working copy) -@@ -175,7 +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); -+char *e_calendar_view_get_attendees_status_info (ECalComponent *comp, ECal *client); - - void draw_curved_rectangle (cairo_t *cr, - double x0, diff --git a/bgo-559604-tooltip-for-gw.patch b/bgo-559604-tooltip-for-gw.patch deleted file mode 100644 index 1707bdf..0000000 --- a/bgo-559604-tooltip-for-gw.patch +++ /dev/null @@ -1,58 +0,0 @@ -Index: calendar/gui/itip-utils.c -=================================================================== ---- calendar/gui/itip-utils.c (revision 37007) -+++ calendar/gui/itip-utils.c (working copy) -@@ -83,13 +83,13 @@ itip_addresses_get_default (void) - } - - gboolean --itip_organizer_is_user (ECalComponent *comp, ECal *client) -+itip_organizer_is_user_ex (ECalComponent *comp, ECal *client, gboolean skip_cap_test) - { - ECalComponentOrganizer organizer; - const char *strip; - gboolean user_org = FALSE; - -- if (!e_cal_component_has_organizer (comp) || e_cal_get_static_capability (client, CAL_STATIC_CAPABILITY_NO_ORGANIZER)) -+ if (!e_cal_component_has_organizer (comp) || (!skip_cap_test && e_cal_get_static_capability (client, CAL_STATIC_CAPABILITY_NO_ORGANIZER))) - return FALSE; - - e_cal_component_get_organizer (comp, &organizer); -@@ -117,6 +117,12 @@ itip_organizer_is_user (ECalComponent *c - } - - gboolean -+itip_organizer_is_user (ECalComponent *comp, ECal *client) -+{ -+ return itip_organizer_is_user_ex (comp, client, FALSE); -+} -+ -+gboolean - itip_sentby_is_user (ECalComponent *comp) - { - ECalComponentOrganizer organizer; -Index: calendar/gui/itip-utils.h -=================================================================== ---- calendar/gui/itip-utils.h (revision 37007) -+++ calendar/gui/itip-utils.h (working copy) -@@ -51,6 +51,7 @@ EAccountList *itip_addresses_get (void); - EAccount *itip_addresses_get_default (void); - - gboolean itip_organizer_is_user (ECalComponent *comp, ECal *client); -+gboolean itip_organizer_is_user_ex (ECalComponent *comp, ECal *client, gboolean skip_cap_test); - gboolean itip_sentby_is_user (ECalComponent *comp); - - const gchar *itip_strip_mailto (const gchar *address); -Index: calendar/gui/e-calendar-view.c -=================================================================== ---- calendar/gui/e-calendar-view.c (revision 37007) -+++ calendar/gui/e-calendar-view.c (working copy) -@@ -2234,7 +2234,7 @@ e_calendar_view_get_attendees_status_inf - char *res = NULL; - int i; - -- if (!comp || !e_cal_component_has_attendees (comp) || !itip_organizer_is_user (comp, client)) -+ if (!comp || !e_cal_component_has_attendees (comp) || !itip_organizer_is_user_ex (comp, client, TRUE)) - return NULL; - - e_cal_component_get_attendee_list (comp, &attendees); diff --git a/bgo-562228-evo-mailbox-field.patch b/bgo-562228-evo-mailbox-field.patch deleted file mode 100644 index 90952f1..0000000 --- a/bgo-562228-evo-mailbox-field.patch +++ /dev/null @@ -1,91 +0,0 @@ ---- plugins/exchange-operations/exchange-account-setup.c 2008/12/02 05:51:59 36824 -+++ plugins/exchange-operations/exchange-account-setup.c 2008/12/02 12:23:33 36825 -@@ -613,6 +613,30 @@ - update_mailbox_param_in_url (target->account, E_ACCOUNT_TRANSPORT_URL, mailbox); - } - -+static void -+want_mailbox_toggled (GtkWidget *toggle, EConfig *config) -+{ -+ GtkWidget *entry; -+ -+ g_return_if_fail (toggle != NULL); -+ g_return_if_fail (config != NULL); -+ -+ entry = g_object_get_data (G_OBJECT (toggle), "mailbox-entry"); -+ if (entry) { -+ gboolean is_active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (toggle)); -+ EMConfigTargetAccount *target; -+ const char *mailbox; -+ -+ gtk_widget_set_sensitive (entry, is_active); -+ -+ target = (EMConfigTargetAccount *)config->target; -+ mailbox = gtk_entry_get_text (GTK_ENTRY (entry)); -+ -+ update_mailbox_param_in_url (target->account, E_ACCOUNT_SOURCE_URL, is_active ? mailbox : NULL); -+ update_mailbox_param_in_url (target->account, E_ACCOUNT_TRANSPORT_URL, is_active ? mailbox : NULL); -+ } -+} -+ - static char * - construct_owa_url (CamelURL *url) - { -@@ -645,8 +669,8 @@ - { - EMConfigTargetAccount *target_account; - const char *source_url; -- char *owa_url = NULL, *mailbox_name; -- GtkWidget *owa_entry, *mailbox_entry; -+ char *owa_url = NULL, *mailbox_name, *username; -+ GtkWidget *owa_entry, *mailbox_entry, *want_mailbox_check; - CamelURL *url; - int row; - GtkWidget *hbox, *label, *button; -@@ -679,6 +703,7 @@ - - owa_url = g_strdup (camel_url_get_param(url, "owa_url")); - mailbox_name = g_strdup (camel_url_get_param (url, "mailbox")); -+ username = g_strdup (url->user); - - /* if the host is null, then user+other info is dropped silently, force it to be kept */ - if (url->host == NULL) { -@@ -740,6 +765,19 @@ - owa_editor_entry_changed (owa_entry, data->config); - - row++; -+ want_mailbox_check = gtk_check_button_new_with_mnemonic (_("S_pecify the mailbox name")); -+ gtk_widget_show (want_mailbox_check); -+ gtk_table_attach (GTK_TABLE (data->parent), want_mailbox_check, 1, 2, row, row+1, GTK_FILL, GTK_FILL, 0, 0); -+ if (!username || !*username || !mailbox_name || !*mailbox_name || -+ g_ascii_strcasecmp (username, mailbox_name) == 0 || -+ (strchr (username, '/') && g_ascii_strcasecmp (strchr (username, '/') + 1, mailbox_name) == 0)) { -+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (want_mailbox_check), FALSE); -+ } else { -+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (want_mailbox_check), TRUE); -+ } -+ g_signal_connect (want_mailbox_check, "toggled", G_CALLBACK (want_mailbox_toggled), data->config); -+ -+ row++; - label = gtk_label_new_with_mnemonic (_("_Mailbox:")); - gtk_widget_show (label); - -@@ -750,14 +788,18 @@ - - gtk_label_set_mnemonic_widget (GTK_LABEL (label), mailbox_entry); - -+ gtk_widget_set_sensitive (mailbox_entry, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (want_mailbox_check))); -+ - g_signal_connect (mailbox_entry, "changed", G_CALLBACK (mailbox_editor_entry_changed), data->config); - g_object_set_data (G_OBJECT (button), "mailbox-entry", mailbox_entry); -+ g_object_set_data (G_OBJECT (want_mailbox_check), "mailbox-entry", mailbox_entry); - - gtk_table_attach (GTK_TABLE (data->parent), label, 0, 1, row, row+1, 0, 0, 0, 0); - gtk_table_attach (GTK_TABLE (data->parent), mailbox_entry, 1, 2, row, row+1, GTK_FILL|GTK_EXPAND, GTK_FILL, 0, 0); - - g_free (owa_url); - g_free (mailbox_name); -+ g_free (username); - - return hbox; - } diff --git a/bgo-564248-evo-copy-paste-images.patch b/bgo-564248-evo-copy-paste-images.patch deleted file mode 100644 index 40a426a..0000000 --- a/bgo-564248-evo-copy-paste-images.patch +++ /dev/null @@ -1,60 +0,0 @@ -Index: composer/e-msg-composer.c -=================================================================== ---- composer/e-msg-composer.c (revision 36891) -+++ composer/e-msg-composer.c (working copy) -@@ -67,6 +67,7 @@ - #include "e-util/e-plugin-ui.h" - #include "e-util/e-util-private.h" - #include "e-util/e-util.h" -+#include "e-util/e-mktemp.h" - #include - #include "e-signature-combo-box.h" - -@@ -2454,6 +2455,7 @@ msg_composer_paste_clipboard (GtkhtmlEdi - EMsgComposer *composer; - GtkWidget *parent; - GtkWidget *widget; -+ GtkClipboard *clipboard; - - composer = E_MSG_COMPOSER (editor); - widget = gtk_window_get_focus (GTK_WINDOW (editor)); -@@ -2464,8 +2466,37 @@ msg_composer_paste_clipboard (GtkhtmlEdi - return; - } - -- /* Chain up to parent's paste_clipboard() method. */ -- GTKHTML_EDITOR_CLASS (parent_class)->paste_clipboard (editor); -+ clipboard = gtk_widget_get_clipboard (widget, GDK_SELECTION_CLIPBOARD); -+ if (clipboard && gtk_clipboard_wait_is_image_available (clipboard)) { -+ GdkPixbuf *pixbuf; -+ -+ pixbuf = gtk_clipboard_wait_for_image (clipboard); -+ if (pixbuf) { -+ char *tmpl = g_strconcat (_("Image"), "-XXXXXX", NULL); -+ char *filename = e_mktemp (tmpl); -+ -+ g_free (tmpl); -+ -+ if (filename && gdk_pixbuf_save (pixbuf, filename, "png", NULL, NULL)) { -+ if (gtkhtml_editor_get_html_mode (editor)) { -+ char *uri = g_strconcat ("file://", filename, NULL); -+ /* this loads image async, thus cannot remove file from this */ -+ gtkhtml_editor_insert_image (editor, uri); -+ g_free (uri); -+ } else { -+ /* this loads image immediately, remove file from cache to free up disk space */ -+ e_attachment_bar_attach (E_ATTACHMENT_BAR (composer->priv->attachment_bar), filename, "image/png"); -+ g_remove (filename); -+ } -+ } -+ -+ g_free (filename); -+ g_object_unref (pixbuf); -+ } -+ } else { -+ /* Chain up to parent's paste_clipboard() method. */ -+ GTKHTML_EDITOR_CLASS (parent_class)->paste_clipboard (editor); -+ } - } - - static void diff --git a/bnc-434320-mail-notify-fix.patch b/bnc-434320-mail-notify-fix.patch deleted file mode 100644 index 3be4030..0000000 --- a/bnc-434320-mail-notify-fix.patch +++ /dev/null @@ -1,51 +0,0 @@ ---- 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-435452-lose-attendees-busy-search.patch b/bnc-435452-lose-attendees-busy-search.patch deleted file mode 100644 index 9e8dd27..0000000 --- a/bnc-435452-lose-attendees-busy-search.patch +++ /dev/null @@ -1,33 +0,0 @@ ---- calendar/gui/e-meeting-list-view.c -+++ calendar/gui/e-meeting-list-view.c -@@ -471,6 +471,21 @@ status_edited_cb (GtkCellRenderer *renderer, const gchar *path, const gchar *tex - } - - static void -+ense_update (GtkWidget *w, gpointer data1, gpointer user_data) -+{ -+ gtk_cell_editable_editing_done ((GtkCellEditable *)w); -+} -+ -+static void -+editing_started_cb (GtkCellRenderer *renderer, -+ GtkCellEditable *editable, -+ gchar *path, -+ gpointer user_data) -+{ -+ g_signal_connect (editable, "updated", G_CALLBACK(ense_update), NULL); -+} -+ -+static void - build_table (EMeetingListView *lview) - { - GtkCellRenderer *renderer; -@@ -501,6 +516,8 @@ build_table (EMeetingListView *lview) - g_object_set_data (G_OBJECT (col), "mtg-store-col", GINT_TO_POINTER (E_MEETING_STORE_ATTENDEE_COL)); - g_signal_connect (renderer, "cell_edited", G_CALLBACK (attendee_edited_cb), view); - g_signal_connect (renderer, "editing-canceled", G_CALLBACK (attendee_editing_canceled_cb), view); -+ g_signal_connect (renderer, "editing-started", G_CALLBACK (editing_started_cb), view); -+ - g_hash_table_insert (edit_table, GINT_TO_POINTER (E_MEETING_STORE_ATTENDEE_COL), renderer); - - renderer = e_cell_renderer_combo_new (); diff --git a/bnc-435455-attendees-meeting-resize.patch b/bnc-435455-attendees-meeting-resize.patch deleted file mode 100644 index c098361..0000000 --- a/bnc-435455-attendees-meeting-resize.patch +++ /dev/null @@ -1,496 +0,0 @@ -Index: calendar/gui/e-day-view-main-item.c -=================================================================== ---- calendar/gui/e-day-view-main-item.c (revision 36947) -+++ calendar/gui/e-day-view-main-item.c (working copy) -@@ -940,146 +940,18 @@ - if (day_view->resize_drag_pos != E_CALENDAR_VIEW_POS_NONE - && day_view->resize_event_day == day - && day_view->resize_event_num == event_num) { -- resize_flag = TRUE; - -+ /* If the item is being resized, don't resized it. -+ I have removed code which are resized the meeting. -+ It will block the resize or move the meeting in -+ calendar UI from attendee side.*/ - if (day_view->resize_drag_pos == E_CALENDAR_VIEW_POS_TOP_EDGE) - bar_y1 = item_y + 1; - -- else if (day_view->resize_drag_pos == E_CALENDAR_VIEW_POS_BOTTOM_EDGE) { -+ else if (day_view->resize_drag_pos == E_CALENDAR_VIEW_POS_BOTTOM_EDGE) - bar_y2 = item_y + item_h - 1; -- -- end_minute = event->end_minute; -- -- end_hour = end_minute / 60; -- end_minute = end_minute % 60; -- -- e_day_view_convert_time_to_display (day_view, end_hour, -- &end_display_hour, -- &end_resize_suffix, -- &end_suffix_width); -- -- cairo_save (cr); -- cairo_rectangle (cr, item_x + E_DAY_VIEW_BAR_WIDTH + 1.75, item_y + 2.75, -- item_w - E_DAY_VIEW_BAR_WIDTH - 4.5, -- item_h - 5.5); -- cairo_clip (cr); -- cairo_new_path (cr); -- -- if (e_calendar_view_get_use_24_hour_format (E_CALENDAR_VIEW (day_view))) { -- cairo_translate (cr, item_x + item_w - E_DAY_VIEW_BAR_WIDTH - 32, item_y + item_h - 8); -- end_resize_time = g_strdup_printf ("%2i:%02i", -- end_display_hour, end_minute); -- -- } else { -- cairo_translate (cr, item_x + item_w - E_DAY_VIEW_BAR_WIDTH - 48, item_y + item_h - 8); -- end_resize_time = g_strdup_printf ("%2i:%02i%s", -- end_display_hour, end_minute, -- end_resize_suffix); -- } -- cairo_set_font_size (cr, 14); -- if ((red/cc > 0.7) || (green/cc > 0.7) || (blue/cc > 0.7 )) -- cairo_set_source_rgb (cr, 0, 0, 0); -- else -- cairo_set_source_rgb (cr, 1, 1, 1); -- cairo_set_font_options (cr, font_options); -- cairo_show_text (cr, end_resize_time); -- cairo_close_path (cr); -- cairo_restore (cr); -- } - } - -- if (bar_y2 > scroll_flag) -- event->end_minute += day_view->mins_per_row; -- else if (bar_y2 < scroll_flag) -- event->end_minute -= day_view->mins_per_row; -- -- if (!short_event) -- { -- if (event->start_minute % day_view->mins_per_row != 0 -- || (day_view->show_event_end_times -- && event->end_minute % day_view->mins_per_row != 0)) { -- offset = day_view->first_hour_shown * 60 -- + day_view->first_minute_shown; -- show_span = TRUE; -- } else { -- offset = 0; -- } -- start_minute = offset + event->start_minute; -- end_minute = offset + event->end_minute; -- -- format_time = (((end_minute - start_minute)/day_view->mins_per_row) >= 2) ? TRUE : FALSE; -- -- start_hour = start_minute / 60; -- start_minute = start_minute % 60; -- -- end_hour = end_minute / 60; -- end_minute = end_minute % 60; -- -- e_day_view_convert_time_to_display (day_view, start_hour, -- &start_display_hour, -- &start_suffix, -- &start_suffix_width); -- e_day_view_convert_time_to_display (day_view, end_hour, -- &end_display_hour, -- &end_suffix, -- &end_suffix_width); -- -- if (e_calendar_view_get_use_24_hour_format (E_CALENDAR_VIEW (day_view))) { -- if (day_view->show_event_end_times && show_span) { -- /* 24 hour format with end time. */ -- text = g_strdup_printf -- ("%2i:%02i-%2i:%02i", -- start_display_hour, start_minute, -- end_display_hour, end_minute); -- } else { -- if (format_time) { -- /* 24 hour format without end time. */ -- text = g_strdup_printf -- ("%2i:%02i", -- start_display_hour, start_minute); -- } -- } -- } else { -- if (day_view->show_event_end_times && show_span) { -- /* 12 hour format with end time. */ -- text = g_strdup_printf -- ("%2i:%02i%s-%2i:%02i%s", -- start_display_hour, start_minute, -- start_suffix, -- end_display_hour, end_minute, end_suffix); -- } else { -- /* 12 hour format without end time. */ -- text = g_strdup_printf -- ("%2i:%02i%s", -- start_display_hour, start_minute, -- start_suffix); -- } -- } -- -- cairo_save (cr); -- cairo_rectangle (cr, item_x + E_DAY_VIEW_BAR_WIDTH + 1.75, item_y + 2.75, -- item_w - E_DAY_VIEW_BAR_WIDTH - 4.5, -- 14); -- cairo_clip (cr); -- cairo_new_path (cr); -- if (resize_flag) -- cairo_move_to (cr, item_x + E_DAY_VIEW_BAR_WIDTH + 10, item_y + 13); -- else -- cairo_move_to (cr, item_x + E_DAY_VIEW_BAR_WIDTH + 14, item_y + 13); -- if ((red/cc > 0.7) || (green/cc > 0.7) || (blue/cc > 0.7 )) -- cairo_set_source_rgb (cr, 0, 0, 0); -- else -- cairo_set_source_rgb (cr, 1, 1, 1); -- cairo_set_font_size (cr, 14.0); -- cairo_set_font_options (cr, font_options); -- cairo_show_text (cr, text); -- cairo_close_path (cr); -- cairo_restore (cr); -- } -- -- if (font_options) -- cairo_font_options_destroy (font_options); -- - comp = e_cal_component_new (); - e_cal_component_set_icalcomponent (comp, icalcomponent_new_clone (event->comp_data->icalcomp)); - -@@ -1115,188 +987,181 @@ - &day_view->colors[E_DAY_VIEW_COLOR_EVENT_VBAR]); - - /* Draw the reminder & recurrence icons, if needed. */ -- if (!resize_flag) { -- num_icons = 0; -- draw_reminder_icon = FALSE; -- draw_recurrence_icon = FALSE; -- draw_timezone_icon = FALSE; -- draw_meeting_icon = FALSE; -- draw_attach_icon = FALSE; -- icon_x = item_x + E_DAY_VIEW_BAR_WIDTH + E_DAY_VIEW_ICON_X_PAD; -- icon_y = item_y + E_DAY_VIEW_EVENT_BORDER_HEIGHT -- + E_DAY_VIEW_ICON_Y_PAD; -+ num_icons = 0; -+ draw_reminder_icon = FALSE; -+ draw_recurrence_icon = FALSE; -+ draw_timezone_icon = FALSE; -+ draw_meeting_icon = FALSE; -+ draw_attach_icon = FALSE; -+ icon_x = item_x + E_DAY_VIEW_BAR_WIDTH + E_DAY_VIEW_ICON_X_PAD; -+ icon_y = item_y + E_DAY_VIEW_EVENT_BORDER_HEIGHT -+ + E_DAY_VIEW_ICON_Y_PAD; - -- if (e_cal_component_has_alarms (comp)) { -- draw_reminder_icon = TRUE; -- num_icons++; -- } -+ if (e_cal_component_has_alarms (comp)) { -+ draw_reminder_icon = TRUE; -+ num_icons++; -+ } - -- if (e_cal_component_has_recurrences (comp) || e_cal_component_is_instance (comp)) { -- draw_recurrence_icon = TRUE; -- num_icons++; -- } -- if (e_cal_component_has_attachments (comp)) { -- draw_attach_icon = TRUE; -- num_icons++; -- } -- /* If the DTSTART or DTEND are in a different timezone to our current -- timezone, we display the timezone icon. */ -- if (event->different_timezone) { -- draw_timezone_icon = TRUE; -- num_icons++; -- } -+ if (e_cal_component_has_recurrences (comp) || e_cal_component_is_instance (comp)) { -+ draw_recurrence_icon = TRUE; -+ num_icons++; -+ } -+ if (e_cal_component_has_attachments (comp)) { -+ draw_attach_icon = TRUE; -+ num_icons++; -+ } -+ /* If the DTSTART or DTEND are in a different timezone to our current -+ timezone, we display the timezone icon. */ -+ if (event->different_timezone) { -+ draw_timezone_icon = TRUE; -+ num_icons++; -+ } - -- if (e_cal_component_has_organizer (comp)) { -- draw_meeting_icon = TRUE; -- num_icons++; -- } -+ if (e_cal_component_has_organizer (comp)) { -+ draw_meeting_icon = TRUE; -+ num_icons++; -+ } - -- num_icons += cal_comp_util_get_n_icons (comp); -- e_cal_component_get_categories_list (comp, &categories_list); -+ num_icons += cal_comp_util_get_n_icons (comp); -+ e_cal_component_get_categories_list (comp, &categories_list); - -- if (num_icons != 0) { -- if (item_h >= (E_DAY_VIEW_ICON_HEIGHT + E_DAY_VIEW_ICON_Y_PAD) -- * num_icons) { -- icon_x_inc = 0; -- icon_y_inc = E_DAY_VIEW_ICON_HEIGHT -- + E_DAY_VIEW_ICON_Y_PAD; -- } else { -- icon_x_inc = E_DAY_VIEW_ICON_WIDTH -- + E_DAY_VIEW_ICON_X_PAD; -- icon_y_inc = 0; -- } -+ if (num_icons != 0) { -+ if (item_h >= (E_DAY_VIEW_ICON_HEIGHT + E_DAY_VIEW_ICON_Y_PAD) -+ * num_icons) { -+ icon_x_inc = 0; -+ icon_y_inc = E_DAY_VIEW_ICON_HEIGHT -+ + E_DAY_VIEW_ICON_Y_PAD; -+ } else { -+ icon_x_inc = E_DAY_VIEW_ICON_WIDTH -+ + E_DAY_VIEW_ICON_X_PAD; -+ icon_y_inc = 0; -+ } - -- if (draw_reminder_icon) { -- max_icon_w = item_x + item_w - icon_x -- - E_DAY_VIEW_EVENT_BORDER_WIDTH; -- max_icon_h = item_y + item_h - icon_y -- - E_DAY_VIEW_EVENT_BORDER_HEIGHT; -+ if (draw_reminder_icon) { -+ max_icon_w = item_x + item_w - icon_x -+ - E_DAY_VIEW_EVENT_BORDER_WIDTH; -+ max_icon_h = item_y + item_h - icon_y -+ - E_DAY_VIEW_EVENT_BORDER_HEIGHT; - -- cairo_save (cr); -- cairo_rectangle (cr, icon_x, icon_y, max_icon_w, max_icon_h); -- cairo_clip (cr); -- cairo_new_path (cr); -- gdk_cairo_set_source_pixbuf (cr, day_view->reminder_icon, icon_x, icon_y); -- cairo_paint (cr); -- cairo_close_path (cr); -- cairo_restore (cr); -+ cairo_save (cr); -+ cairo_rectangle (cr, icon_x, icon_y, max_icon_w, max_icon_h); -+ cairo_clip (cr); -+ cairo_new_path (cr); -+ gdk_cairo_set_source_pixbuf (cr, day_view->reminder_icon, icon_x, icon_y); -+ cairo_paint (cr); -+ cairo_close_path (cr); -+ cairo_restore (cr); -+ icon_x += icon_x_inc; -+ icon_y += icon_y_inc; -+ } - -- icon_x += icon_x_inc; -- icon_y += icon_y_inc; -- } -+ if (draw_recurrence_icon) { -+ max_icon_w = item_x + item_w - icon_x -+ - E_DAY_VIEW_EVENT_BORDER_WIDTH; -+ max_icon_h = item_y + item_h - icon_y -+ - E_DAY_VIEW_EVENT_BORDER_HEIGHT; - -- if (draw_recurrence_icon) { -- max_icon_w = item_x + item_w - icon_x -- - E_DAY_VIEW_EVENT_BORDER_WIDTH; -- max_icon_h = item_y + item_h - icon_y -- - E_DAY_VIEW_EVENT_BORDER_HEIGHT; -+ cairo_save (cr); -+ cairo_rectangle (cr, icon_x, icon_y, max_icon_w, max_icon_h); -+ cairo_clip (cr); -+ cairo_new_path (cr); -+ gdk_cairo_set_source_pixbuf (cr, day_view->recurrence_icon, icon_x, icon_y); -+ cairo_paint (cr); -+ cairo_close_path (cr); -+ cairo_restore (cr); -+ icon_x += icon_x_inc; -+ icon_y += icon_y_inc; -+ } -+ if (draw_attach_icon) { -+ max_icon_w = item_x + item_w - icon_x -+ - E_DAY_VIEW_EVENT_BORDER_WIDTH; -+ max_icon_h = item_y + item_h - icon_y -+ - E_DAY_VIEW_EVENT_BORDER_HEIGHT; - -- cairo_save (cr); -- cairo_rectangle (cr, icon_x, icon_y, max_icon_w, max_icon_h); -- cairo_clip (cr); -- cairo_new_path (cr); -- gdk_cairo_set_source_pixbuf (cr, day_view->recurrence_icon, icon_x, icon_y); -- cairo_paint (cr); -- cairo_close_path (cr); -- cairo_restore (cr); -+ cairo_save (cr); -+ cairo_rectangle (cr, icon_x, icon_y, max_icon_w, max_icon_h); -+ cairo_clip (cr); -+ cairo_new_path (cr); -+ gdk_cairo_set_source_pixbuf (cr, day_view->attach_icon, icon_x, icon_y); -+ cairo_paint (cr); -+ cairo_close_path (cr); -+ cairo_restore (cr); -+ icon_x += icon_x_inc; -+ icon_y += icon_y_inc; -+ } -+ if (draw_timezone_icon) { -+ max_icon_w = item_x + item_w - icon_x -+ - E_DAY_VIEW_EVENT_BORDER_WIDTH; -+ max_icon_h = item_y + item_h - icon_y -+ - E_DAY_VIEW_EVENT_BORDER_HEIGHT; - -- icon_x += icon_x_inc; -- icon_y += icon_y_inc; -- } -- if (draw_attach_icon) { -- max_icon_w = item_x + item_w - icon_x -- - E_DAY_VIEW_EVENT_BORDER_WIDTH; -- max_icon_h = item_y + item_h - icon_y -- - E_DAY_VIEW_EVENT_BORDER_HEIGHT; -+ cairo_save (cr); -+ cairo_rectangle (cr, icon_x, icon_y, max_icon_w, max_icon_h); -+ cairo_clip (cr); -+ cairo_new_path (cr); -+ gdk_cairo_set_source_pixbuf (cr, day_view->timezone_icon, icon_x, icon_y); -+ cairo_paint (cr); -+ cairo_close_path (cr); -+ cairo_restore (cr); -+ icon_x += icon_x_inc; -+ icon_y += icon_y_inc; -+ } - -- cairo_save (cr); -- cairo_rectangle (cr, icon_x, icon_y, max_icon_w, max_icon_h); -- cairo_clip (cr); -- cairo_new_path (cr); -- gdk_cairo_set_source_pixbuf (cr, day_view->attach_icon, icon_x, icon_y); -- cairo_paint (cr); -- cairo_close_path (cr); -- cairo_restore (cr); -- icon_x += icon_x_inc; -- icon_y += icon_y_inc; -- } -- if (draw_timezone_icon) { -- max_icon_w = item_x + item_w - icon_x -- - E_DAY_VIEW_EVENT_BORDER_WIDTH; -- max_icon_h = item_y + item_h - icon_y -- - E_DAY_VIEW_EVENT_BORDER_HEIGHT; -+ if (draw_meeting_icon) { -+ max_icon_w = item_x + item_w - icon_x -+ - E_DAY_VIEW_EVENT_BORDER_WIDTH; -+ max_icon_h = item_y + item_h - icon_y -+ - E_DAY_VIEW_EVENT_BORDER_HEIGHT; - -- cairo_save (cr); -- cairo_rectangle (cr, icon_x, icon_y, max_icon_w, max_icon_h); -- cairo_clip (cr); -- cairo_new_path (cr); -- gdk_cairo_set_source_pixbuf (cr, day_view->timezone_icon, icon_x, icon_y); -- cairo_paint (cr); -- cairo_close_path (cr); -- cairo_restore (cr); -+ cairo_save (cr); -+ gdk_cairo_set_source_pixbuf (cr, day_view->meeting_icon, icon_x, icon_y); -+ cairo_paint (cr); -+ cairo_restore (cr); - -- icon_x += icon_x_inc; -- icon_y += icon_y_inc; -- } -+ icon_x += icon_x_inc; -+ icon_y += icon_y_inc; -+ } - -+ /* draw categories icons */ -+ for (elem = categories_list; elem; elem = elem->next) { -+ char *category; -+ GdkPixmap *pixmap = NULL; -+ GdkBitmap *mask = NULL; - -- if (draw_meeting_icon) { -- max_icon_w = item_x + item_w - icon_x -- - E_DAY_VIEW_EVENT_BORDER_WIDTH; -- max_icon_h = item_y + item_h - icon_y -- - E_DAY_VIEW_EVENT_BORDER_HEIGHT; -+ category = (char *) elem->data; -+ if (!e_categories_config_get_icon_for (category, &pixmap, &mask)) -+ continue; - -- cairo_save (cr); -- gdk_cairo_set_source_pixbuf (cr, day_view->meeting_icon, icon_x, icon_y); -- cairo_paint (cr); -- cairo_restore (cr); -+ max_icon_w = item_x + item_w - icon_x -+ - E_DAY_VIEW_EVENT_BORDER_WIDTH; -+ max_icon_h = item_y + item_h - icon_y -+ - E_DAY_VIEW_EVENT_BORDER_HEIGHT; - -- icon_x += icon_x_inc; -- icon_y += icon_y_inc; -- } -+ gdk_gc_set_clip_origin (gc, icon_x, icon_y); -+ if (mask != NULL) -+ gdk_gc_set_clip_mask (gc, mask); -+ gdk_draw_drawable (drawable, gc, -+ pixmap, -+ 0, 0, icon_x, icon_y, -+ MIN (E_DAY_VIEW_ICON_WIDTH, -+ max_icon_w), -+ MIN (E_DAY_VIEW_ICON_HEIGHT, -+ max_icon_h)); - -- /* draw categories icons */ -- for (elem = categories_list; elem; elem = elem->next) { -- char *category; -- GdkPixmap *pixmap = NULL; -- GdkBitmap *mask = NULL; -+ g_object_unref (pixmap); -+ if (mask != NULL) -+ g_object_unref (mask); - -- category = (char *) elem->data; -- if (!e_categories_config_get_icon_for (category, &pixmap, &mask)) -- continue; -- -- max_icon_w = item_x + item_w - icon_x -- - E_DAY_VIEW_EVENT_BORDER_WIDTH; -- max_icon_h = item_y + item_h - icon_y -- - E_DAY_VIEW_EVENT_BORDER_HEIGHT; -- -- gdk_gc_set_clip_origin (gc, icon_x, icon_y); -- if (mask != NULL) -- gdk_gc_set_clip_mask (gc, mask); -- gdk_draw_drawable (drawable, gc, -- pixmap, -- 0, 0, icon_x, icon_y, -- MIN (E_DAY_VIEW_ICON_WIDTH, -- max_icon_w), -- MIN (E_DAY_VIEW_ICON_HEIGHT, -- max_icon_h)); -- -- g_object_unref (pixmap); -- if (mask != NULL) -- g_object_unref (mask); -- -- icon_x += icon_x_inc; -- icon_y += icon_y_inc; -- } -- -- gdk_gc_set_clip_mask (gc, NULL); -+ icon_x += icon_x_inc; -+ icon_y += icon_y_inc; - } - -- /* free memory */ -- e_cal_component_free_categories_list (categories_list); -+ gdk_gc_set_clip_mask (gc, NULL); - } - -- g_free (text); -+ /* free memory */ -+ e_cal_component_free_categories_list (categories_list); -+ - g_object_unref (comp); - cairo_destroy (cr); - } diff --git a/bnc-435694-retract-feature-broken.patch b/bnc-435694-retract-feature-broken.patch deleted file mode 100644 index 5cd472c..0000000 --- a/bnc-435694-retract-feature-broken.patch +++ /dev/null @@ -1,15 +0,0 @@ -Index: plugins/groupwise-features/mail-retract.c -=================================================================== ---- plugins/groupwise-features/mail-retract.c (revision 36818) -+++ plugins/groupwise-features/mail-retract.c (working copy) -@@ -104,8 +104,8 @@ - - /* for translation*/ - if (!first) { -- popup_items[0].label = _(popup_items[0].label); -- popup_items[0].user_data = g_strdup((char *) g_ptr_array_index(uids, 0)); -+ popup_items[1].label = _(popup_items[1].label); -+ popup_items[1].user_data = g_strdup((char *) g_ptr_array_index(uids, 0)); - } - - first++; diff --git a/bnc-439733-bogofilter-junk-training.patch b/bnc-439733-bogofilter-junk-training.patch deleted file mode 100644 index 99fc555..0000000 --- a/bnc-439733-bogofilter-junk-training.patch +++ /dev/null @@ -1,96 +0,0 @@ ---- plugins/bogo-junk-plugin/Makefile.am -+++ plugins/bogo-junk-plugin/Makefile.am -@@ -1,5 +1,6 @@ - INCLUDES = \ - -I$(top_srcdir) \ -+ -DWELCOME_MESSAGE=\""$(privdatadir)/default/C/mail/local/Inbox"\" \ - $(EVOLUTION_MAIL_CFLAGS) - - @EVO_PLUGIN_RULE@ ---- plugins/bogo-junk-plugin/bf-junk-filter.c -+++ plugins/bogo-junk-plugin/bf-junk-filter.c -@@ -40,6 +40,8 @@ - #include "mail/em-config.h" - #include - #include -+#include -+#include - #include - #include - #include -@@ -69,6 +71,7 @@ void *em_junk_bf_validate_binary (EPlugin *ep, EMJunkHookTarget *target); - void em_junk_bf_report_junk (EPlugin *ep, EMJunkHookTarget *target); - void em_junk_bf_report_non_junk (EPlugin *ep, EMJunkHookTarget *target); - void em_junk_bf_commit_reports (EPlugin *ep, EMJunkHookTarget *target); -+static gint pipe_to_bogofilter (CamelMimeMessage *msg, gchar **argv, GError **error); - - /* eplugin stuff */ - int e_plugin_lib_enable (EPluginLib *ep, int enable); -@@ -78,6 +81,37 @@ int e_plugin_lib_enable (EPluginLib *ep, int enable); - - static gboolean em_junk_bf_unicode = TRUE; - -+static void -+init_db () -+{ -+ CamelStream *stream = camel_stream_fs_new_with_name (WELCOME_MESSAGE, O_RDONLY, 0); -+ CamelMimeParser *parser = camel_mime_parser_new (); -+ CamelMimeMessage *msg = camel_mime_message_new (); -+ gchar *argv[] = { -+ em_junk_bf_binary, -+ "-n", -+ NULL, -+ NULL -+ }; -+ -+ camel_mime_parser_init_with_stream (parser, stream); -+ camel_mime_parser_scan_from (parser, FALSE); -+ camel_object_unref (stream); -+ -+ camel_mime_part_construct_from_parser ((CamelMimePart *) msg, parser); -+ camel_object_unref (parser); -+ -+ d(fprintf (stderr, "Initing the bogofilter DB with Welcome message\n")); -+ -+ if (em_junk_bf_unicode) { -+ argv[2] = "--unicode=yes"; -+ } -+ -+ pipe_to_bogofilter (msg, argv, NULL); -+ camel_object_unref (msg); -+ -+} -+ - static gint - pipe_to_bogofilter (CamelMimeMessage *msg, gchar **argv, GError **error) - { -@@ -88,7 +122,9 @@ pipe_to_bogofilter (CamelMimeMessage *msg, gchar **argv, GError **error) - gint status; - gint waitres; - gint res; -+ static gboolean only_once = FALSE; - -+retry: - if (camel_debug_start ("junk")) { - int i; - -@@ -153,8 +189,17 @@ pipe_to_bogofilter (CamelMimeMessage *msg, gchar **argv, GError **error) - res = BOGOFILTER_ERROR; - } - -- if (res < 0 || res > 2) -+ if (res < 0 || res > 2) { -+ if (!only_once) { -+ /* Create wordlist.db */ -+ only_once = TRUE; -+ init_db(); -+ -+ goto retry; -+ } - g_set_error (error, EM_JUNK_ERROR, res, _("Pipe to Bogofilter failed, error code: %d."), res); -+ -+ } - - return res; - } - diff --git a/bnc-439987-classify-sensitivity.patch b/bnc-439987-classify-sensitivity.patch deleted file mode 100644 index 0f4082a..0000000 --- a/bnc-439987-classify-sensitivity.patch +++ /dev/null @@ -1,26 +0,0 @@ ---- calendar/gui/dialogs/comp-editor.c -+++ calendar/gui/dialogs/comp-editor.c -@@ -1771,6 +1771,14 @@ comp_editor_class_init (CompEditorClass *class) - G_TYPE_NONE, 0); - } - -+static void -+on_classification_changed (GtkRadioAction *action, GtkRadioAction *current, gpointer *data) -+{ -+ CompEditor *editor = COMP_EDITOR (data); -+ -+ comp_editor_set_changed (editor, TRUE); -+} -+ - static void - comp_editor_init (CompEditor *editor) - { -@@ -1820,7 +1828,7 @@ comp_editor_init (CompEditor *editor) - action_group, classification_radio_entries, - G_N_ELEMENTS (classification_radio_entries), - E_CAL_COMPONENT_CLASS_PUBLIC, -- NULL, NULL); /* no callback */ -+ G_CALLBACK (on_classification_changed), editor); /* no callback */ - action = e_attachment_bar_recent_action_new ( - E_ATTACHMENT_BAR (priv->attachment_bar), - "attach-recent", _("Recent _Documents")); diff --git a/bnc-439998-delete-delegated-events.patch b/bnc-439998-delete-delegated-events.patch deleted file mode 100644 index a652692..0000000 --- a/bnc-439998-delete-delegated-events.patch +++ /dev/null @@ -1,65 +0,0 @@ -Index: calendar/gui/dialogs/comp-editor.c -=================================================================== ---- calendar/gui/dialogs/comp-editor.c (revision 36884) -+++ calendar/gui/dialogs/comp-editor.c (working copy) -@@ -1102,6 +1102,24 @@ - g_object_unref (comp); - } - -+static gboolean -+remove_event_dialog (ECal *client, -+ ECalComponent *comp, -+ GtkWindow *parent) -+{ -+ GtkWidget *dialog; -+ gboolean ret; -+ -+ g_return_val_if_fail (E_IS_CAL_COMPONENT (comp), TRUE); -+ -+ dialog = gtk_message_dialog_new (parent, 0, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, "%s", _("Keep original item?")); -+ gtk_window_set_resizable (GTK_WINDOW (dialog), TRUE); -+ ret = gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_YES; -+ gtk_widget_destroy (dialog); -+ -+ return ret; -+} -+ - static void - action_save_cb (GtkAction *action, - CompEditor *editor) -@@ -1153,9 +1171,33 @@ - if (!text.value) - if (!send_component_prompt_subject ((GtkWindow *) editor, priv->client, priv->comp)) - return; -- if (save_comp_with_send (editor)) -- close_dialog (editor); - -+ if (save_comp_with_send (editor)) { -+ CompEditorFlags flags; -+ gboolean delegate; -+ -+ flags = comp_editor_get_flags (editor); -+ delegate = flags & COMP_EDITOR_DELEGATE; -+ -+ if (delegate && !remove_event_dialog (priv->client, priv->comp, GTK_WINDOW (editor))) { -+ const char *uid = NULL; -+ GError *error = NULL; -+ -+ e_cal_component_get_uid (priv->comp, &uid); -+ -+ if (e_cal_component_is_instance (priv->comp) || e_cal_component_has_recurrences (priv->comp)) { -+ gchar *rid; -+ rid = e_cal_component_get_recurid_as_string (priv->comp); -+ e_cal_remove_object_with_mod (priv->client, uid, rid, priv->mod, &error); -+ g_free (rid); -+ } else -+ e_cal_remove_object (priv->client, uid, &error); -+ -+ g_clear_error (&error); -+ } -+ } -+ -+ close_dialog (editor); - } - - static void diff --git a/bnc-440624-six-appts-timeslot.patch b/bnc-440624-six-appts-timeslot.patch deleted file mode 100644 index 98a4a4c..0000000 --- a/bnc-440624-six-appts-timeslot.patch +++ /dev/null @@ -1,441 +0,0 @@ -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 deleted file mode 100644 index b1d9063..0000000 --- a/bnc-440646-set-color-proxy.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- 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 deleted file mode 100644 index b73c8d8..0000000 --- a/bnc-440649-display-meeting-bold.patch +++ /dev/null @@ -1,152 +0,0 @@ -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-441763-diff-meeting-icon.patch b/bnc-441763-diff-meeting-icon.patch deleted file mode 100644 index 9c310f2..0000000 --- a/bnc-441763-diff-meeting-icon.patch +++ /dev/null @@ -1,48 +0,0 @@ -Index: plugins/itip-formatter/itip-formatter.c -=================================================================== ---- plugins/itip-formatter/itip-formatter.c (revision 35684) -+++ plugins/itip-formatter/itip-formatter.c (working copy) -@@ -2242,6 +2242,11 @@ format_itip (EPlugin *ep, EMFormatHookTa - - classid = g_strdup_printf("itip:///%s", ((EMFormat *) target->format)->part_id->str); - -+ /* mark message as containing calendar, thus it will show the icon in message list now on */ -+ if (target->format->uid && target->format->folder && -+ !camel_folder_get_message_user_flag (target->format->folder, target->format->uid, "$has_cal")) -+ camel_folder_set_message_user_flag (target->format->folder, target->format->uid, "$has_cal", TRUE); -+ - puri = (struct _itip_puri *)em_format_add_puri(target->format, sizeof(struct _itip_puri), classid, target->part, itip_attachment_frame); - - pobj = em_format_html_add_pobject ((EMFormatHTML *) target->format, sizeof (EMFormatHTMLPObject), classid, target->part, format_itip_object); -Index: mail/message-list.c -=================================================================== ---- mail/message-list.c (revision 35684) -+++ mail/message-list.c (working copy) -@@ -234,6 +234,7 @@ static struct { - { "stock_score-highest", NULL }, - { "stock_mail-flag-for-followup", NULL }, - { "stock_mail-flag-for-followup-done", NULL }, -+ { "stock_new-meeting", NULL } - }; - - /* FIXME: junk prefs */ -@@ -1339,6 +1340,8 @@ ml_tree_value_at (ETreeModel *etm, ETree - str = camel_message_info_user_tag(msg_info, "follow-up"); - return (void *)(str ? str : ""); - case COL_ATTACHMENT: -+ if (camel_message_info_user_flag (msg_info, "$has_cal")) -+ return GINT_TO_POINTER (2); - return GINT_TO_POINTER ((camel_message_info_flags(msg_info) & CAMEL_MESSAGE_ATTACHMENTS) != 0); - case COL_FROM: - str = camel_message_info_from (msg_info); -@@ -1733,8 +1736,9 @@ message_list_create_extras (void) - - for (i = 0; i < 2; i++) - images [i] = states_pixmaps [i + 6].pixbuf; -+ images [2] = states_pixmaps [18].pixbuf; - -- e_table_extras_add_cell (extras, "render_attachment", e_cell_toggle_new (0, 2, images)); -+ e_table_extras_add_cell (extras, "render_attachment", e_cell_toggle_new (0, 3, images)); - - images [1] = states_pixmaps [8].pixbuf; - e_table_extras_add_cell (extras, "render_flagged", e_cell_toggle_new (0, 2, images)); diff --git a/bnc-441770-non-intrusive-calendar.patch b/bnc-441770-non-intrusive-calendar.patch deleted file mode 100644 index 1498799..0000000 --- a/bnc-441770-non-intrusive-calendar.patch +++ /dev/null @@ -1,1168 +0,0 @@ ---- calendar/calendar.error.xml 2008-10-13 14:13:56.000000000 +0530 -+++ calendar/calendar.error.xml 2008-11-05 16:53:41.000000000 +0530 -@@ -176,6 +176,23 @@ - <_secondary>Your memos will not be available until Evolution is restarted. - - -+ -+ <_primary>The Evolution calendars have quit unexpectedly. -+ <_secondary>Your calendars will not be available until Evolution is restarted. -+ -+ -+ -+ <_primary>Unable to load the calendar -+ <_secondary>Calendar repository is offline. -+