| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
Reducing API bloat. Do this instead:
adapter = e_tree_get_table_adapter (tree);
row_count = e_table_model_row_count (E_TABLE_MODEL (adapter));
|
|
|
|
|
|
|
| |
Reducing API bloat. Do this instead:
adapter = e_tree_get_table_adapter (tree);
e_tree_table_adapter_force_expanded_state (adapter, state);
|
|
|
|
|
|
|
| |
Reducing API bloat. Do this instead:
adapter = e_tree_get_table_adapter (tree);
e_tree_table_adapter_load_expanded_state_xml (adapter, xml);
|
|
|
|
|
|
|
| |
Reducing API bloat. Do this instead:
adapter = e_tree_get_table_adapter (tree);
xml = e_tree_table_adapter_save_expanded_state_xml (adapter);
|
|
|
|
|
|
|
| |
Reducing API bloat. Do this instead:
adapter = e_tree_get_table_adapter (tree);
e_tree_table_adapter_load_expanded_state (adapter, filename);
|
|
|
|
|
|
|
| |
Reducing API bloat. Do this instead:
adapter = e_tree_get_table_adapter (tree);
e_tree_table_adapter_save_expanded_state (adapter, filename);
|
|
|
|
|
|
|
| |
Reducing API bloat. Do this instead:
adapter = e_tree_get_table_adapter (tree);
e_tree_table_adapter_show_node (adapter, path);
|
|
|
|
|
|
|
| |
Reducing API bloat. Do this instead:
adapter = e_tree_get_table_adapter (tree);
visible = e_tree_table_adapter_root_node_is_visible (adapter);
|
|
|
|
|
|
|
| |
Reducing API bloat. Do this instead:
adapter = e_tree_get_table_adapter (tree);
row = e_tree_table_adapter_row_of_node (adapter, path);
|
|
|
|
|
|
|
| |
Reducing API bloat. Do this instead:
adapter = e_tree_get_table_adapter (tree);
path = e_tree_table_adapter_node_at_row (adapter, row);
|
|
|
|
|
|
|
| |
Reducing API bloat. Do this instead:
adapter = e_tree_get_table_adapter (tree);
e_tree_table_adapter_root_node_set_visible (adapter, visible);
|
|
|
|
|
|
|
| |
Reducing API bloat. Do this instead:
adapter = e_tree_get_table_adapter (tree);
e_tree_table_adapter_node_set_expanded_recurse (adapter, path, expanded);
|
|
|
|
|
|
|
| |
Reducing API bloat. Do this instead:
adapter = e_tree_get_table_adapter (tree);
e_tree_table_adapter_node_set_expanded (adapter, path, expanded);
|
|
|
|
|
|
|
| |
Reducing API bloat. Do this instead:
adapter = e_tree_get_table_adapter (tree);
expanded = e_tree_table_adapter_node_is_expanded (adapter, path);
|
| |
|
| |
|
| |
|
|
|
|
| |
It just calls gtk_drag_get_data() anyway.
|
|
|
|
| |
It just calls gtk_drag_dest_unset() anyway.
|
|
|
|
| |
It just calls gtk_drag_dest_set_proxy() anyway.
|
|
|
|
| |
Reducing API bloat. Call gtk_drag_dest_set() directly instead.
|
|
|
|
|
|
|
| |
Reducing API bloat. Do this instead:
selection = (ETreeSelectionModel *) e_tree_get_selection_model (tree);
e_tree_selection_model_foreach (selection, callback, closure);
|
|
|
|
|
|
|
| |
Reducing API bloat. Do this instead:
selection = (ESelectionModel *) e_tree_get_selection_model (tree);
e_selection_model_foreach (selection, callback, closure);
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Returns the total number of nodes in the tree model, including hidden
nodes in collapsed tree branches.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This replaces e_tree_table_adapter_construct() with construct properties
and overrides GObjectClass.constructed() to finish instance construction.
New functions:
e_tree_table_adapter_get_source_model()
Removed functions:
e_tree_table_adapter_construct()
|
|
|
|
| |
Similar to what was recently done to ETreeModel.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This reworks the MessageList regen scheduling to be a little more
intuitive, at least to me. We now set the RegenData immediately, but
start the actual regen operation from an idle callback. That way the
caller has the remainder of this main loop iteration to make further
MessageList changes without triggering additional regens.
I think what was happening before was we were triggering multiple regen
operations as we were configuring the EMailBrowser, with each new regen
cancelling the previous, and the message UID to select wound up getting
paired with one of the cancelled regen operations. This resulted in no
message UID ever getting selected in the EMailBrowser.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
It always returned FALSE.
|
|
|
|
| |
Was never called.
|
|
|
|
| |
It always returned TRUE.
|
|
|
|
| |
It always returned TRUE.
|
|
|
|
| |
It always returned NULL.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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().
|
|
|
|
|
|
| |
Replaces e_tree_memory_get_children().
The "paths" output parameter was unused, and was a bad idea anyway.
|
|
|
|
| |
Instead of reinventing GNode, use GNode.
|
|
|
|
| |
ETreeMemory does not implement this, so it's always FALSE.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
It's always TRUE.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
No longer used. We actually had this defined in two places.
|
|
|
|
| |
No longer used.
|
| |
|
|
|
|
|
|
| |
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().
|
|
|
|
|
|
|
|
|
| |
Bind this to EMailReader's "group-by-threads" property.
New functions:
message_list_get_group_by_threads()
message_list_set_group_by_threads()
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
No longer used. Always nice to remove a dirty hack on a dirty hack.
|
| |
|
|
|
|
|
|
|
| |
Make sure we're using our own RegenData structure. Still clear the
reference on the private structure if it matches what we get from our
GSimpleAsyncResult. The idea is to ensure we have exclusive access to
it so we don't have to worry about locking, etc.
|
| |
|
|
|
|
| |
Whatever those macros were once used for was surely evil.
|
|
|
|
| |
No longer used. Looks like a relic of some nasty hack.
|
|
|
|
|
| |
Reimplement the function to use an EActivity and GSimpleAsyncResult
instead of the legacy async framework in mail-mt.c.
|
| |
|
|
|
|
|
|
| |
BROKEN_ETREE is defined and SMART_ADDRESS_COMPARE is not defined.
That's not going to change, so remove the dead conditional code.
Also remove "#if 0" chunks that lack a comment explaining why.
|
| |
|
| |
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Calls e_source_selector_update_row() for each ESource being shown
by the ESourceSelector, according to the "extension-name" property.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|