| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
In some cases, like on errors or cancel, there could be left
an information in the message-list that the list is generating
its content, while it didn't do it in reality. This always resets
the message-list information in case the current message-list
generation finished and was the last in the queue.
|
| |
|
|
|
|
|
| |
This corrects, a bit, a regression caused by commit b0106cc8, reported at
https://bugzilla.gnome.org/show_bug.cgi?id=722698#c13
|
| |
|
|
|
|
|
|
| |
Otherwise invalid source ID is used in the call of g_source_remove()
when is tried to remove "pending" auto-mark-as-seen timeout callback.
It can show a runtime warning on a console too.
|
| |
|
|
|
|
|
| |
The handlers were installed just on main frame. Thus if subframe
contained +/- images to show/hide i.e. CC'ed people it was not working.
|
|
|
|
|
|
|
| |
This used to be done in mail_cancel_all(), but since commit 8ae3cc32830179e09
the function is gone and the mail operations are not cancelled, which
prevents the application to go offline or to quit in a timely manner,
because it's waiting for a finish of possibly expensive operations.
|
| |
|
|
|
|
| |
Subclass of EMFolderSelector, replaces em_folder_utils_create_folder().
|
|
|
|
|
| |
Returns a new EActivity configured to display status and error messages
directly in the selector dialog.
|
| |
|
|
|
|
|
|
|
|
| |
Convert the folder selector's "New" button to a [+] button on an inline
toolbar beneath the folder tree. The symbolic button looks better, and
clicking it no longer triggers a "response" signal, which terminates a
gtk_dialog_run() call. We don't want gtk_dialog_run() to terminate in
this case.
|
|
|
|
| |
This makes EMFolderSelector a little more "subclassable".
|
|
|
|
|
| |
Mostly a convenience function so callers don't have to dig up the
dialog's folder tree widget.
|
|
|
|
| |
Will eventually replace em_folder_selector_get_selected_uri().
|
|
|
|
| |
A more useful alternative to gtk_dialog_get_content_area().
|
|
|
|
|
|
|
|
| |
Now that all the instantiation arguments have either been eliminated or
made into GObject properties, we can initialize the dialog properly via
the constructed() method instead of some custom internal function.
This makes EMFolderSelector a LOT more "subclassable".
|
|
|
|
|
|
| |
Just call gtk_window_set_title() after creating the dialog.
This makes EMFolderSelector a little more "subclassable".
|
|
|
|
|
|
|
| |
Replaces the 'oklabel' argument when creating a new dialog, and can be
changed after the dialog is created.
This makes EMFolderSelector a little more "subclassable".
|
|
|
|
|
|
|
| |
Replaces the 'text' argument when creating a new dialog, and can be
changed after the dialog is created.
This makes EMFolderSelector a little more "subclassable".
|
|
|
|
|
|
|
| |
Replaces the EM_FOLDER_SELECTOR_CAN_CREATE flag, and can also be set
after the selector dialog is instantiated.
This makes EMFolderSelector a little more "subclassable".
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
a) ETableColumnSpecification: the 'title' property is always overwritten
during the spec file loading, thus no need to allocate it here
b) the 'uids' are leaked on message move, because the GPtrArray is
supposed to be always unreffed
|
|
|
|
|
| |
When enabled, this will compile all libraries/binaries with the necessary
gcc and ld flags to enable code coverage support using gcov.
|
|
|
|
| |
I missed that part when copying the code from a test program I cooked.
|
| |
|
|
|
|
|
| |
Remove this old hack and translate the pre-defined filter/search/vfolder
rules the same way any other XML file gets translated.
|
|
|
|
| |
Makes the logic easier to debug too.
|
|
|
|
| |
expunge
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The custom styles, those which are added on-the-fly directly to DOM, were
added only after whole document was completely loaded, which included also
sub-frames content, thus when these were slow to download for any reason,
the main frame content, like the top header bar, was shown with a default
style, which is white background and black text color. The WebKitWebView's
document-load-finished signal is emitted whenever the actual HTML content
is loaded, and the DOM is available as well, for each frame, including
the main frame of the WebView, thus updating/setting custom CSS styles
in this signal handler makes the loaded frames look as expected, without
waiting for other frames in the document to finish their load.
|
| |
|
|
|
|
|
|
| |
Works around a GTK+ regression caused by:
https://git.gnome.org/browse/gtk+/commit/?id=f18655c641dbe2ca2a28627538898be575667e1a
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This was introduced around commit ef355cd5, when the caching of
search results were dropped. The new function was also buggy, thus
this commit fixes even that.
Namely done changes:
- cache email address book search results for 5 minutes
- do not stop searching when any book fails to open (which can be
due to temporary unreachable server, for example)
- search in local books first
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Win32 headers have a #define for 'interface', which breaks the build
when this word is used in the code, thus replace it to 'iface',
the same way as GLib or GTK+ code use to have it. (See bug #722068.)
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
The model stores GtkTreeRowReference-s in its private data, but these
references ref the model, thus there is a circular dependency between
internal data and the object itself, effectively causing memory leaks.
With this fixed, the CamelSession is correctly freed at the end of
the application.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
After account autoconfiguration, you can click the "Go Back" button to
revise the account details. That's been in place for some time now, but
it's not obvious from the button label. "Go Back" implies going back to
the Identity page.
Temporarily rename the "Go Back" button on the Summary page to something
more accurate after a successful autoconfiguration, then reset it to its
original "Go Back" label.
Unfortunately the GtkAssistant API does not make this easy. I had to
resort to crawling the assistant's internal child widgets and comparing
button labels to locate the right button. So this hack may not be very
future-proof.
|
|
|
|
|
|
|
| |
Any GtkWidget creation or manipulation should be done exclusively
from the main/UI thread, thus make sure it is done that way.
Of course, evolution can freeze for a little time (depends on the message
size), until its formatting is done. It's unnoticeable with usual messages.
|
| |
|
|
|
|
|
|
| |
Two problems:
a) the returned value of the prompt was checked reverted
b) the messages were downloaded anyway, without setting CamelSession offline
|
|
|
|
|
|
|
|
| |
It turned out that the file is required for translators, which
are not supposed to build sources, thus the built file would
be missing to them. I wasn't aware of that.
This reverts commit fa75665c3bf9dceaeec233ccf3702cdc167de3c3.
|
|
|
|
|
| |
This way git.mk knows about it and ignores changes in it, because,
after all, this header file is auto-generated on build.
|
|
|
|
|
|
|
|
|
| |
The zoom in shortcut (Ctrl+) can be confusing for some users because on
keyboards with a [+ =] key the '+' requires holding Shift. To mitigate
the confusion, also accept (Ctrl=) for zoom in.
And while we're add it, also support Ctrl+ and Ctrl- on keypads, as well
as keyboards with dedicated Zoom In / Zoom Out keys.
|
|
|
|
|
| |
The request's finish function is not called in case when the request
is cancelled, which meant that the whole data stream was leaked.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
This is a regression after commit b5023d3, an edit of the mail-config.ui
file accidentally dropped ID-s for a GtkComboBoxText items, thus
the g_settings_bind() could not match any item in the combo box.
|
|
|
|
|
|
| |
Missed a case when an EMailReader is an EMailBrowser, which is not
an EMailView, which produced a runtime warning on a console when
a message was shown in a separate window (like after double-clicking it).
|
| |
|
|
|
|
|
|
| |
Another take, this time, hopefully, the final. The call to e_tree_set_cursor()
also resets the view to the selected row, which we want to avoid, thus do
not do this call, if the view was regenerated on a folder-changed signal.
|
| |
|
| |
|
|
|
|
|
|
| |
There was missing a call to set CamelSession offline, which made
the other CamelService-s think they can do network operations,
while it wasn't true.
|
|
|
|
| |
Just a couple leftovers in mail/Makefile.am. Not needed anymore.
|
| |
|
|
|
|
|
|
|
|
| |
Unsubscribe from a folder with children, then re-subscribe.
The children will no longer be reachable in an EMFolderTree.
This is because we were calling em_folder_tree_model_set_folder_info()
claiming we have complete folder subtree info, when in fact we don't.
|
|
|
|
| |
Similar to the previous commit, when renaming a folder.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This is a theoretical crash (not actually reproduced), caused by the
client variable being NULL if no address books exist. Instead of
crashing, gracefully exit with an error.
Found by scan-build.
https://bugzilla.gnome.org/719540
|
| |
|
|
|
|
|
|
| |
More convenient than constructing a CamelURL just for this function.
Also, document it.
|
|
|
|
| |
The 'fetch_type' and 'fetch_count' arguments are not used.
|
|
|
|
|
|
| |
Turns out this function was a no-op, because nothing registered itself
to be cancelled this way. This was part of the legacy async framework,
which we've mostly moved away from now.
|
|
|
|
| |
Replaces the old interactive (but not really) alert_user() method.
|
|
|
|
|
|
| |
When creating a temporary SoupSession, synchronize its GProxyResolver
with the SoupRequest's SoupSession which is already configured to use
our built-in proxy ESource.
|
| |
|
|
|
|
|
|
| |
Pass the built-in proxy ESource to SoupSession as a GProxyResolver.
Replaces EProxy usage, which is deprecated.
|
| |
|
|
|
|
| |
SoupSessionAsync and SoupSessionSync are deprecated in libsoup 2.42.
|
|
|
|
|
| |
Use transformation functions to convert between EMailJunkFilter and the
junk filter name.
|
|
|
|
| |
Takes over CamelSession's "check-junk" property.
|
| |
|
|
|
|
|
|
|
| |
Pass a referenced StoreInfo as the closure so it doesn't have to be
looked up in the signal handler, but do so without leaking references.
Simplifies the signal handlers a bit.
|
| |
|
|
|
|
|
|
| |
Always ellipsize folder names, otherwise it interferes with the status
icons. The property was once bound to a hidden GSettings key, but the
setting was silly and was removed some time ago.
|
|
|
|
|
|
| |
Each network service row in the folder tree now shows an icon which
follows the state of the service's connection status and remote host
reachability.
|
| |
|
| |
|
|
|
|
| |
Also shorten the struct name to StoreInfo since it's private now.
|
|
|
|
|
|
|
| |
Only called from within EMFolderTreeModel itself.
Working toward making the EMFolderTreeModelStoreInfo struct private to
EMFolderTreeModel, so it can then be made thread-safe.
|
|
|
|
|
|
|
| |
Only called from within EMFolderTreeModel itself.
Working toward making the EMFolderTreeModelStoreInfo struct private to
EMFolderTreeModel, so it can then be made thread-safe.
|
|
|
|
|
|
|
|
|
|
| |
Take a CamelStore instead of an EMFolderTreeModelStoreInfo.
It imposes a few extra hash table lookups to reacquire the StoreInfo
from a CamelStore while populating the folder tree, but that's fine.
Working toward making the EMFolderTreeModelStoreInfo struct private to
EMFolderTreeModel, so it can then be made thread-safe.
|
|
|
|
| |
No longer used.
|
|
|
|
|
|
|
|
| |
Replaces em_folder_tree_model_lookup_uri() and to some extent
em_folder_tree_model_lookup_store_info().
Working toward making the EMFolderTreeModelStoreInfo struct private to
EMFolderTreeModel, so it can then be made thread-safe.
|
|
|
|
|
|
|
|
|
|
|
| |
Declaring the CamelStore column as a raw pointer type dates back to
before Camel was GObject-based. The problem is the CamelStore could
be finalized while the tree model still has a pointer to it, leaving
behind dangling pointers in the tree model which could cause a crash.
Declaring the column type in the column enum turned out to be a good
idea, as it makes code that needs updated easy to find. This renames
the enum value from COL_POINTER_CAMEL_STORE to COL_OBJECT_CAMEL_STORE.
|
|
|
|
|
|
| |
Replaces em_folder_tree_get_selected_store().
Same as before, but adds a reference to the returned CamelStore.
|
|
|
|
|
|
|
|
|
|
|
|
| |
This makes the code free of Coverity scan issues.
It is sometimes quite pedantic and expects/suggests some
coding habits, thus certain changes may look weird, but for a good
thing, I hope. The code is also tagged with Coverity scan
suppressions, to keep the code as is and hide the warning too.
Also note that Coverity treats g_return_if_fail(), g_assert() and
similar macros as unreliable, and it's true these can be disabled
during the compile time, thus it brings in other set of 'weird'
changes.
|
| |
|
|
|
|
| |
Use: #include <libemail-engine/libemail-engine.h>
|
|
|
|
| |
Steals some enum types that libemail-engine doesn't need to know about.
|
| |
|
|
|
|
|
| |
Rename it to "Reset Order". A little less confusing, I think,
since there's also a "Default" button to set the default account.
|
|
|
|
|
|
| |
Camel now uses GResolver for domain name resolution, so check for
G_RESOLVER_ERROR when sending so the "saving-to-outbox" alert can
work again.
|
| |
|
| |
|
|
|
|
| |
Replaces EMNetworkPrefs.
|
| |
|
|
|
|
|
|
| |
The change also allows setting accounts for certain recipients (based
on a part of the recipient address). The option can be found in Folder
Properties and in Edit->Preferences->Composer Preferences->Send Account.
|
| |
|
|
|
|
| |
g_type_init() is deprecated in GLib 2.36.
|
| |
|
|
|
|
|
| |
With CAMEL_DEBUG=emformat:requests the evolution prints a debug messages
about requests being processed when formatting messages.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
works
When we were collecting the elements for adding the onclick event
listeners, we were using the webkit_dom_document_get_element_by_id
method, but when email had multiple TO, CC or BCC headers it was
returning just the first elements with given id. To fix this we moved
to webkit_dom_*_query_selector methods that give us more powerfull
element extraction from document.
When toggling the visibility of header row, we are now operating just
in the row that contains the clicked element.
This patch also remove the suffixes from all __evo-moreaddr ids.
|
|
|
|
|
|
|
| |
Avoid redrawing (thus loosing the selection and scroll position) of
preview window on style change by defining the colors through CSS styles.
On style change we just update the CSS color definitions and preview will
update itself without redraw.
|
|
|
|
|
|
|
|
|
| |
When creating a top-level folder, the folder name was still URI-encoded.
So for example "Top Level Folder" was coming out "Top%20Level%20Folder".
The em_folder_tree_store_root_selected() "if" branch is uncommented and
looks unnecessary to me, so I'm removing it. Always parse the URI with
e_mail_folder_uri_parse(), which produces a decoded folder name.
|
| |
|
|
|
|
|
|
| |
Apparently not required anymore, and was actually causing embedded
widgets for attachments to malfunction when collapsed and expanded
again -- particularly audio attachments.
|
|
|
|
|
|
| |
None of my attachment samples invoke bind_iframe_content_visibility().
Both it and toggle_widget_visibility() appear to dead code. Removing
the functions causes no ill side-effects as far as I can tell.
|
| |
|
| |
|
|
|
|
|
|
| |
Highlight a section of a mailing list post, click Reply, answer "Reply
Privately", Evolution mishandles the source message's reference count,
causing the message to finalize too early and crash in Camel.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Testing IMAP NOTIFY and folder renames, I observed a "folder-created"
signal emission before the "folder-renamed" signal emission. So the
renamed folder already exists in the tree model when we receive the
"folder-renamed" signal. Make sure we handle that sanely.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
There's now enough hooks in EWebView that it can take over image saving
from EMailDisplay / EMailReader, with the added perk that a "Save Image"
pop-up menu item now appears for images in ALL preview panes.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Asynchronously copies the image under the cursor to the clipboard.
This replaces the "cursor-image" property, which attempts to match the
image URI to a subresource from WebKitWebDataSource. The problem with
that approach is EMailDisplay redirects several URI schemes to its own
custom request handlers which further mutate the URI. So for example,
a text/html message may use a "cid:" URI to refer to an embedded image,
which EMailDisplay transforms to a "mail:" URI and finally to a "data:"
URI. The final image URI might not be derivable from the original URI
without retracing the SoupRequest.
The "image-copy" action now calls e_web_view_cursor_image_copy().
This also adds an explicit requirement on gdk-pixbuf-2.0 >= 2.24 for
gdk_pixbuf_new_from_stream_async() / finish().
New functions:
e_web_view_cursor_image_copy()
Removed functions:
e_web_view_get_cursor_image()
e_web_view_set_cursor_image()
|
|
|
|
|
|
|
|
|
|
|
| |
Attempts to derive a suggested filename from the given URI for use in a
"Save As" dialog.
By default the suggested filename is the last path segment of the given
URI (the unless the given URI looks like a query), but subclasses can use
other mechanisms for custom URI schemes. For example, "cid:" URIs in an
email message may refer to a MIME part with a suggested filename in its
Content-Disposition header.
|
|
|
|
|
|
|
|
|
|
| |
Replaces the given URI with a redirected URI as necessary, primarily for
use with custom SoupRequest handlers. Typically this function would be
called just prior to handing a request off to a SoupSession, such as
from a WebKitWebView "resource-request-starting" signal handler.
Case in point: EMailDisplay now implements the redirect_uri() method,
and calls it from its own "resource-request-starting" signal handler.
|
|
|
|
|
|
|
| |
Trivial wrapper for webkit_web_view_get_uri().
Probably made sense while we were transitioning from GtkHTML to WebKit,
but we don't need it anymore.
|
|
|
|
| |
Not worth having dedicated EWebView APIs for this.
|
|
|
|
|
|
| |
Rename to e_mail_display_set_part_list().
Function takes an EMailPartList, not an "EMailPartsList".
|
|
|
|
|
|
| |
Rename to e_mail_display_get_part_list().
Function returns an EMailPartList, not an "EMailPartsList".
|
|
|
|
|
|
|
| |
Any provider can return a generic error code, which makes the check
useless, only hiding important error information from a user. Since
the camel_getaddrinfo() returns CAMEL_SERVICE_ERROR_URL_INVALID,
the check could be adapted and be more useful.
|
| |
|
|
|
|
|
|
|
| |
* Use GIO-style async parameters.
* Add mail_folder_cache_note_store_finish().
* Do the bulk of the work in a thread so the logic is more readable.
* Queue multiple calls for the same CamelStore and share the results.
|
|
|
|
|
|
|
|
| |
Take a CamelStore and folder name instead of a CamelFolder.
CamelStore and folder name can easily be obtained from either a folder
URI or a CamelFolder instance, and the function is more efficient with
separate parameters.
|
|
|
|
|
|
|
|
| |
Replaces mail_folder_cache_get_folder_from_uri().
Returns the CamelFolder for the CamelStore and folder name if available,
or else NULL if a CamelFolder instance is not yet cached. This function
does not block.
|
| |
|
| |
|
|
|
|
|
| |
We were leaking the EActivity. Wonder if this is the mystery activity
that's been blocking application shutdown lately.
|
| |
|
| |
|
|
|
|
|
|
| |
GalViewInstance and EMailPanedView need access. Currently they're just
using the public GalViewCollection members directly, but those are about
to be sealed up.
|
|
|
|
|
|
|
| |
Instead, lazily load the state file once an ETable or ETree is attached,
since we need its ETableSpecification to create an ETableState instance.
This means GalViewFactoryEtable can lose its ETableSpecification too.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
EShellView now holds a reference to the active GalViewInstance. Where
applicable, the EShellView subclass is responsible for keeping this up
to date when the sidebar selection changes.
Holding a reference allows EShellView to implement common actions like
"Save Current View" directly instead pushing it on to subclasses.
New functions:
e_shell_view_get_view_instance
e_shell_view_set_view_instance
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
e_table_specification_new() now takes a table specification filename and
a GError and parses the file as part of instance creation. If a file or
parse error occurs, e_table_specification_new() returns NULL.
This replaces e_table_specification_load_from_file().
New functions:
e_table_specification_get_filename()
Removed functions:
e_table_specification_load_from_file()
|
|
|
|
|
| |
Use e_tree_get_state_object() and e_tree_set_state_object() instead to
transfer state info from one ETree instance to another.
|
|
|
|
|
|
| |
Also remove e_tree_construct_from_spec_file().
Use e_tree_new() or e_tree_construct() instead.
|
| |
|
|
|
|
|
|
|
|
| |
Replace ETableSortColumn with separate ETableColumnSpecification and
GtkSortType parameters in the "get_nth" and "set_nth" functions.
Makes some other parts of the code simpler since it no longer has to
translate a column number to a column specification.
|
|
|
|
| |
Eliminates a few redundant fields.
|
|
|
|
|
|
|
|
|
|
| |
ETableState now keeps a weak reference on the ETableSpecification to
which it's associated. The plan is to replace the column index numbers
with a direct reference to an ETableColumnSpecification from the spec.
New functions:
e_table_state_ref_specification()
|
| |
|
|
|
|
|
|
|
| |
The network-available property was unset when going offline, but
never set again, which caused download of messages for offline use
broken, because it downloads for offline only if the network-available
is set.
|
|
|
|
|
| |
EMailPrintConfigHeaders is pretty simple now that we delegate most
of the meat and potatoes tree view handling to our new parent class.
|
|
|
|
|
| |
The signal indicates the folder tree for a particular store needs to be
reconstructed. We do this by calling em_folder_tree_model_add_store().
|
| |
|
|
|
|
|
|
|
|
| |
Delay capturing MessageList state for a regen operation until the idle
callback, so the caller has a chance to configure the MessageList first.
Also, move the CamelFolderThread into the private structure and provide
thread-safe internal accessor functions for it.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
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);
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);
expanded = e_tree_table_adapter_node_is_expanded (adapter, path);
|
|
|
|
| |
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 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().
|
|
|
|
| |
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 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.
|
|
|
|
|
|
|
|
|
|
| |
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()
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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()
|
| |
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|