| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
| |
My apologies for flip-flopping the API again.
e-mail-store.c functions used to take an EMailSession, then I changed
it to take an EMailBackend in preparation for my account-mgmt branch.
Having rethought some API decisions on the branch, however, the first
flip-flop proved to be unnecessary. And now Srini needs the API to use
EMailSession for his mail-factory branch, so I'm flip-flopping again.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Make behavior introduced in bug #636809 optional by adding checkbox
to Preferences->Contacts.
|
| |
|
|
|
|
|
|
|
|
|
| |
Slightly more efficient and convenient than:
g_simple_async_result_set_from_error (simple, error);
g_error_free (error);
One less GError to copy and destroy.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I pushed a few EShell features up to GtkApplication for GTK+ 3.2,
so we can now trim off the redundancies in EShell.
1) GtkApplication has a new "window-added" signal which replaces
EShell's own "window-created" signal.
2) GtkApplication has a new "window-removed" signal which replaces
EShell's own "window-destroyed" signal.
3) gtk_application_get_windows() now returns a list of windows sorted
by most recently focused, replacing e_shell_get_watched_windows().
4) GtkApplication now provides enough hooks to subclasses that we can
remove e_shell_watch_window() and call gtk_application_add_window()
directly.
|
|
|
|
|
|
|
|
|
| |
We have a confusing array of nearly-identical CFLAGS/LIBS definitions in
configure.ac. Time to simplify. Instead let's just have one definition
that includes all the libraries provided by Evolution-Data-Server (incl.
Camel). That, in combination with GNOME_PLATFORM, gives us most of what
we need for compliation and linking, and we can sprinkle definitions for
additional library dependencies in Makefile.am's as needed.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
From ccc980da1fd84ebfca25cf8caf9a5d62333099fc Mon Sep 17 00:00:00 2001
From: Paul Menzel <paulepanter@users.sourceforge.net>
Date: Wed, 28 Sep 2011 10:18:18 +0200
Subject: [PATCH] Remove Ctrl + l () character from source files
The following commits
git show aac3f2c8
git show 1510304c
git show 13cabd9e
git show 350a7a33
git show 9b7cc54d
git show e6972011
git show 1d3a7938
git show 934524b9
git show b2954936
git show a7f677b5
git show 4369c400
git show d509f47a
git show a6d5818f
git show c3876df7
git show 4583098b
git show 2831ada5
git show 4e1bce59
git show 1609f699
git show 4e4c1676
git show d6fade43
among others(?) introduced several occurrences of Ctrl + l (). Probably this was caused by the used editor.
These control characters can be searched for using the following command [1].
$ git grep ^L
[1] http://unstableme.blogspot.com/2009/10/grep-and-print-control-characters-in.html
|
| |
|
|
|
|
|
| |
Reducing diff noise so I can see important changes easier when comparing
branches. A few API changes, but nothing that affects functionality.
|
|
|
|
|
|
|
|
| |
Drop EMFolderTreeModel's "session" property now that it has a "backend"
property and call em_folder_tree_model_set_backend() where we used to
call em_folder_tree_model_set_session().
The session can still be obtained through e_mail_backend_get_session().
|
|
|
|
|
|
|
|
| |
The EModule, EExtensible and EExtension classes as well as the
e_type_traverse() function have been moved to Evolution-Data-Server's
libebackend library to replace e-data-server-module.c.
Now Evolution-Data-Server modules use the same framework as Evolution.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Reducing diff noise with the account-mgmt branch.
Trying to erode our dependency on EAccount as much as possible, or at
least isolate its usage, to make things easier for me on the branch.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
These files are hopelessly out of date, and don't appear to be used for
anything anyway. The only sustainable way to provide language bindings
for Evolution is to generate them through gobject-introspection.
|
|
|
|
|
|
| |
Use camel_session_list_services() instead of the internal store table.
The store table serves little purpose nowadays and could probably be
removed. I'll look into that later.
|
|
|
|
| |
Simplify, simplify...
|
| |
|
| |
|
|
|
|
| |
It's "security-method" now instead of "use_ssl".
|
|
|
|
|
|
|
|
| |
Not worth the pain of maintaining old cruft to make progress.
Breaks GW account migration from versions prior to 2.8 (circa 2006), but
you'd be better off starting from a clean slate anyway if you're jumping
that many releases.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Remove the clumsy abortfunc and commitfunc callback arguments from
e_config_add_items().
|
| |
|
| |
|
|
|
|
| |
I keep forgetting to not use G_PARAM_STATIC_STRINGS in modules...
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
References to EMailSession are leaking like crazy, so the module's
finalize() method never gets called, and we never kill our spamd.
Until I can track down all the reference leaks, kill the spamd process
in response to a "EShell::prepare-for-quit" signal instead of from the
module's finalize() method. (Maybe that's a better long-term solution
anyway?)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We now have a proper junk mail filtering API. All junk filtering
extensions must subclass EMailJunkFilter for user preferences and
availability testing, and implement the CamelJunkFilter interface
for the actual junk filtering and learning operations.
The bogofilter module should be feature-equivalent to its former
EPlugin. The spamassassin module is far more complex. It's nearly
feature-equivalent to its former EPlugin, but I ditched the spamd
respawning code since it seemed unnecessary for a mail client to
have to deal with. If there's a huge outcry from users about it
I'll reluctantly put it back, but I don't expect one.
This gets us a step closer to killing off EConfig, and eventually
the EPlugin framework itself.
|
|
|
|
|
|
| |
We track Evolution's online state separately from network availability
these days. I think there was still logic here from when we set online
state directly. Don't lie about network availability.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
When a stream is obviously a file or memory stream (both of which
implement the GSeekable interface), use g_seekable_seek() instead of
camel_stream_reset().
This is helping me discover if it's safe to remove camel_stream_reset().
We want to eventually move to GIO streams, which have no reset method.
|
| |
|
|
|
|
|
|
|
| |
The GTK+ patch in bug 653705 is also required for the Account Assistant
to work properly under the new GtkAssistant design in GTK+ 3.1.
This commit only deals with sidebar ordering issues.
|
|
|
|
| |
Forgot that part... kind of important.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Integrates with the GNOME Online Accounts service.
Creates Evolution sources for a GOA Google account and keeps them
synchronized. Also registers a new CamelSaslXOAuth class for use
with GMail.
Authentication of Google Calendars and Google Contacts using OAuth
is still under development.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This works similar to the offline and shutdown procedure in EShell.
We broadcast a "load-accounts" EShell event with an EActivity. The
EActivity has a toggle reference which we use as a counting semaphore.
If another module needs to handle the event asynchronously, it should
reference the EActivity until its async operation completes, then drop
the reference. Once the signal handlers finish and only the toggle
reference remains, we then proceed with the Evolution Setup Assistant.
All of this is in preparation for GNOME Online Accounts integration.
For the moment, nothing listens for the "load-accounts" EShell event,
so there should be no change in Evolution Setup Assistant behavior.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
We'll query the accounts to get display names for the combo box,
but that's it. Use CamelStores instead.
|
|
|
|
|
| |
Use em_folder_tree_model_list_stores() to determine whether to enable
the folder subscription editor.
|
| |
|
| |
|
|
|
|
|
|
| |
There were a few places where we were accessing the folder tree model
directly to get the selected store + folder name, or were asking for the
selected URI only to parse back into its store + folder name components.
|
|
|
|
|
| |
Now EMFolderTree has access to both an EShellBackend and an EAlertSink;
everything it needs to build and submit EActivity instances.
|
|
|
|
|
|
|
|
| |
All this so EMFolderTree can submit EActivity instances for async ops.
You can obtain an EMailSession from an EMailBackend, but not vice versa.
Creates lots of pretty ripples in the mail code, but ultimately reduces
complexity. So it's a code cleanup of sorts.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add an action group for Search Folders to EMailReader. The action
group's visibility is bound to the "mail-enable-search-folders" setting,
so that menu items related to Search Folders are hidden when Search
Folders are disabled in GConf.
Affected menu items are:
Edit -> Search Folders
Message -> Create Rule -> Search Folder from Subject...
Message -> Create Rule -> Search Folder from Sender...
Message -> Create Rule -> Search Folder from Recipients...
Message -> Create Rule -> Search Folder from Mailing List...
Search -> Create Search Folder From Search...
|
|
|
|
|
|
| |
Use an enum type to request different action groups. For now we just
have E_MAIL_READER_ACTION_GROUP_STANDARD. EMailReader implementations
should map the enum value to an appropriate GtkActionGroup.
|
|
|
|
| |
Use e_mail_folder_remove() instead.
|
|
|
|
| |
Use e_mail_store_prepare_for_offline() instead.
|
|
|
|
|
|
|
|
| |
This starts up the EMailShellBackend whenever a new composer window is
created. Normally this happens when switching to the Mail shell view,
but if trying to send a message from a different shell view before the
Mail shell view is ever activated, the mail accounts were not getting
loaded and sending or saving the message to a mail folder would fail.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
I guess I meant to move these to EMailReader but forgot to delete the
original versions.
|
| |
|
| |
|
|
|
|
|
| |
No more fetching a message itself. Oh, and stop unreffing the message.
Those kinds of insane semantics are what lead to crashes.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Configuring and submitting an EActivity for every mail operation is
getting tedious. This function helps reduce boilerplate code by:
* Creating a new EActivity instance.
* Installing an EAlertSink using e_mail_reader_get_alert_sink().
* Installing a GCancellable (which is really a CamelOperation).
* Submitting the activity via e_shell_backend_add_activity().
I'm considering adding a similar function (or class method) for
EShellView. Not sure yet...
|
|
|
|
|
| |
Now uses camel_store_get_folder() and camel_folder_get_quota_info(),
although I need to rewrite the quota function to be asynchronous.
|
|
|
|
|
|
|
|
| |
Convenience function for use in GAsyncReadyCallback functions.
This acknowledges the cancellation, so that the activity's description
changes from "(cancelling)" to "(cancelled)" and the description appears
crossed out in the UI for a moment before disappearing.
|
|
|
|
|
| |
Now uses e_mail_folder_build_attachment() and
e_mail_folder_get_multiple_messages().
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Take a folder URI string instead of a CamelFolderInfo, and swap places
with the GtkWindow parameter.
|
|
|
|
| |
Take a folder URI string instead of a CamelFolderInfo.
|
|
|
|
|
| |
I have no idea what this was used for, but it looks way too convoluted
to be useful anymore.
|
|
|
|
|
| |
Instead call e_mail_reader_get_folder() and, if you really need to,
generate the folder URI with e_mail_folder_uri_from_folder().
|
|
|
|
|
| |
Pass CamelFolder objects instead, which are already available at almost
every call site.
|
|
|
|
| |
Mostly dead assignments.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This one's a little involved:
- EMailShellView now obtains a CamelFolder itself in response to
EMFolderTree::folder-selected signals. Uses EActivity to do so.
- Revise EMFolderTree::folder-selected signal arguments to be more
useful: emit a CamelStore object instead of a folder URI.
- Also revise EMFolderTree::folder-activiated signal arguments the
same way while we're at it.
- Remove the "folder_uri" argument from e_mail_reader_set_folder().
If you have a CamelFolder object you can obtain the URI string by
calling camel_folder_get_uri().
|
|
|
|
| |
Comes in handy for a few EMailShellView actions.
|
| |
|
| |
|
|
|
|
|
| |
Kill itip_addresses_get() and itip_addresses_get_default(), and use
e_get_account_list() and e_get_default_account() instead.
|
| |
|
| |
|
|
|
|
| |
No longer used.
|
|
|
|
| |
Prefer the newer GtkAction "set" functions over g_object_set().
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
With lockdown settings available through GSettings, widgets can handle
lockdown integration themselves without having to use EShellSettings.
Also fixed a few places where printing or save-to-disk actions were
either not properly wired up or not responding to lockdown settings,
but much more work needs done. Attachments, for example, are not
honoring the disable-save-to-disk setting at all.
This too requires the recently-added gsettings-desktop-schemas
dependency.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
I don't know how in the world an ESource can wind up not having a UID
string, but we saw a case of this in 2.32. Emit a runtime warning and
avoid crashing.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Lockdown keys have moved to gsettings-desktop-schemas, so disable
lockdown integration until we're ready for GSettings.
|
|
|
|
|
| |
As of GLib 2.28 all GObject virtual methods, including constructed(),
are safe to chain up to unconditionally. Remove unnecessary checks.
|
| |
|
|
|
|
| |
GCC learned how to find dead assignments.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Allows Evolution to not have to know the ESource column number in
ESourceSelector tree models. Backported from "account-mgmt" branch.
|
| |
|
|
|
|
|
|
|
|
| |
If the migration phase has to show a dialog the idle callback for
intializing mail stores will run too soon. Instead, hook it onto
the EShellBackend start() method.
Migration code can initialize mail stores early if it needs to.
|
| |
|
|
|
|
|
|
| |
An easy way to broadcast application-wide alerts to shell windows.
These alerts will persist in all current and future shell windows
until responded to (either programmatically or by the user).
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
As a follow-up for bug #633949
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Continue replacing the use of calendar-config functions with GObject
property bindings to EShellSettings properties.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Use e_mail_session_unsubscribe_folder() instead.
|
|
|
|
|
|
|
| |
Passing a random GtkWidget and then searching its ancestors for an
EAlertSink turned out to be not as useful as I thought. Most of the
time we know about and have access to the widget that implements
EAlertSink, so just pass it directly as an EAlertSink.
|
| |
|
| |
|
|
|
|
| |
gcc warning fix
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
With unintrusive error dialogs gone, we can cut some unnecessary bits
out of EActivity.
I'm also adding a new enum property called "state", which is one of:
E_ACTIVITY_RUNNING
E_ACTIVITY_WAITING
E_ACTIVITY_CANCELLED
E_ACTIVITY_COMPLETED
The state of an activity must be explicitly changed. In particular,
when the user cancels an activity the state should be set only after
confirming the operation has been cancelled and not when cancellation
is requested (e.g. after receiving a G_IO_ERROR_CANCELLED, not when
the GCancellable emits "cancelled"). EActivityBar and EActivityProxy
widgets have been updated to make this distinction clearer in the UI.
E_ACTIVITY_WAITING will be used when activities have to be queued and
dispatched in sequence, which I haven't written yet.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
To reduce GConf usage in em-composer-utils.c:
- Relevant functions in em-composer-utils.c now take arguments for
reply and forward styles.
- Redundant forwarding functions were removed:
em_utils_forward_attached()
em_utils_forward_inline()
em_utils_forward_quoted()
- EMailReader now has "forward-style" and "reply-style" properties,
which get bound to the appropriate EShellSettings properties in
modules/mail/e-mail-config-reader.c. These same EShellSettings
properties are bound to the combo boxes in Composer Preferences.
|
|
|
|
|
|
| |
So we don't have to access GConf directly from EMFolderTree. The
property gets bound to an EShellSettings property, which is in turn
bound to the "no_folder_dots" GConf key by way of a transform function.
|
|
|
|
|
|
|
|
|
| |
And generate GTypes for each of them in e-mail-enumtypes.[ch].
Also, the glib-gen.mak script forced me to add a <mail/e-mail.h>
top-level header, which really isn't a bad idea anyway.
TODO: We should do this for calendar and addressbook too.
|
| |
|
| |
|
|
|
|
|
|
| |
This marks the end of unintrusive error dialogs, which were too
unintrusive. We now show errors directly in the main window using
the EAlert / EAlertSink framework.
|
|
|
|
|
|
|
|
|
| |
This module posts an alert to the first EShellWindow when starting
offline, and also posts an alert when the network connection drops.
We get frequent questions on the mailing list from users not realizing
Evolution is starting in offline mode, so this is meant to help address
that confusion.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
You can now amend the predefined actions in an EAlert by calling
e_alert_add_action(). Useful for adding actions from an existing
GtkUIManager.
Call e_alert_peek_actions() to obtain a combined list of predefined
and custom actions. These will typically serve as "related" actions
for GtkButtons (cf. gtk_activatable_set_related_action()).
Also, both EShellWindow and EShellView now implement EAlertSink. Use
EShellWindow for application-wide alerts, EShellView for view-specific
alerts.
|
|
|
|
| |
Add the Bcc destinations instead of setting it.
|
| |
|
| |
|
|
|
|
|
|
| |
GObject now does property bindings itself.
Requires GLib >= 2.26.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Listen for "prepare-for-quit" signals from the shell and inhibit
shutdown until all the activities we're tracking are finalized.
Also, add a couple supporting functions:
gboolean e_shell_backend_is_busy (EShellBackend *shell_backend);
void e_shell_backend_cancel_all (EShellBackend *shell_backend);
These will eventually replace mail_msg_active() and mail_cancel_all().
|
|
|
|
| |
Use camel_folder_get_uri() instead.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
'Send' and 'Save Draft' are now asynchronous and run outside of
Evolution's MailMsg infrastructure.
Add an EActivityBar to the composer window so these asynchronous
operations can be tracked and cancelled even in the absense of a main
window. Also add an EAlertBar to the composer window so error messages
can be shown directly in the window.
Instead of calling e_alert_dialog_run_for_args(), call e_alert_submit()
and pass the EMsgComposer as the widget argument. The EMsgComposer will
decide whether to show an EAlertDialog or use the EAlertBar, depending
on the GtkMessageType of the alert.
|
|
|
|
|
|
|
|
|
|
|
| |
Global variables in shared libraries are a bad idea. EMailBackend now
owns the MailSession instance, which is actually now EMailSession.
Move the blocking utility functions in mail-tools.c to e-mail-session.c
and add asynchronous variants. Same approach as Camel.
Replace EMailReader.get_shell_backend() with EMailReader.get_backend(),
which returns an EMailBackend. Easier access to the EMailSession.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Redesign the "Folder Subscriptions" dialog and use Camel's async API
instead of the MailMsg infrastructure to simplify the implementation.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
EActivity now uses a GCancellable to manage cancellations, instead of
having its own redundant cancellation API. API changes are as follows:
+ e_activity_get_cancellable()
+ e_activity_set_cancellable()
- e_activity_cancel()
- e_activity_is_cancelled()
- e_activity_get_allow_cancel()
- e_activity_set_allow_cancel()
EActivity's "cancelled" signal remains, but only as a repeater for
GCancellable::cancelled signals. It should not be emitted directly.
The presence of a GCancellable implies that cancellation is allowed.
EActivity does not create its own default GCancellable, it has to be
given one.
If a CamelOperation (cast as a GCancellable) is given, EActivity will
configure itself to listen for status updates from the CamelOperation
and propagate the information to its own "primary-text" and "percent"
properties.
These changes allowed me to start cleaning up some of the incredibly
convoluted logic in mail-mt.c -- in particular, mail_operation_status()
is completely gone now. mail-mt.c is still in a transitional state --
much more significant changes coming soon.
|
|
|
|
|
|
|
| |
In GTK+ 2.21.8, the keysym names were renamed from GDK_* to GDK_KEY_*.
I've added backward-compatibility macors to gtk-compat.h, which can be
dumped as soon as we require GTK+ >= 2.22.0.
|
| |
|
|
|
|
|
|
| |
All this time I never realized the subject-thread plugin was nothing
more than a stupid checkbox. The actual thread-by-subject code lives
in the core mail library.
|
|
|
|
| |
EConfig and EMAccountEditor are very, very brittle.
|
|
|
|
|
| |
The patch suggests displaying the calendar name and group instead of uri
for the source of error.
|
|
|
|
|
| |
Load sensapi.dll only from system directory where it should normally
be and not from any random place.
|
|
|
|
|
|
| |
- Fix GtkVBox orientations.
- Reduce container widgets.
- Remove unused widgets.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove some options from Mail Preferences that aren't worth the screen
real estate they take up. For now, the corresponding GConf keys still
remain and are honored by Evolution. These same options were already
removed for Express mode.
Options removed are:
[ ] Mark messages as read after XXX seconds
[ ] Do not display messages when text size exceeds XXX KB
[ ] Shrink To / Cc / Bcc headers to XXX addresses
[ ] Enable Magic Spacebar
[ ] Enable Search Folders
|
|
|
|
| |
How ironic.
|
| |
|
|
|
|
|
|
|
| |
If we're using GTK+ 2.21.8 (where gtk_dialog_set_has_separator() is
deprecated but the property is still present and defaults to TRUE), we
still need to set the property to FALSE. So instead use g_object_set()
up through GTK+ 2.90.6, after which the property itself is gone.
|
| |
|
|
|
|
|
|
| |
Unfortunately the default value for this property is TRUE (bzzt, WRONG!)
so we can't just remove the function outright until we require GTK+ 2.22.
It was deprecated in GTK+ 2.21.8.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Given the way the autosave feature was awkwardly bolted on to the
composer, an EExtension seemed like a natural fit. And it helped
clean up some object lifecycle hacks (and bugs).
What we have now is a new module consisting of two EExtensions:
EComposerAutosave extends EMsgComposer and determines when to
kick off an asynchronous autosave operation.
EComposerRegistry extends EShell and offers to restore orphaned
autosave files on startup (which is also asynchronous now).
e-autosave-utils.c holds the actual asynchronous functions and a few
other miscellaneous utility functions.
Source code for the new module lives in /modules/composer-autosave.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
EMailShellContent implements the EMailReader interface but acts as a
proxy for EMailPanedView, from which it obtains MessageList and EWebView
widgets. The problem was both classes call e_mail_reader_init_private()
which connects to signals emitted from the MessageList and EWebView
widgets. But since EMailShellContent is a proxy for EMailPanedView,
the signals were being connected twice.
This commit does away with e_mail_reader_init_private(), instead adding
options to e_mail_reader_init() to control what parts of initialization
to run. It's an ugly and temporary hack.
I'm beginning to realize EMailReader is too bloated and needs rethought.
EMailReader should just manage actions. EMailView should own and manage
the widgets, and EMailReader should just have a get_mail_view() method
so it has access to those widgets. That way the EMailView subclasses
won't have to implement EMailReader themselves and wind up allocating
a bunch of duplicate, unused actions.
It's too close to a stable release to rip these interfaces apart and
reorganize them. I'll try to do that for 2.33 to help make the design
more intuitive.
|
| |
|
|
|
|
| |
As reported in Red Hat bugzilla in 626810
|
|
|
|
|
|
|
| |
Prefer thread-safe G_DEFINE_TYPE and G_DEFINE_INTERFACE macros over
manual GType registration.
This is just a start... lots more to do.
|