Since this change the client is responsible to provide credentials
to use to authenticate backends (through ESource-s, to be more precise),
unless the credentials are already saved.
A simple Evolution run and move between all views means creation of
more than 100 GSettings objects, with only a bit more than 10 schemas.
Reusing the objects should have a positive impact on a performance too.
Gtk+ 3.10 has the GtkPaned::handle-size set to 5 pixels, while Gtk+ 3.14
only to 1 pixel, which makes the right side of the EShellSwitcher buttons
look as with no padding on the right.
The Calendar, Memos and Tasks views use to do D-Bus calls to
the backends on the main (UI) thread, which could result in UI
freezes, until the operation was done on the backend (and server)
side. This commit fixes that by invoking the operations in
a dedicated thread. It has few additional advantages too:
- operations can be cancelled
- proper error reporting to a user
- less code duplication between the views for common operations
There had been fixed some performance issues when selecting/unselecting
sources in the source selector as well.
* use e_util_win32_initialize() in main() to avoid code duplication
* e-spinner - correct image path build under win32
* export WIN32_SERVICELIBEXECDIR when building eds, which relies on it now
* update D-Bus patch and session-local.conf creation, thus D-Bus
can actually autostart services
This makes evolution depend on theme-defined named colors, namely:
theme_bg_color
theme_base_color
theme_fg_color
theme_text_color
theme_selected_bg_color
theme_selected_fg_color
theme_unfocused_selected_bg_color
theme_unfocused_selected_fg_color
If it's not defined, then a fallback color is used, in the worse case
one of the fallbacks defined in evolution itself.
Folders can leave notifications in the main loop which would be delivered
on idle, but these can be left in the main loop longer than the temporary
CamelSession object is alive, which leads to a crash, because of
the CamelStore's descendant being freed too early.
This is related to bug 698275, which did not cover all cases.
The problem here is that the dconf can in certain situation claim
that everything changed (path "/" changed), which GSettingsBinding
propagates to a GObject property unconditionally and GObject's
property setter (g_object_set_property()) also notifies about
the property change unconditionally, despite the real descendant
property setter properly checks for the value change. After all
these false notifications a callback on "notify" signal is called
and possibly an expensive operation is run.
Checking whether the value really changed helps in performance, for
which were added new e-util functions:
e_signal_connect_notify()
e_signal_connect_notify_after()
e_signal_connect_notify_swapped()
e_signal_connect_notify_object()
which have the same prototype as their GLib counterparts, but they allow
only "notify::..." signals and they test whether the value really changed
before they call the registered callback.
This ports the following two function calls throughout Evolution:
• e_categories_get_list() to e_categories_dup_list()
• e_categories_get_icon_file_for() to e_categories_dup_icon_file_for()
It necessarily changes some internal e-util API:
• e_util_get_searchable_categories() to
e_util_dup_searchable_categories()
This bumps the EDS requirement to 3.13.1.
https://bugzilla.gnome.org/show_bug.cgi?id=727221
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.)
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.
Instead of wrapping the searchbar for small screens (which looks ugly
and breaks the initial window size on large screens), hide the filter
combo box in views that would otherwise be too wide for the screen.
There's no loss of functionality when hiding the filter combo box.
It's just a set of convenient pre-defined searches, all of which can
be reproduced through the Advanced Search interface.
New functions:
e_shell_searchbar_get_filter_visible()
e_shell_searchbar_set_filter_visible()
Direct the focus away from the filter combo box so the next keyboard
event doesn't change the selected filter. The user is probably trying
to navigate search results.
This adds a "close-alert" signal to EShellWindow, which is bound to
GDK_KEY_Escape. The default handler closes view-specific alerts first,
then global alerts.
Nudging EPlugin closer to full removal.
Nothing in Evolution uses this anymore and 3rd-party plugins should be
using EShell's "event::ready-to-start" signal or else GApplication's
"startup" signal.
Evolution is still occasionally getting stuck on shutdown, and although
the evolution-shell log domain shows debug messages for activities that
are preventing shutdown, they frequently look like this:
(evolution:13534): evolution-shell-DEBUG: 5 active 'mail' activities:
(evolution:13534): evolution-shell-DEBUG: * (no description)
(evolution:13534): evolution-shell-DEBUG: * (no description)
(evolution:13534): evolution-shell-DEBUG: * (no description)
(evolution:13534): evolution-shell-DEBUG: * (no description)
(evolution:13534): evolution-shell-DEBUG: * (no description)
I think the lack of descriptions is from CamelOperations popping all
their pushed messages, which is correct behavior but doesn't help us
debug the problem.
e_activity_get_last_known_text() returns the most recent _non-empty_
text value set on the EActivity. So our debug message can fall back
to that if the EActivity has no description at shutdown:
(evolution:13534): evolution-shell-DEBUG: * (was "blah, blah, blah")