Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.1
evolution
bnc-472719-evo-disk-summary-patches.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File bnc-472719-evo-disk-summary-patches.patch of Package evolution
--- e-util/e-util.c 2008-11-07 10:04:08.000000000 +0530 +++ e-util/e-util.c 2009-02-04 11:45:58.000000000 +0530 @@ -39,7 +39,7 @@ #include <glib/gi18n.h> #include <glib/gstdio.h> #include <libgnome/gnome-help.h> -#include <libgnome/gnome-util.h> +#include <libgnome/gnome-init.h> #ifdef G_OS_WIN32 #include <windows.h> @@ -70,6 +70,27 @@ e_get_user_data_dir (void) } /** + * e_get_accels_filename: + * + * Returns the name of the user data file containing custom keyboard + * accelerator specifications. + * + * Returns: filename for accelerator specifications + **/ +const gchar * +e_get_accels_filename (void) +{ + static gchar *filename = NULL; + + if (G_UNLIKELY (filename == NULL)) + filename = g_build_filename ( + gnome_user_dir_get (), + "accels", PACKAGE, NULL); + + return filename; +} + +/** * e_display_help: * @parent: a parent #GtkWindow or %NULL * @link_id: help section to present or %NULL --- e-util/e-util.h 2008-10-13 14:13:22.000000000 +0530 +++ e-util/e-util.h 2009-02-04 11:45:58.000000000 +0530 @@ -41,6 +41,7 @@ typedef enum { } EFocus; const gchar * e_get_user_data_dir (void); +const gchar * e_get_accels_filename (void); void e_display_help (GtkWindow *parent, const gchar *link_id); --- e-util/e-util-labels.c 2009-02-04 09:57:29.000000000 +0530 +++ e-util/e-util-labels.c 2009-02-04 11:48:00.000000000 +0530 @@ -83,7 +83,7 @@ e_util_labels_parse (GConfClient *client /* Needed for Backward Compatibility */ if (num < LABEL_DEFAULTS_NUM) { - label->name = g_strdup (_(buf)); + label->name = g_strdup ((buf && *buf) ? buf : _(label_defaults[num].name)); label->tag = g_strdup (label_defaults[num].tag); num++; } else if (!tag) { --- mail/em-folder-tree.c 2008-11-07 10:04:07.000000000 +0530 +++ mail/em-folder-tree.c 2009-02-04 11:46:18.000000000 +0530 @@ -1896,7 +1896,8 @@ emft_tree_row_expanded (GtkTreeView *tre return; } - gtk_tree_store_set((GtkTreeStore *)model, root, COL_BOOL_LOAD_SUBDIRS, FALSE, -1); + /* do not set LOAD_SUBDIRS to FALSE until we are really done with loading */ + /* gtk_tree_store_set ((GtkTreeStore *)model, root, COL_BOOL_LOAD_SUBDIRS, FALSE, -1); */ m = mail_msg_new (&get_folder_info_info); m->root = gtk_tree_row_reference_new (model, tree_path); @@ -2093,6 +2094,23 @@ emft_popup_properties (EPopup *ep, EPopu g_free (uri); } +static void +emft_popup_uvfolder (EPopup *ep, EPopupItem *pitem, void *data) +{ + EMFolderTree *emft = data; + CamelFolder *folder; + char *meta = camel_object_meta_get(folder, "vfolder:unread"); + + if ((folder = em_folder_tree_get_selected_folder (emft)) != NULL) { + if (!meta || strcmp(meta, "false") == 0) + camel_object_meta_set(folder, "vfolder:unread", "true"); + else + camel_object_meta_set(folder, "vfolder:unread", "false"); + } + camel_object_state_write (folder); + g_free (meta); +} + static EPopupItem emft_popup_items[] = { #if 0 { E_POPUP_ITEM, "00.emc.00", N_("_View"), emft_popup_view, NULL, NULL, EM_POPUP_FOLDER_SELECT }, @@ -2210,6 +2228,25 @@ emft_popup (EMFolderTree *emft, GdkEvent if ((folder_type_flags & CAMEL_FOLDER_TYPE_MASK) == CAMEL_FOLDER_TYPE_TRASH) menus = g_slist_prepend (menus, &trash_popup_item); + if (!isstore && strstr(uri, "vfolder")) { + /* This is a vfolder, so lets add hacked up menu item. */ + static EPopupItem *item = NULL; + char *meta = camel_object_meta_get (selfolder, "vfolder:unread"); + + if (!item) + item = g_malloc0(sizeof(*item)); + if (meta && (strcmp (meta, "true") == 0)) + item->type = E_POPUP_TOGGLE | E_POPUP_ACTIVE; + else + item->type = E_POPUP_TOGGLE & ~E_POPUP_ACTIVE; + item->path = "99.emc.99"; + item->label = _("_Unread Search Folder"); + item->activate = emft_popup_uvfolder; + item->visible = EM_POPUP_FOLDER_SELECT; + item->user_data = NULL; + menus = g_slist_prepend (menus, item); + g_free (meta); + } e_popup_add_items ((EPopup *)emp, menus, NULL, emft_popup_free, emft); --- mail/em-folder-view.c 2008-11-07 10:04:07.000000000 +0530 +++ mail/em-folder-view.c 2009-02-04 11:46:18.000000000 +0530 @@ -478,13 +478,15 @@ em_folder_view_mark_selected(EMFolderVie return 0; uids = message_list_get_selected(emfv->list); - camel_folder_freeze(emfv->folder); + if (!CAMEL_IS_VEE_FOLDER(emfv->folder)) + camel_folder_freeze(emfv->folder); for (i=0; i<uids->len; i++) camel_folder_set_message_flags(emfv->folder, uids->pdata[i], mask, set); message_list_free_uids(emfv->list, uids); - camel_folder_thaw(emfv->folder); + if (!CAMEL_IS_VEE_FOLDER(emfv->folder)) + camel_folder_thaw(emfv->folder); return i; } @@ -886,6 +888,7 @@ emfv_popup_source(EPopup *ep, EPopupItem emmb = (EMMessageBrowser *)em_message_browser_window_new(); em_format_set_session((EMFormat *)((EMFolderView *)emmb)->preview, ((EMFormat *)emfv->preview)->session); + message_list_ensure_message (((EMFolderView *)emmb)->list, uids->pdata[0]); em_folder_view_set_folder((EMFolderView *)emmb, emfv->folder, emfv->folder_uri); em_format_set_mode((EMFormat *)((EMFolderView *)emmb)->preview, EM_FORMAT_SOURCE); em_folder_view_set_message((EMFolderView *)emmb, uids->pdata[0], FALSE); @@ -1079,7 +1082,8 @@ emfv_delete_msg_response (GtkWidget *dia } uids = message_list_get_selected(emfv->list); - camel_folder_freeze(emfv->folder); + if (!CAMEL_IS_VEE_FOLDER(emfv->folder)) + camel_folder_freeze(emfv->folder); for (count=0; count < uids->len; count++) { if (camel_folder_get_message_flags (emfv->folder, uids->pdata[count]) & CAMEL_MESSAGE_USER_NOT_DELETABLE) { @@ -1102,7 +1106,8 @@ emfv_delete_msg_response (GtkWidget *dia } message_list_free_uids(emfv->list, uids); - camel_folder_thaw(emfv->folder); + if (!CAMEL_IS_VEE_FOLDER(emfv->folder)) + camel_folder_thaw(emfv->folder); emfv_select_next_message (emfv, count, FALSE); } @@ -2743,37 +2748,6 @@ emfv_format_link_clicked(EMFormatHTMLDis } } -static gchar * -url_unescape_amp (const gchar *url) -{ - gchar *buff; - int i, j, amps; - - if (!url) - return NULL; - - amps = 0; - for (i = 0; url [i]; i++) { - if (url [i] == '&' && strncmp (url + i, "&", 5) == 0) - amps++; - } - - buff = g_strdup (url); - - if (!amps) - return buff; - - for (i = 0, j = 0; url [i]; i++, j++) { - buff [j] = url [i]; - - if (url [i] == '&' && strncmp (url + i, "&", 5) == 0) - i += 4; - } - buff [j] = 0; - - return buff; -} - static void emp_uri_popup_link_copy(EPopup *ep, EPopupItem *pitem, void *data) { @@ -2781,7 +2755,7 @@ emp_uri_popup_link_copy(EPopup *ep, EPop struct _EMFolderViewPrivate *p = emfv->priv; g_free(p->selection_uri); - p->selection_uri = url_unescape_amp(pitem->user_data); + p->selection_uri = em_utils_url_unescape_amp(pitem->user_data); gtk_selection_owner_set(p->invisible, GDK_SELECTION_PRIMARY, gtk_get_current_event_time()); gtk_selection_owner_set(p->invisible, GDK_SELECTION_CLIPBOARD, gtk_get_current_event_time()); --- mail/em-format.c 2008-10-13 14:07:24.000000000 +0530 +++ mail/em-format.c 2009-02-04 11:46:18.000000000 +0530 @@ -1124,7 +1124,7 @@ em_format_format_text(EMFormat *emf, Cam camel_object_unref(filter_stream); camel_stream_reset (mem_stream); - if (max == -1 || size < (max * 1024) || emf->composer) { + if (max == -1 || size == -1 || size < (max * 1024) || emf->composer) { camel_stream_write_to_stream(mem_stream, (CamelStream *)stream); camel_stream_flush((CamelStream *)stream); } else { @@ -1653,6 +1653,8 @@ emf_inlinepgp_encrypted(EMFormat *emf, C CamelCipherValidity *valid; CamelException *ex; CamelMimePart *opart; + CamelDataWrapper *dw; + char *mime_type; cipher = camel_gpg_context_new(emf->session); ex = camel_exception_new(); @@ -1671,6 +1673,19 @@ emf_inlinepgp_encrypted(EMFormat *emf, C return; } + dw = camel_medium_get_content_object ((CamelMedium *)opart); + mime_type = camel_data_wrapper_get_mime_type (dw); + + /* this ensures to show the 'opart' as inlined, if possible */ + if (mime_type && g_ascii_strcasecmp (mime_type, "application/octet-stream") == 0) { + const char *snoop = em_utils_snoop_type (opart); + + if (snoop) + camel_data_wrapper_set_mime_type (dw, snoop); + } + + g_free (mime_type); + /* Pass it off to the real formatter */ em_format_format_secure(emf, stream, opart, valid); --- mail/em-format-html-print.c 2008-10-13 14:07:24.000000000 +0530 +++ mail/em-format-html-print.c 2009-02-04 11:46:18.000000000 +0530 @@ -52,7 +52,7 @@ efhp_finalize (GObject *o) static void efhp_class_init (GObjectClass *class) { - parent_class = g_type_class_ref(EM_TYPE_FORMAT_HTML_PRINT); + parent_class = g_type_class_peek_parent (class); class->finalize = efhp_finalize; } --- mail/em-popup.c 2008-10-13 14:07:24.000000000 +0530 +++ mail/em-popup.c 2009-02-04 11:46:18.000000000 +0530 @@ -588,12 +588,14 @@ emp_uri_popup_link_open(EPopup *ep, EPop { EMPopupTargetURI *t = (EMPopupTargetURI *)ep->target; GError *err = NULL; + gchar *unescaped_uri = em_utils_url_unescape_amp (t->uri); - gnome_url_show(t->uri, &err); + gnome_url_show(unescaped_uri, &err); if (err) { g_warning("gnome_url_show: %s", err->message); g_error_free(err); } + g_free (unescaped_uri); } static void --- mail/em-subscribe-editor.c 2008-10-13 14:07:24.000000000 +0530 +++ mail/em-subscribe-editor.c 2009-02-04 11:46:18.000000000 +0530 @@ -111,6 +111,12 @@ struct _EMSubscribeNode { GtkTreePath *path; }; +typedef struct _MailMsgListNode MailMsgListNode; +struct _MailMsgListNode { + EDListNode node; + MailMsg *msg; +}; + static void sub_editor_busy(EMSubscribeEditor *se, int dir); static int sub_queue_fill_level(EMSubscribe *sub, EMSubscribeNode *node); static void sub_selection_changed(GtkTreeSelection *selection, EMSubscribe *sub); @@ -185,6 +191,7 @@ sub_folder_done (struct _zsubscribe_msg GtkTreeModel *model; EMSubscribeNode *node; gboolean subscribed, issub; + MailMsgListNode *msgListNode; m->sub->subscribe_id = -1; if (m->sub->cancel) @@ -209,10 +216,13 @@ sub_folder_done (struct _zsubscribe_msg } /* queue any further ones, or if out, update the ui */ - next = (struct _zsubscribe_msg *)e_dlist_remhead(&m->sub->subscribe); - if (next) { + msgListNode = (MailMsgListNode *) e_dlist_remhead(&m->sub->subscribe); + if (msgListNode) { + next = (struct _zsubscribe_msg *) msgListNode->msg; + /* Free the memory of the MailMsgListNode which won't be used anymore. */ + g_free(msgListNode); next->sub->subscribe_id = next->base.seq; - mail_msg_unordered_push (next); + mail_msg_unordered_push (next); } else { /* should it go off the model instead? */ sub_selection_changed(gtk_tree_view_get_selection(m->sub->tree), m->sub); @@ -239,6 +249,7 @@ static int sub_subscribe_folder (EMSubscribe *sub, EMSubscribeNode *node, int state, const char *spath) { struct _zsubscribe_msg *m; + MailMsgListNode *msgListNode; int id; m = mail_msg_new (&sub_subscribe_folder_info); @@ -254,8 +265,10 @@ sub_subscribe_folder (EMSubscribe *sub, d(printf("running subscribe folder '%s'\n", spath)); mail_msg_unordered_push (m); } else { + msgListNode = g_malloc0(sizeof(MailMsgListNode)); + msgListNode->msg = (MailMsg *) m; d(printf("queueing subscribe folder '%s'\n", spath)); - e_dlist_addtail(&sub->subscribe, (EDListNode *)m); + e_dlist_addtail(&sub->subscribe, (EDListNode *)msgListNode); } return id; @@ -541,6 +554,7 @@ static void sub_destroy(GtkWidget *w, EMSubscribe *sub) { struct _zsubscribe_msg *m; + MailMsgListNode *msgListNode; d(printf("subscribe closed\n")); sub->cancel = TRUE; @@ -551,8 +565,12 @@ sub_destroy(GtkWidget *w, EMSubscribe *s if (sub->subscribe_id != -1) mail_msg_cancel(sub->subscribe_id); - while ( (m = (struct _zsubscribe_msg *)e_dlist_remhead(&sub->subscribe)) ) + while ( (msgListNode = (MailMsgListNode *)e_dlist_remhead(&sub->subscribe))) { + m = (struct _zsubscribe_msg *) msgListNode->msg; + /* Free the memory of MailMsgListNode which won't be used anymore. */ + g_free(msgListNode); mail_msg_unref(m); + } sub_unref(sub); } --- mail/em-utils.c 2008-11-07 10:04:07.000000000 +0530 +++ mail/em-utils.c 2009-02-04 11:46:18.000000000 +0530 @@ -2442,3 +2442,34 @@ em_utils_show_info_silent (GtkWidget *wi g_signal_connect(widget, "response", G_CALLBACK(error_response), NULL); e_activity_handler_make_error (handler, "mail", E_LOG_WARNINGS, widget); } + +gchar * +em_utils_url_unescape_amp (const gchar *url) +{ + gchar *buff; + int i, j, amps; + + if (!url) + return NULL; + + amps = 0; + for (i = 0; url [i]; i++) { + if (url [i] == '&' && strncmp (url + i, "&", 5) == 0) + amps++; + } + + buff = g_strdup (url); + + if (!amps) + return buff; + + for (i = 0, j = 0; url [i]; i++, j++) { + buff [j] = url [i]; + + if (url [i] == '&' && strncmp (url + i, "&", 5) == 0) + i += 4; + } + buff [j] = 0; + + return buff; +} --- mail/em-utils.h 2008-10-13 14:07:24.000000000 +0530 +++ mail/em-utils.h 2009-02-04 11:46:18.000000000 +0530 @@ -117,6 +117,9 @@ const char *em_utils_snoop_type(struct _ /* clears flag 'get_password_canceled' at every known accounts, so if needed, get_password will show dialog */ void em_utils_clear_get_password_canceled_accounts_flag (void); +/* Unescapes & back to a real & in URIs */ +gchar *em_utils_url_unescape_amp (const gchar *url); + #ifdef __cplusplus } #endif /* __cplusplus */ --- mail/message-list.c 2009-02-04 09:57:29.000000000 +0530 +++ mail/message-list.c 2009-02-04 11:46:19.000000000 +0530 @@ -42,6 +42,7 @@ #include <camel/camel-folder-thread.h> #include <camel/camel-folder-summary.h> #include <camel/camel-vee-folder.h> +#include <camel/camel-string-utils.h> #include <libedataserver/e-memory.h> @@ -2303,6 +2304,11 @@ message_list_finalise (GObject *object) g_hash_table_destroy (message_list->normalised_hash); + if (message_list->ensure_uid) { + g_free (message_list->ensure_uid); + message_list->ensure_uid = NULL; + } + if (message_list->thread_tree) camel_folder_thread_messages_unref(message_list->thread_tree); @@ -3975,13 +3981,11 @@ regen_list_exec (struct _regen_list_msg uids = camel_folder_get_uids (m->folder); } else { searchuids = uids = camel_folder_search_by_expression (m->folder, expr, &m->base.ex); - /* If m->changes is not NULL, then it means we are called from folder_changed event, thus we will keep the selected message to be sure it doesn't disappear because it no longer belong to our search filter. */ - if (uids && m->ml->search && ((m->changes && m->ml->cursor_uid) || m->ml->ensure_uid)) { + if (uids && ((m->changes && m->ml->cursor_uid) || m->ml->ensure_uid)) { const char *looking_for = m->ml->cursor_uid; - /* ensure_uid has precedence of cursor_uid */ if (m->ml->ensure_uid) looking_for = m->ml->ensure_uid; @@ -4002,7 +4006,7 @@ regen_list_exec (struct _regen_list_msg on the flag whether we can view deleted messages or not. */ if (!was_deleted || (was_deleted && !m->hidedel)) - g_ptr_array_add (uids, g_strdup (looking_for)); + g_ptr_array_add (uids, (gpointer) camel_pstring_strdup (looking_for)); } } } @@ -4146,11 +4150,6 @@ regen_list_done (struct _regen_list_msg if (m->ml->priv->destroyed) return; - if (m->ml->ensure_uid) { - g_free (m->ml->ensure_uid); - m->ml->ensure_uid = NULL; - } - if (!m->complete) return; --- shell/e-shell-window.c 2008-10-13 14:02:56.000000000 +0530 +++ shell/e-shell-window.c 2009-02-04 11:46:19.000000000 +0530 @@ -795,7 +795,7 @@ setup_widgets (EShellWindow *window) info->icon_name, width, 0); g_string_append_printf(xml, "\" pixtype=\"filename\" pixname=\"%s\"/>" "</placeholder></submenu></submenu>\n", - gtk_icon_info_get_filename (icon_info)); + icon_info ? gtk_icon_info_get_filename (icon_info) : ""); gtk_icon_info_free (icon_info); bonobo_ui_component_set_translate (e_shell_window_peek_bonobo_ui_component (window), "/menu", --- shell/main.c 2008-10-13 14:02:56.000000000 +0530 +++ shell/main.c 2009-02-04 11:46:19.000000000 +0530 @@ -330,10 +330,10 @@ idle_cb (gchar **uris) startup_line_mode = E_SHELL_STARTUP_LINE_MODE_OFFLINE; shell = e_shell_new (startup_line_mode, &result); - e_shell_set_crash_recovery (shell, e_file_lock_exists ()); switch (result) { case E_SHELL_CONSTRUCT_RESULT_OK: + e_shell_set_crash_recovery (shell, e_file_lock_exists ()); g_signal_connect (shell, "no_windows_left", G_CALLBACK (no_windows_left_cb), NULL); g_object_weak_ref (G_OBJECT (shell), shell_weak_notify, NULL); corba_shell = bonobo_object_corba_objref (BONOBO_OBJECT (shell)); @@ -656,6 +656,7 @@ main (int argc, char **argv) exit (0); gnome_sound_init ("localhost"); + gtk_accel_map_load (e_get_accels_filename ()); if (!disable_eplugin) { e_plugin_register_type(e_plugin_lib_get_type()); @@ -688,6 +689,8 @@ main (int argc, char **argv) bonobo_main (); + gtk_accel_map_save (e_get_accels_filename ()); + e_icon_factory_shutdown (); g_object_unref (program); gnome_sound_shutdown (); --- widgets/misc/e-attachment-bar.c 2008-10-13 14:13:34.000000000 +0530 +++ widgets/misc/e-attachment-bar.c 2009-02-04 11:46:19.000000000 +0530 @@ -1001,7 +1001,8 @@ eab_icon_clicked_cb (EAttachmentBar *bar if (E_IS_ATTACHMENT_BAR (bar) && event->type == GDK_2BUTTON_PRESS) { p = e_attachment_bar_get_selected (bar); - if (p && p->next == NULL) { + /* check if has body already, remote files can take longer to fetch */ + if (p && p->next == NULL && ((EAttachment *)p->data)->body) { attachment = p->data; /* Check if the file is stored already */
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor