| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit does a number of things which I could not subdivide into
smaller commits.
* Converts ETreeModel to an interface, implemented by MessageList.
* Drops ETreeMemory and ETreeMemoryCallbacks, which were ETreeModel
subclasses. Their functionality is subsumed by MessageList.
* MessageList drops its public ETreeModel pointer, since MessageList
now implements ETreeModel as an interface.
* Adds message_list_set_expanded_default(), which takes over for
e_tree_memory_set_expanded_default().
|
|
|
|
|
|
| |
The returned UID array now has a built-in "free" function for its
elements and should be released by callers with g_ptr_array_unref()
rather than em_utils_uids_free() or some equivalent.
|
| |
|
|
|
|
| |
Replaces e_mail_reader_get_folder().
|
|
|
|
|
|
|
|
|
| |
Add internal functions to compute these as needed based on a given
CamelFolder.
Removed functions:
message_list_set_hidedeleted()
|
|
|
|
|
|
|
|
|
| |
Bind this to the "show-deleted" GSettings key.
New functions:
message_list_get_show_deleted()
message_list_set_show_deleted()
|
|
|
|
|
|
|
|
| |
Also move the CamelFolder pointer into the private structure.
New functions:
message_list_ref_folder()
|
|
|
|
| |
Bind this to the "thread-latest" GSettings key.
|
| |
|
|
|
|
| |
Bind this to the "thread-subject" GSettings key.
|
|
|
|
|
|
| |
Also add a placeholder ESettingsMessageList extension. Going to clean
out some of the direct GSettings usage in MessageList by adding GObject
properties and binding them to GSettings keys from the extension.
|
|
|
|
|
|
| |
This is another source of crashes after creating and destroying a second
shell window. The signal handler was left connected with the destroyed
shell window as the closure.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This fixes a bug in the old implementation where the application could
crash after a second shell window was created and destroyed, because a
signal handler with the destroyed shell window as the closure was left
connected.
But moreover this simplifies the implementation by using a property
binding plus transform function instead of juggling signal handlers,
and also adds code comments where things get a little tricky.
Removed (now unused) functions:
e_shell_window_get_toolbar_new_prefer_item
e_shell_window_set_toolbar_new_prefer_item
|
|
|
|
|
|
|
|
|
| |
Call e_source_selector_update_all_rows() after connecting to the
selector tree model's "row-changed" signal. This will ensure the
appropriate ECalClients get loaded into the ECalModel.
This fixes the bug where opening a second Tasks window shows no
content until one of the sidebar items is fiddled with.
|
|
|
|
|
|
|
|
|
| |
Call e_source_selector_update_all_rows() after connecting to the
selector tree model's "row-changed" signal. This will ensure the
appropriate ECalClients get loaded into the ECalModel.
This fixes the bug where opening a second Memos window shows no
content until one of the sidebar items is fiddled with.
|
|
|
|
|
|
|
|
|
| |
Call e_source_selector_update_all_rows() after connecting to the
selector tree model's "row-changed" signal. This will ensure the
appropriate ECalClients get loaded into the ECalModel.
This fixes the bug where opening a second Calendar window shows no
content until one of the sidebar items is fiddled with.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
This is just an Express Mode leftover.
|
|
|
|
|
| |
Replace the EShell and CamelSession arguments with a single EMailBackend
argument, from which both the EShell and CamelSession can be obtained.
|
|
|
|
|
|
| |
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().
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
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.)
|
| |
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
The SoupRequest API seems to have some concurrency issues to work out,
so for the time being create a unique SoupSession for each SoupRequest.
|
|
|
|
| |
This is a new EPhotoSource that obtains images from gravatar.com.
|
| |
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
This accidentally got dropped during the "account-mgmt" project.
As much as I loathe EConfig, the "Automatic Contacts" plugin is useless
without its Preferences page in the Contacts section.
|
|
|
|
| |
Replaces e_cal_model_get_default_client(), which was not thread-safe.
|
|
|
|
|
|
|
|
| |
Was not thread-safe because it did not reference the return value.
The function was only used to implement the Refresh action on the
sidebar menu. e_client_selector_ref_cached_client() works better
for this anyway.
|
|
|
|
|
|
|
| |
Replaces e_cal_model_get_client_list().
Does the same thing, except the returned ECalClient instances are
referenced for thread-safety.
|
|
|
|
|
|
|
| |
GDK_MOD1_MASK is ill defined across various keyboards, apparently.
Use Ctrl + Shift + I instead, which happens to match what Chrome uses
to bring up its web inspector.
|
| |
|
|
|
|
|
|
| |
This removes all traces of Express Mode from all but the contact editor
and calendar appointment editor. Need to evaluate the remaining cases
individually.
|
|
|
|
| |
No longer needed.
|
|
|
|
| |
No longer needed. Use GtkUIManager directly.
|
|
|
|
| |
No longer needed.
|
| |
|
| |
|
|
|
|
|
|
| |
The default value for these GSettings keys is an empty string. The
mapping function should handle empty strings by falling back to the
appropriate default ESource.
|
| |
|
|
|
|
|
|
|
|
| |
EShellSettings predates GSettings and is no longer necessary.
GSettings allows binding GObject properties to GSettings keys,
with optional mapping functions. That fulfills the purpose of
EShellSettings.
|
|
|
|
|
|
|
|
| |
EShellSettings predates GSettings and is no longer necessary.
GSettings allows binding GObject properties to GSettings keys,
with optional mapping functions. That fulfills the purpose of
EShellSettings.
|
|
|
|
|
|
|
|
| |
EShellSettings predates GSettings and is no longer necessary.
GSettings allows binding GObject properties to GSettings keys,
with optional mapping functions. That fulfills the purpose of
EShellSettings.
|
|
|
|
|
|
| |
Replaces "paned-view-headers-state", which was defined as an integer for
some stupid reason. Not bothering to migrate the old setting since it's
one button click.
|
|
|
|
|
|
| |
Replaces the "load-http-images" setting, which is now deprecated.
The new setting uses an enum type compatible with EMailImageLoadingPolicy.
|
|
|
|
|
|
| |
Replaces the "reply-style" setting, which is now deprecated.
The new setting uses an enum type compatible with EMailReplyStyle.
|
|
|
|
|
|
| |
Replaces the "forward-style" setting, which is now deprecated.
The new setting uses an enum type compatible with EMailForwardStyle.
|
| |
|
|
|
|
| |
EWeekView would like to use them too, please.
|
|
|
|
| |
Far easier to deal with than flags.
|
|
|
|
|
|
|
|
|
|
|
|
| |
This class is different from the others in this module. Its purpose
is to transfer values from deprecated GSettings keys to the preferred
keys on startup, and keep them synchronized at all times for backward
compatibility.
Initial deprecated keys being handled are:
"week-start-day" (org.gnome.evolution.calendar)
"working-days" (org.gnome.evolution.calendar)
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Automatically configures the "checking-enabled" property on all
ESpellEntry instances.
|
| |
|
| |
|
|
|
|
| |
Automatically configured, of course, by ESettingsCompEditor.
|
|
|
|
| |
Configures the "week-start-day" property of EWeekdayChooser.
|
|
|
|
| |
The "show-week-numbers" and "week-start-day" properties are not used.
|
|
|
|
|
|
| |
DConf load command requires a slash at the end of the path to load,
but the replace_variables() code always removed the trailing slash,
which made the configuration load nonfunctional.
|
|
|
|
| |
Get the icaltimezone from the passed in ECalClient.
|
|
|
|
|
|
|
| |
There were printed warnings on console, which may cause crashes, when
the meeting invitation was inside an attached message. By adding
a reference to the view it'll not disappear before the search is
done with it.
|
| |
|
|
|
|
| |
Basically any place where we use both EClient and ESourceComboBox.
|
|
|
|
| |
EClientCache already serves this purpose.
|
| |
|
|
|
|
| |
Obtain the ESourceRegistry with e_client_cache_ref_registry().
|
| |
|
|
|
|
| |
EPhotoCache already handles this setting.
|
|
|
|
| |
Configures an EPhotoCache with values from GSettings.
|
| |
|
|
|
|
|
|
| |
Emitting a "client-added" signal should not trigger any blocking calls,
so the "loading" status message will flash by too quickly to be noticed,
if it gets drawn at all. Just remove it.
|
|
|
|
|
|
| |
Emitting a "client-added" signal should not trigger any blocking calls,
so the "loading" status message will flash by too quickly to be noticed,
if it gets drawn at all. Just remove it.
|
|
|
|
|
|
| |
Emitting a "client-added" signal should not trigger any blocking calls,
so the "loading" status message will flash by too quickly to be noticed,
if it gets drawn at all. Just remove it.
|
|
|
|
| |
Use e_source_registry_dup_unique_display_name() in the status message.
|
|
|
|
| |
Use e_source_registry_dup_unique_display_name() in the status message.
|
|
|
|
| |
Use e_source_registry_dup_unique_display_name() in the status message.
|
| |
|
|
|
|
| |
Use a standard format for naming an ESource in user-visible messages.
|
|
|
|
| |
Use a standard format for naming an ESource in user-visible messages.
|
|
|
|
| |
Use a standard format for naming an ESource in user-visible messages.
|
| |
|
| |
|
|
|
|
| |
Use e_client_selector_ref_cached_client() for remaining cases.
|
|
|
|
| |
Use e_client_selector_ref_cached_client() for remaining cases.
|
|
|
|
| |
Use e_client_selector_ref_cached_client() for remaining cases.
|
| |
|
| |
|
| |
|
|
|
|
| |
Use e_client_selector_get_client() to obtain an EClient.
|
|
|
|
| |
Use e_client_selector_get_client() to obtain an EClient.
|
|
|
|
| |
Use e_client_selector_get_client() to obtain an EClient.
|
|
|
|
| |
Use e_client_selector_get_client() to obtain an EClient.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
No longer needed, replaced by EClientCache.
|
|
|
|
| |
No longer needed, replaced by EClientCache.
|
|
|
|
| |
No longer needed, replaced by EClientCache.
|
|
|
|
|
|
| |
In task_shell_sidebar_check_state(), determine whether the selected
source supports refresh by way of e_client_cache_ref_cached_client()
and e_client_check_refresh_supported().
|
|
|
|
|
|
| |
In memo_shell_sidebar_check_state(), determine whether the selected
source supports refresh by way of e_client_cache_ref_cached_client()
and e_client_check_refresh_supported().
|
|
|
|
|
|
| |
In cal_shell_sidebar_check_state(), determine whether the selected
source supports refresh by way of e_client_cache_ref_cached_client()
and e_client_check_refresh_supported().
|
|
|
|
| |
No longer used.
|
|
|
|
| |
No longer used.
|
|
|
|
| |
No longer used.
|
| |
|
|
|
|
|
| |
ETaskTable can retrieve the client list from its internal ECalModel
using e_cal_model_get_client_list().
|
|
|
|
|
|
|
| |
Thanks to the "default-timezone" property binding created by
ESettingsClientCache, changes to the "cal-timezone" setting are
automatically propagated to all ECalClient instances created by
EClientCache.
|
|
|
|
|
|
|
| |
Thanks to the "default-timezone" property binding created by
ESettingsClientCache, changes to the "cal-timezone" setting are
automatically propagated to all ECalClient instances created by
EClientCache.
|
|
|
|
|
|
|
| |
Thanks to the "default-timezone" property binding created by
ESettingsClientCache, changes to the "cal-timezone" setting are
automatically propagated to all ECalClient instances created by
EClientCache.
|
|
|
|
|
| |
Also, defer to ESettingsClientCache to automatically set the default
timezone on new ECalClient instances.
|
|
|
|
|
| |
Also, defer to ESettingsClientCache to automatically set the default
timezone on new ECalClient instances.
|
|
|
|
|
| |
Also, defer to ESettingsClientCache to automatically set the default
timezone on new ECalClient instances.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Listens for "client-created" signals from its EClientCache. If the
newly-created client is an ECalClient, automatically configure its
default timezone from EShellSettings.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
We require GTK+ 3.4, so no need to check for versions older than that.
|
| |
|
|
|
|
|
|
| |
GTK+ uses (G_PRIORITY_HIGH_IDLE + 20) for redrawing operations, which is
actually a slightly lower priority than G_PRIORITY_HIGH_IDLE. Therefore
for our purpose, G_PRIORITY_HIGH_IDLE is sufficient.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
This reverts commit 2b507716b257e6ef98dae8463180dbe718eb7b64.
The commit contains not a single comment as to why these custom priority
values are being used. The rationale needs to be documented in the code,
either at each call point or preferrably at a centralized priority value
definition.
|
| |
|
|
|
|
|
| |
Drop the pop-up menu item and instead install a key-press-event handler
on all WebKitWebView instances. <Ctrl>+<Alt>+I opens the web inspector.
|
| |
|
| |
|
|
|
|
| |
Restore this commit with a proper bug fix to follow.
|
| |
|
|
|
|
| |
Instead of e_client_utils_open_new() or e_cal_client_new().
|
|
|
|
| |
Instead of e_client_utils_open_new() and e_book_client_new().
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit bf30024dd7973006bf99d0ae509a7f0022368a41, because
it breaks EMailFormatter/Parser extensions, like the prefer-plain.
The thing is that the internal formatters/parsers (also extensions)
should be always added first, and only after then can be added extended
extensions, which are used before those internal. This constraint was not
satisfied with the reverted commit, the order of extension registration
was unpredictable, depended on GType.
|
| |
|
|
|
|
| |
e_client_is_opened() always returns TRUE, so skip it.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Collect all the "config" extensions from the "addressbook", "calendar",
and "mail" modules into one place. These extensions typically just bind
GObject properties of extensible classes to app-specific GSettings keys.
|
|
|
|
|
| |
Clean up resulting deprecation warnings, which were all related to
GtkOrientable consolidation (e.g. gtk_hbox_new() -> gtk_box_new()).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This removes workarounds for below libsoup bugs and makes trust-prompt
for WebDAV based backends work better, by checking also server certificates.
* soup_message_get_https_status() now returns the certificate
and flags for unsuccessful https connections as well as
successful ones. [bug #690176]
* Fixed a deadlock when calling soup_session_abort() on
a SoupSessionSync in some cases. [bug #691399]
|
|
|
|
| |
I forgot to include this in 3.7.4, but no matter.
|
| |
|
|
|
|
| |
No longer needed since the "imap" backend is gone.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Evolution spawns the 'highlight' program with these flags:
G_SPAWN_SEARCH_PATH
G_SPAWN_DO_NOT_REAP_CHILD
G_SPAWN_SEARCH_PATH is not needed because configure already determines
the absolute path to the 'highlight' program. G_SPAWN_DO_NOT_REAP_CHILD
results in zombie 'highlight' processes. Remove both flags.
|
|
|
|
|
|
|
|
|
|
|
| |
Set the Host to "www.google.com" and Method to "ClientLogin".
Don't need to worry about migrating existing Google Contacts sources,
which had "plain/password" as the auth method. The Google EBookBackend
only explicitly checks whether the auth method is "OAuth2", and assumes
"ClientLogin" otherwise.
(I suppose the registry service could tweak older key files, but meh...)
|
|
|
|
|
|
|
|
|
|
|
| |
This now uses e_source_get_oauth2_access_token_sync() instead of talking
directly to GNOME Online Accounts and therefore no longer has to live in
the "online-accounts" module.
The "online-accounts" module will be removed in Evolution 3.9.1, when we
can require GNOME Online Accounts 3.8. Evolution 3.8 will still support
older versions of GNOME Online Accounts, which use OAuth 1.0a tokens for
Google authentication.
|
|
|
|
| |
Unsubscribable folders are not necessarily deletable.
|
|
|
|
|
| |
This only worked with the legacy IMAP backend, which has now been
removed per bug 665371.
|
|
|
|
|
|
|
|
|
|
|
|
| |
e_config_add_skip_check()
e_config_class_remove_factory()
e_config_create_window()
e_config_page_get()
e_config_page_next()
e_config_page_prev()
e_config_set_page_is_finish()
Also remove E_CONFIG_ASSISTANT and all the assistant support therein.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Move the supporting widgets for the contact maps feature alongside
EABContactDisplay. Removing them from libeutil helps isolate our usage
of libchamplain so it's not imposed on the entire application, and even
3rd party software. That libchamplain is an optional dependency only
further complicates the matter.
Ideally I'd like to somehow isolate this feature in an extension module,
but we currently lack sufficient hooks for such an extension. So this
arrangement will have to suffice for now.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Evolution consists of entirely too many small utility libraries, which
increases linking and loading time, places a burden on higher layers of
the application (e.g. modules) which has to remember to link to all the
small in-tree utility libraries, and makes it difficult to generate API
documentation for these utility libraries in one Gtk-Doc module.
Merge the following utility libraries under the umbrella of libeutil,
and enforce a single-include policy on libeutil so we can reorganize
the files as desired without disrupting its pseudo-public API.
libemail-utils/libemail-utils.la
libevolution-utils/libevolution-utils.la
filter/libfilter.la
widgets/e-timezone-dialog/libetimezonedialog.la
widgets/menus/libmenus.la
widgets/misc/libemiscwidgets.la
widgets/table/libetable.la
widgets/text/libetext.la
This also merges libedataserverui from the Evolution-Data-Server module,
since Evolution is its only consumer nowadays, and I'd like to make some
improvements to those APIs without concern for backward-compatibility.
And finally, start a Gtk-Doc module for libeutil. It's going to be a
project just getting all the symbols _listed_ much less _documented_.
But the skeletal structure is in place and I'm off to a good start.
|
|
|
|
| |
The previous commit broke MDN send, which this one fixes.
|
| |
|
|
|
|
| |
The path is now XDG-base-dir compliant: ~/.local/share/camel_certs
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Now we have the following extension points in the GType hierarchy:
E_TYPE_MAIL_FORMATTER_EXTENSION
E_TYPE_MAIL_FORMATTER_PRINT_EXTENSION
E_TYPE_MAIL_FORMATTER_QUOTE_EXTENSION
E_TYPE_MAIL_PARSER_EXTENSION
A registry just needs to be given one of these extension points, and it
can use g_type_children() to find and load all registered extensions.
This eliminates e-mail-format-extensions.[ch] as well as the dynamic
loaders I added a few commits back. Dynamically loaded extensions are
now easier to register, at the cost of internal extensions being a tad
more cumbersome to register. Fair tradeoff, imo.
This also makes e_mail_extension_registry_add_extension() a private
function used only by e_mail_formatter_extension_registry_load() and
e_mail_parser_extension_registry_load().
|
|
|
|
|
|
|
| |
Of the parser extensions that override get_flags(), they all return a
fixed set of flags. So we don't need an instance of the extension to
obtain its flags. Just make it an EMailParserExtensionFlags field in
the class structure.
|
|
|
|
|
|
|
|
|
| |
With the previous changes, all parser extensions derive from
GObjectClass and implement the EMailParserExtensionInterface.
Simplify things further by making EMailParserExtension an abstract base
class so parser extensions are now just direct subclasses and need not
bother with implementing GObject interfaces.
|
|
|
|
|
|
| |
Of the formatter extensions that provide a description, they all use a
static string. So we don't need an instance of the extension to obtain
its description. Just make it a string field in the class structure.
|
|
|
|
|
|
| |
Of the formatter extensions that provide a display name, they all use a
static string. So we don't need an instance of the extension to obtain
its display name. Just make it a string field in the class structure.
|
|
|
|
|
|
|
|
|
| |
With the previous changes, all formatter extensions derive from
GObjectClass and implement the EMailFormatterExtensionInterface.
Simplify things further by making EMailFormatterExtension an abstract
base class so formatter extensions are now just direct subclasses and
need not bother with implementing GObject interfaces.
|
|
|
|
|
|
|
|
|
|
|
|
| |
EMailExtension is now too trivial to keep as a standalone interface.
Add a 'mime_types' string array to the EMailFormatterExtension and
EMailFormatterParser interface structs.
Alter e_mail_extension_registry_add_extension() to take a 'mime_types'
string array and the GType of an extension to instantiate, rather than
the extension instance directly.
e_mail_extension_registry_remove_extension() is no longer needed.
|
|
|
|
|
|
|
|
|
|
|
| |
In all implementations for EMailExtension, the MIME type list is a
static string array -- with the single exception of the text-highlight
module, where the MIME type list is dynamically assembled once.
Replace the mime_types() method with a "mime_types" string array in the
EMailExtensionInterface struct. Then the list of MIME types supported
by the class implementing the EMailExtensionInterface can be obtained
without requiring an instance of the class.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Collect EMailParts in a GQueue provided to the EMailParserExtension,
and change the return type of parse() to gboolean to indicate whether
the given CamelMimePart was handled (even if no parts were added to
the output GQueue).
This avoids the awkward corner case of a parser extension returning a
linked list node with a NULL data member to indicate the CamelMimePart
was handled but no EMailParts produced, and then having to watch out
for that NULL data member corner case throughout the application.
Also, remove the GCancellable parameter from e_mail_parser_error() and
e_mail_parser_wrap_as_attachment() since neither function blocks.
|
|
|
|
|
|
| |
Exposing data members in the public struct is unwise, especially when
EMailPartList is used from multiple threads. Instead keep the members
private and provide a set of thread-safe functions to manipulate them.
|
|
|
|
|
| |
Replace the individual components of an EMailPartList with a reference
on the EMailPartList itself in EMailFormatContext. Easier to manage.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Prefer dealing with GdkEvent pointers and using accessor functions like
gdk_event_get_button().
This is complicated by the fact that some GtkWidget method declarations
still use GdkEventButton pointers, and synthesizing button events pretty
much requires direct GdkEventButton access. But GDK seems to be nudging
itself toward sealing the GdkEvent union. Likely to happen in GDK4.
Mainly clean up signal handlers and leave method overrides alone for now.
|
|
|
|
| |
Use g_object_unref() instead.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|