| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For messages with a base MIME type of multipart/alternative, we were
hiding text/plain subparts based on the number of alternate subparts.
This assumption of course broke on a message with the following body
structure and a Plain Text Mode preference of "Show HTML if present":
multipart/alternative
text/plain
text/plain
Instead, note when we've actually seen a text/html subpart and use that
to decide whether to hide the text/plain parts.
|
| |
|
|
|
|
| |
Use the EMailPartHeaders API instead.
|
|
|
|
|
| |
Use e_mail_part_headers_dup_default_headers() to extract specific
headers to show in the desired order.
|
|
|
|
|
| |
Use e_mail_part_headers_dup_default_headers() to extract specific
headers to show in the desired order.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This splits the print dialog's "Headers" tab into a separate widget.
EMailPrintConfigHeaders takes an EMailPartHeaders and displays its print
model, which is a representation of all message headers (except subject)
with an on/off flag for each. The headers can be toggled and reordered,
and the changes are written back to the print model.
During printing, EMailFormatterPrintHeaders uses the same print model
to determine which headers to show and in what order (except subject).
This approach is much saner than the old method, which was trying to
manipulate WebKitWebView DOM directly to toggle and reorder headers.
This approach also happens to work, whereas the old method did not.
|
|
|
|
|
|
|
|
| |
Returns a GtkTreeModel of header names and values and visibility flags,
built from the CamelMimeMessage. The tree model rows can be reordered
and toggled prior to printing.
Also add e_mail_part_headers_is_default() as a handy helper.
|
|
|
|
|
|
|
|
|
| |
This will replace the headers API in EMailFormatter. Need a more
permanent place for headers since EMailFormatter is too disposable.
Also add an ESettingsMailPartHeaders class, which binds the new property
to the "show-headers" setting with a suitable mapping function to filter
out disabled header names.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Split the _camel_header_raw struct parameter into separate "header_name"
and "header_value" string parameters, which is all the function actually
needs to work.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This is a weak reference to the EMailPartList to which the EMailPart
has been added. The property is set by e_mail_part_list_add_part().
New functions:
e_mail_part_ref_part_list()
e_mail_part_set_part_list()
|
|
|
|
|
|
|
|
|
|
| |
No longer used.
Also remove related helper functions:
e_mail_reader_header_from_xml()
e_mail_reader_header_to_xml()
e_mail_reader_header_free()
|
|
|
|
|
|
|
| |
Replaces the "headers" key. Whereas "headers" is an array of XML
blobs, the "show-headers" key is an array of string/boolean pairs.
Also update the appropriate places to get/set the new key.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Pop-up dialog is far too intrusive. Instead ask the question as an
inline alert in the message window, which does not interrupt the user.
|
|
|
|
|
|
|
|
|
|
|
| |
Mainly to avoid accessing GSettings directly from EMailBrowser.
Also add a "browser-close-on-reply-policy" GSettings key that replaces
"prompt-on-reply-close-browser", the difference being the new key uses
an enum definition compatible with EAutomaticActionPolicy instead of a
free-form string value.
And finally add an ESettingsMailBrowser class to glue things together.
|
| |
|
| |
|
| |
|
|
|
|
| |
To have a proper GEnumClass registered for ask/always/never choices.
|
| |
|
|
|
|
|
|
|
| |
Empty group addresses were left as-is when sending an email directly,
not through Outbox, which could cause a send error through SMTP.
Expanding group addresses, or removing empty groups, from a list
or recipients before sending the message fixes the issue.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
These are just Express Mode leftovers.
Also remove obsolete functions:
e_mail_reader_get_enable_show_folder()
e_mail_reader_enable_show_folder()
e_mail_paned_view_set_enable_show_folder()
|
|
|
|
| |
This is just an Express Mode leftover.
|
|
|
|
| |
Replaces em_utils_forward_messages().
|
|
|
|
| |
Replaces em_utils_edit_messages().
|
|
|
|
|
|
|
|
|
| |
EMailReader is an interface and should not know about specific classes
that implement its interface. Instead, EMailBrowser itself will prompt
in response to "composer-created" signals that include a source message.
This also removes the "destroy_when_done" parameter from
em_utils_forward_messages() since it's no longer needed.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Emitted to indicate a composer window was created in response to a user
action on the EMailReader. Examples of such actions include replying,
forwarding, and starting a new message.
If applicable, the source message (i.e. the message being replied to or
forwarded) is included in the signal emission.
New functions:
e_mail_reader_composer_created()
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Replace the EShell and CamelSession arguments with a single EMailBackend
argument, from which both the EShell and CamelSession can be obtained.
|
| |
|
|
|
|
|
|
|
| |
These functions do not exist:
e_mail_reader_get_formatter()
e_mail_reader_set_formatter()
|
| |
|
|
|
|
|
|
| |
Convenience function that works like e_source_registry_ref_source(),
but spares the caller from digging out the ESourceRegistry from the
header table.
|
|
|
|
|
|
|
|
| |
No longer needed.
Removed functions:
e_composer_header_table_get_shell()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The ESourceRegistry can still be obtained from the EClientCache:
client_cache = e_composer_header_table_ref_client_cache (table);
registry = e_client_cache_ref_registry (client_cache);
...
g_object_unref (client_cache);
g_object_unref (registry);
Added functions:
e_composer_header_table_ref_client_cache()
Removed functions:
e_composer_header_table_get_registry()
|
| |
|
|
|
|
|
|
| |
Call e_task_shell_sidebar_add_client() instead of add_source().
No point asynchronously obtaining the client if we already have it.
|
|
|
|
|
|
| |
Call e_memo_shell_sidebar_add_client() instead of add_source().
No point asynchronously obtaining the client if we already have it.
|
|
|
|
|
|
| |
Call e_cal_shell_sidebar_add_client() instead of add_source().
No point asynchronously obtaining the client if we already have it.
|
|
|
|
|
|
|
|
| |
The function now returns TRUE if the ECalClient was actually removed
from the model, or FALSE if the model did not have the ECalClient.
Use this to avoid an unnecessary gnome_calendar_update_query() call
in cal_shell_view_selector_client_removed().
|
|
|
|
|
|
|
|
| |
The function now returns TRUE if the ECalClient was actually added
to the model, or FALSE if the model already had the ECalClient.
Use this to avoid an unnecessary gnome_calendar_update_query() call
in cal_shell_view_selector_client_added_cb().
|
| |
|
| |
|
|
|
|
| |
No longer needed.
|
|
|
|
|
|
|
|
|
|
| |
Obtain calendar views asynchronously and concurrently, and update the
task and memo pads synchronously (they don't block as best I can tell).
Get rid of the whole thread-pool message dispatching thing, which I
think I myself wrote years ago (calendar had no async API back then).
Consequently I'm seeing calendar events show up noticably quicker.
|
| |
|
| |
|
|
|
|
|
|
| |
Some cards can have two PINs, one 'global' and one 'application'.
NSS provides which token is required, but Evolution didn't show
that information to a user.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Making EAlertDialog non-resizable is the only way at present for GTK+ to
pick a resonable default size, otherwise we get alerts looking like this:
https://bugzilla.gnome.org/attachment.cgi?id=221303
See https://bugzilla.gnome.org/681937 for details.
Also drop the default window size hack in alert_dialog_constructed().
|
|
|
|
|
|
|
| |
If sending fails for any reason, return a suitable GError. Don't just
return silently. Also check for a wider range of errors indicating the
service is unavailable in composer_send_completed(). This will trigger
the "save-to-outbox" info alert.
|
|
|
|
|
| |
We don't show an icon for other mailers, and the tiny 16x16 pixel
icon looks stupid next to the much larger contact/gravatar image.
|
|
|
|
|
| |
Remove a ClientData entry on "source-removed" or "source-disabled"
signals from the ESourceRegistry.
|
| |
|
| |
|
|
|
|
| |
https://mail.gnome.org/archives/evolution-list/2013-May/msg00205.html
|
|
|
|
|
|
|
|
|
|
|
|
| |
As discussed recently on the users mailing list [1], there's a strong
precedent among GTK+ applications for F9 to toggle sidebar visibility.
Examples cited were Nautilus, Evince, Totem, Rhythmbox, File-Roller
and gThumb.
Change the Send/Receive accelerator from F9 to F12, and designate F9
as the accelerator for View->Layout->Show Side Bar.
[1] https://mail.gnome.org/archives/evolution-list/2013-May/msg00194.html
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The HTML for attachments always has the following form:
<div class="attachment-wrapper" id="something" style="display: block;">
<actual attachment element>
</div>
The <div> element controls attachment visibility through its "display"
style attribute, which is either "block" or "none".
Problem is the <actual attachment element> was getting the same ID as
its parent <div> element. So when either element was requested by ID,
in certain cases the wrong element was returned and caused misbehavior
and console warnings.
Solve this by adding a "wrapper" suffix to the <div> element ID. So in
the example above, id="something" gets the <actual attachment element>,
whereas id="something.wrapper" gets the <div> element.
|
| |
|
| |
|
|
|
|
|
|
| |
To make Evolution's shared libraries more consistent.
Also add an evolution-mail-composer documentation module.
|
|
|
|
|
|
| |
To make Evolution's shared libraries more consistent.
Also add an evolution-mail-formatter documentation module.
|
|
|
|
|
|
| |
To make Evolution's shared libraries more consistent.
Also rename the documentation module to evolution-shell.
|
|
|
|
|
|
| |
To make Evolution's shared libraries more consistent.
Also rename the documentation module to evolution-util.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This removes the following definitions from config.h:
CTIME_R_THREE_ARGS
GETHOSTBYADDR_R_SEVEN_ARGS
GETHOSTBYNAME_R_FIVE_ARGS
HAVE_ISBLANK
HAVE_MKSTEMP
HAVE_STATFS
HAVE_STATVFS
HAVE_SYS_MOUNT_H
HAVE_SYS_PARAM_H
HAVE_SYS_STATVFS_H
These were all either unused or unnecessarily used.
|
| |
|
|
|
|
|
| |
WebKitGTK+ 1.10 is the minimum requirement nowadays, so no need to
blacklist an older version.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
New functions:
e_mail_session_get_fcc_for_message_sync()
e_mail_session_get_fcc_for_message()
e_mail_session_get_fcc_for_message_finish()
e_mail_session_ref_transport()
e_mail_session_ref_default_transport()
e_mail_session_ref_transport_for_message()
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
EAttachment updates its tree model row directly in response to property
change notifications, but now change notifications can come from worker
threads whereas the tree model row should only be updated from the main
thread. To compensate, respond to notifications by adding idle sources
to the default context. The idle callback will update the row from the
appropriate thread.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
EAttachment is now used from worker threads by EMailFormatterAttachment,
so add some thread-safe accessor functions to eliminate potential races.
Added thread-safe functions:
e_attachment_dup_disposition()
e_attachment_ref_file()
e_attachment_ref_file_info()
e_attachment_ref_icon()
e_attachment_ref_mime_part()
e_attachment_dup_description()
e_attachment_dup_thumbnail_path()
Renamed functions:
e_attachment_get_mime_type() -> e_attachment_dup_mime_type()
Removed non-thread-safe functions:
e_attachment_get_file()
e_attachment_get_file_info()
e_attachment_get_icon()
e_attachment_get_mime_part()
e_attachment_get_description()
e_attachment_get_thumbnail_path()
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Simplify the EABContactFormatter API as follows:
* Drop all constructor arguments from eab_contact_formatter_new()
since get/set functions exist for all of them.
* Remove eab_contact_formatter_format_contact_async() since
EABContactFormatter does not block.
* Replace eab_contact_formatter_format_contact_sync() with
eab_contact_formatter_format_contact() which drops the CamelStream
and GCancellable arguments and takes a GString as an output buffer.
* Remove the "state" and "style" properties, and always use a white
background when rendering the full contact.
This is particularly important since render_normal() dereferenced
the GtkStyle without checking for NULL, which would crash on mails
with a vCard MIME part when "Show Full vCard" was clicked, because
the "vcard-inline" module never set a GtkStyle.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
EMailPart is reference-counted, subclassed, and allows a custom
finalize function. There's no excuse for it not to use GObject.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Make reference count handling a bit less awkward.
|
|
|
|
|
| |
Use e_mail_formatter_set_charset() instead.
Obtain the EMailFormatter with e_mail_display_get_formatter().
|
|
|
|
| |
Not thread-safe. Use e_mail_formatter_dup_headers() instead.
|
|
|
|
| |
Duplicates an EMailFormatterHeader struct.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
e_mail_reader_get_folder() does not return a new CamelFolder reference,
yet mail_to_event() was acting as though it does. This caused a crash
after the function ran and Evolution tried to use the folder again.
Truth be told, e_mail_reader_get_folder() really *should* return a new
reference to ensure the CamelFolder is not finalized while it's in use.
But we would need to rename the function to e_mail_reader_ref_folder()
to reflect the change in semantics, and I suspect the function is used
in a great many places.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
em_utils_print_messages_to_file() was doing so asynchronously, but
unfortunately drag-n-drop is a synchronous protocol. So by the time
the asynchronous print operation completed, the URI list pointing to
the temporary PDF files had already been passed to the file manager.
The only reason the files were created at all was because we test the
generated file name with open(...O_CREAT...) before starting the print
operation, and I'm not convinced that test is even necessary.
|
|
|
|
|
|
| |
This adds a GAsyncReadyCallback and a closure to e_mail_printer_print(),
and trades the "done" signal for e_mail_printer_print_finish() so that
EMailPrinter is a little more reentrant.
|
| |
|
| |
|
|
|
|
| |
Hidden setting, no clear use case, and poorly implemented.
|
|
|
|
|
|
|
| |
We used to do this before WebKit and it looked better.
Also fix up the header section for right-to-left locales:
put the collapse button on the right, and images on the left.
|
| |
|
|
|
|
|
|
| |
Obtain an EClient for contact photo lookup asynchronously. If an
instance needs to be created, it's more likely created in a thread
with a main loop so signal emissions can work.
|
| |
|
|
|
|
|
|
|
|
| |
Unless the button to choose a calendar was clicked, because
the calendar path is not filled, thus the server claims
"HTTP 405 error", which means an OPTIONS request cannot be done
on the path, which was just root of www.google.com, instead
of a calendar path. (This was reported as part of bug #659522.)
|
| |
|
| |
|
|
|
|
| |
Evolution no longer links to goa-1.0.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
During fixes on bug #602428, rather than do everything twice,
I merged the plugin into the core code, thus it should be easier
to maintain as well.
|
| |
|
| |
|
| |
|
|
|
|
| |
https://bugzilla.gnome.org/show_bug.cgi?id=699548
|
|
|
|
| |
Fix typo
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In the event of an address book backend abort, EClientCache detects this
and invalidates its cached EClient (if it has one), so a new instance is
created on the next request.
EAddressbookModel is only handed an EClient once, which may become stale
if the backend aborts. And even if the backend is restarted the address
book will remain unresponsive in Evolution.
This commit changes the behavior so that every time an address book is
selected in the side bar, a fresh EClient instance is obtained from the
EClientCache and handed to the EAddressbookModel. If the model already
has that EClient instance, nothing happens. Otherwise the model resets
itself and creates a new EBookClientView.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Forgot to remove this along with evolution-settings.
|
|
|
|
|
| |
The SoupRequest API seems to have some concurrency issues to work out,
so for the time being create a unique SoupSession for each SoupRequest.
|
|
|
|
| |
Yikes, that would be bad...
|
|
|
|
|
|
|
| |
This seems to have started with the gravatar module. SoupRequest is
apparently quite eager to cancel HTTP requests -- so much so that we
need to slow it down within EPhotoCache, so we don't wind up calling
g_cancellable_disconnect() during a GCancellable signal emission.
|
| |
|
| |
|
|
|
|
| |
This is a new EPhotoSource that obtains images from gravatar.com.
|
|
|
|
| |
when possible
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Remove this status message nonsense that I came up with during the
kill-bonoto rewrite. Instead submit a real EActivity to the shell
backend. Mismanagement of the status message seems to be blocking
application shut down in some cases.
|
| |
|
|
|
|
|
|
|
| |
Remove this status message nonsense that I came up with during the
kill-bonobo rewrite. Instead submit a real EActivity to the shell
backend. Mismanagement of the status message sesms to be blocking
application shut down in some cases.
|
| |
|
|
|
|
|
|
|
| |
Remove this status message nonsense that I came up with during the
kill-bonobo rewrite. Instead submit a real EActivity to the shell
backend. Mismanagement of the status message seems to be blocking
application shut down in some cases.
|
|
|
|
| |
Convenience function cancels the activity's GCancellable.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Reimplement EPhotoCache to delegate the actual photo fetching to
EPhotoSources. When a photo is requested for a given email address,
all available EPhotoSources are dispatched concurrently and a photo
input stream is selected from the result set.
This also utilizes EDataCapture, which is affixed to the returned
GInputStream to capture and cache photo data for an email address.
New functions:
e_photo_cache_add_photo_source()
e_photo_cache_list_photo_sources()
e_photo_cache_remove_photo_source()
e_photo_cache_add_photo()
Renamed functions:
e_photo_cache_remove() --> e_photo_cache_remove_photo()
|
|
|
|
|
|
|
|
|
|
| |
This encapsulates the EContactPhoto look up feature that was previously
built into EPhotoCache. It's now implemented as an EPhotoSource -- one
per address book. One advantage of this implementation is that address
books are now queried concurrently rather than serially.
EPhotoCacheContactLoader is an EPhotoCache extension that takes care of
adding and removing EPhotoSources for available address books.
|
|
|
|
|
|
|
|
|
| |
EPhotoSource is an interface used to extend the functionality of
EPhotoCache. You can add an object implementing EPhotoSource to an
EPhotoCache with e_photo_cache_add_photo_source() and remove it with
e_photo_cache_remove_photo_source(). When EPhotoCache needs a photo
for an email address, it will invoke e_photo_source_get_photo() on all
available EPhotoSource objects simultaneously and select one photo.
|
|
|
|
|
|
|
|
|
|
| |
EDataCapture is a GConverter that captures data until the end of the
input data is seen, then emits a "finished" signal with the captured
data in a GBytes instance.
When used with GConverterInputStream or GConverterOutputStream, an
EDataCapture can discreetly capture stream content for the purpose
of caching.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
It could happen that header text color had been picked white one time,
but the other time black as expected (for me usually when I started
Evolution in Calendar and moved to Mail view, the header text color
was white, while when starting in Mail view it was black). The change
to use GtkStyleContext is there only as a cleanup from deprecated
GtkStyle, and to make things easier too, because both GtkStyle
and the GtkStyleContext had set white color for some reason.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This was added as part of bug 360184 but no justification was given
for the "local-only" part. My Spidey sense tells me it was a hack-
around for the old implementation's tendency to freeze the UI while
searching for a photograph. So the "local-only" option really just
meant "don't freeze the UI for very long, please".
The new EPhotoCache-based implementation in 3.8 NEVER freezes the UI,
so the "local-only" option is no longer needed. If a remote address
book is slow or unresponsive we simply cancel the async photo lookup
when the user moves on to another email.
|
|
|
|
|
| |
Stop searching address books on the first error but don't indicate
failure if we've managed to accumulate contacts prior to the error.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
duplication
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Log debug messages for outstanding activities during shutdown to
help investigate stuck shutdown issues.
Enable this feature with: G_MESSAGES_DEBUG=evolution-shell
|
|
|
|
|
|
|
| |
Use g_signal_connect_data() to automatically release the EActivity when
the signal handler is disconnected, and keep the handler ID internally.
This is cleaner than using g_signal_handlers_disconnect_by_func().
|
|
|
|
|
|
|
|
|
| |
Mimicing Colin's commit fb9b02e for E-D-S.
We can't do (cd $(srcdir); ...) and inside reference $(top_srcdir)
because that variable uses a *relative* path. Thus we copy the
approach from gnome-shell of explicitly using addprefix to append
the source directory.
|
|
|
|
|
|
|
|
|
|
| |
This dialog is all kinds of lame, not to mention ugly. It tends to pop
up when evolution-alarm-notify starts and often steals input focus from
the normal reminder dialog that pops up overtop of it.
Let's not apologize for features not implemented. Instead of alerting
the user that we'll show a normal reminder dialog in lieu of sending an
email reminder, just show a normal reminder dialog.
|
|
|
|
|
|
|
| |
Be more forgiving of modifiers. Check for GDK_CONTROL_MASK and
GDK_SHIFT_MASK, but not to the exclusion of all other modifiers.
There, that should make the shortcut work for everyone now.
|
|
|
|
|
|
| |
This has been breaking distcheck for ages!
It figures it would turn out to be something this stupid...
|
| |
|
|
|
|
|
|
|
| |
In particular, GOA's Google provider uses OAuth 2.0 now, so we can drop
the OAuth 1.0a support in CamelSaslXOAuth which was GMail-specific, and
with it the entire "online-accounts" module in Evolution. Evolution no
longer links to libgoa-1.0 at all.
|
|
|
|
| |
Polishing after switching from Evolution's highlight implementation to WebKit's one.
|
| |
|
| |
|