| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
No longer used outside of e-table-specification.c.
Its logic is merged into e_table_specification_load_from_file(), but
that too will be removed momentarily.
|
|
|
|
|
|
| |
Also remove e_tree_construct_from_spec_file().
Use e_tree_new() or e_tree_construct() instead.
|
|
|
|
|
|
| |
Also remove e_table_construct_from_spec_file().
Use e_table_new() or e_table_construct() instead.
|
|
|
|
|
| |
Creating an ETableSpecification is failable, so it's now up to the
caller to do that and handle errors before calling e_tree_new().
|
|
|
|
|
| |
Creating an ETableSpecification is failable, so it's now up to the
caller to do that and handle errors before calling e_table_new().
|
|
|
|
| |
No longer used.
|
|
|
|
| |
No longer used.
|
|
|
|
| |
No longer used.
|
|
|
|
|
| |
The other parts of this UI still look ancient, but this is a good first
step. Plus we can remove a number of now-unused ETable-related classes.
|
|
|
|
|
| |
A new ETable column selection and ordering widget that looks like
it was written in the 21st century. Derives from ETreeViewFrame.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
No longer used.
|
|
|
|
| |
No longer used.
|
|
|
|
| |
Use g_file_get_contents() and e_table_specification_load_from_string().
|
|
|
|
| |
New parser implementation that uses GMarkupParser instead of libxml2.
|
|
|
|
| |
New parser implementation that uses GMarkupParser instead of libxml2.
|
|
|
|
| |
New parser implementation that uses GMarkupParser instead of libxml2.
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
And convert them to GArrays internally.
|
|
|
|
| |
So we don't have to worry about negative values.
|
|
|
|
| |
Use e_table_sort_info_sorting_get_count() to obtain the value.
|
|
|
|
| |
Use e_table_sort_info_grouping_get_count() to obtain the value.
|
|
|
|
| |
Use e_table_sort_info_get_can_group() to obtain the value.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
ETableSortInfo 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_sort_info_ref_specification()
|
| |
|
| |
|
| |
|
|
|
|
| |
Will eventually replace e_table_header_get_column_by_col_idx().
|
|
|
|
| |
Eliminates a few redundant fields.
|
|
|
|
|
| |
Lookups up the column index of an ETableColumnSpecification, returns a
negative value if no match found.
|
|
|
|
|
| |
Compares two ETableColumnSpecification instances for equality, which
just means they both refer to the same model column number.
|
| |
|
|
|
|
| |
Use e_table_specification_ref_columns() to access column specs.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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()
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
ETreeViewFrame embeds a GtkTreeView in a scrolled window and adds an
inline-style toolbar beneath the scrolled window which can be hidden.
The inline-style toolbar supports "add" and "remove" actions, as well
as move actions if the tree view is reorderable and selection actions
if the tree view supports multiple selections. The action set can be
extended through e_tree_view_frame_insert_toolbar_action().
This also adds a small demo program: test-tree-view-frame
|
|
|
|
|
|
|
|
|
| |
Set an urgency hint on dialog's parent, or dialog itself, when it has
no parent, to get user's attention to the dialog. For example, when
there is a changed mail composer window on a different workspace than
evolution's main window and user invokes quit by File->Quit in evolution,
then the window is waiting for a response on the composer, but there
was no hint it's waiting for anything.
|
|
|
|
|
|
|
| |
Skip leading whitespace and hand the rest to g_uri_parse_scheme().
If that can identify a scheme then make the open button sensitive.
(Have to be careful to skip leading whitespace when opening, too.)
|
|
|
|
|
|
|
|
| |
Replace the big, bulky "open URL" button with a clickable icon directly
in the text entry field. This saves precious vertical space, especially
in the contact editor.
Also remove e_url_entry_get_entry() since EUrlEntry now IS a GtkEntry.
|
| |
|
|
|
|
|
|
|
|
| |
The shortcuts Ctrl+C/V/X are used for whole calendar items
copy/paste/cut, not for text when editing event details inline, either
in a day/week view or in a list view. By tracking the is-editing property
of respective cell editor and using it when enabling/disabling clipboard
actions makes the respective text operations work as expected.
|
|
|
|
| |
ETree does not provide one anymore.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Now that ETree no longer has an ESorter, this function is silly.
|
|
|
|
|
|
| |
ESorter itself does nothing useful, so there's no reason to create one.
ESorter should really be an interface.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Calls e_source_selector_update_row() for each ESource being shown
by the ESourceSelector, according to the "extension-name" property.
|
|
|
|
| |
To have a proper GEnumClass registered for ask/always/never choices.
|
|
|
|
|
|
|
|
|
|
| |
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().
|
|
|
|
|
| |
Remove a ClientData entry on "source-removed" or "source-disabled"
signals from the ESourceRegistry.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
| |
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()
|
| |
|
|
|
|
| |
Make reference count handling a bit less awkward.
|
| |
|
| |
|
|
|
|
| |
Yikes, that would be bad...
|
|
|
|
|
|
|
| |
This seems to have started with the gravatar module. SoupRequest is
apparently quite eager to cancel HTTP requests -- so much so that we
need to slow it down within EPhotoCache, so we don't wind up calling
g_cancellable_disconnect() during a GCancellable signal emission.
|
|
|
|
| |
when possible
|
|
|
|
| |
Convenience function cancels the activity's GCancellable.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Reimplement EPhotoCache to delegate the actual photo fetching to
EPhotoSources. When a photo is requested for a given email address,
all available EPhotoSources are dispatched concurrently and a photo
input stream is selected from the result set.
This also utilizes EDataCapture, which is affixed to the returned
GInputStream to capture and cache photo data for an email address.
New functions:
e_photo_cache_add_photo_source()
e_photo_cache_list_photo_sources()
e_photo_cache_remove_photo_source()
e_photo_cache_add_photo()
Renamed functions:
e_photo_cache_remove() --> e_photo_cache_remove_photo()
|
|
|
|
|
|
|
|
|
| |
EPhotoSource is an interface used to extend the functionality of
EPhotoCache. You can add an object implementing EPhotoSource to an
EPhotoCache with e_photo_cache_add_photo_source() and remove it with
e_photo_cache_remove_photo_source(). When EPhotoCache needs a photo
for an email address, it will invoke e_photo_source_get_photo() on all
available EPhotoSource objects simultaneously and select one photo.
|
|
|
|
|
|
|
|
|
|
| |
EDataCapture is a GConverter that captures data until the end of the
input data is seen, then emits a "finished" signal with the captured
data in a GBytes instance.
When used with GConverterInputStream or GConverterOutputStream, an
EDataCapture can discreetly capture stream content for the purpose
of caching.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Stop searching address books on the first error but don't indicate
failure if we've managed to accumulate contacts prior to the error.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Mimicing Colin's commit fb9b02e for E-D-S.
We can't do (cd $(srcdir); ...) and inside reference $(top_srcdir)
because that variable uses a *relative* path. Thus we copy the
approach from gnome-shell of explicitly using addprefix to append
the source directory.
|
|
|
|
| |
Polishing after switching from Evolution's highlight implementation to WebKit's one.
|
|
|
|
| |
highlighting. Fixes Bug#696673
|
| |
|
|
|
|
|
|
|
|
| |
Calling webkit_get_web_plugin_database() somehow ends up calling
g_bus_get_sync(), which in turn makes gtkdoc-scangobj hang forever.
Call it instead as a GOnce callback during instance initialization,
which avoids the hang since gtkdoc-scangobj only peeks at classes.
|
|
|
|
| |
We require WebKitGTK+ >= 1.10 so we can drop a hack to support < 1.9.6.
|
|
|
|
|
| |
This also removes an unused function e_web_view_get_highlights() which
was returning a GSList.
|
| |
|
|
|
|
| |
No longer used.
|
|
|
|
| |
No longer needed. Use GtkUIManager directly.
|
|
|
|
|
|
|
|
| |
Loads a UI definition into a GtkUIManager from Evolution's UI directory.
We actually had this function for a brief period during the 2.29 series,
before Express Mode was a thing. I'm reviving the function to take over
for EUIManager.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Requires WebKitGTK+ 2.0 to work again.
|
| |
|
|
|
|
|
|
|
|
| |
Use g_simple_async_result_complete_in_idle() so the queued results
complete in the correct main loop context. Otherwise we get runtime
warnings:
"g_simple_async_result_complete() called from wrong context!"
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
e_weekday_to_tm_wday()
e_weekday_from_tm_wday()
|
|
|
|
|
|
|
|
|
|
| |
These aren't as efficient as possible, but are as clear as possible.
New functions:
e_weekday_add_days()
e_weekday_subtract_days()
e_weekday_get_days_between()
|
|
|
|
|
|
|
| |
Changed my mind... got more to add.
e_get_next_weekday() -> e_weekday_get_next()
e_get_prev_weekday() -> e_weekday_get_prev()
|
|
|
|
|
|
| |
These just cycle over the GDateWeekday enum.
Trivial functions, but they help make loops a little easier to read.
|
| |
|
|
|
|
|
|
| |
This enum type is intentionally compatible with GDateWeekday.
It exists only because GLib does not provide a GEnumClass for
GDateWeekday. If that ever changes, this enum can go away.
|
| |
|
|
|
|
| |
So the generated GEnumClass types can be used outside of libeutil.
|
| |
|
|
|
|
| |
Basically any place where we use both EClient and ESourceComboBox.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
That's the worst idea for many reasons, couple examples:
- password prompts after evolution's run for disabled (in selector) sources
- too much unnecessary network I/O (most remote backends runs sync on open)
- doesn't do what user told it to do (Unselected means unselected. Dot.)
- unable to debug anything in factories when it misbehaves this way
Next time ask peers, users and usability experts for their opinion, before doing such decision.
|
| |
|
|
|
|
|
|
| |
Caches contact photos by email address.
Replaces the disastrous implementation in e-mail-utils.c.
|
| |
|
|
|
|
| |
Use a standard format for naming an ESource in user-visible messages.
|
|
|
|
|
|
| |
Asyncrhonously fetch all relevant EClient instances during instance
initialization to try and get them cached ahead of time, and so that
all status icons are present when the tree view is shown.
|
|
|
|
|
| |
The quick timeout is used only when new items are found,
do not use it when user types text, because it flickers.
|
|
|
|
|
|
| |
The results were postponed to show as long as there were new notifications
about added contacts, which could take quite long for many matched items.
This shows the results with smaller timeout and without postponing.
|
|
|
|
|
|
|
| |
Append a tree view column to display a symbolic icon hinting at backend
status. Currently this only displays icons for online/offline and when
the backend dies. I'd also like to add a spinner icon to indicate when
we're processing a query and for other long-running activities.
|
| |
|
| |
|
|
|
|
| |
Gonna need to call this from the EClientSelector subclass.
|
|
|
|
|
|
|
| |
Returns TRUE if an EClient instance for the given source and the value
of ESourceSelector's "extension-name" property was recently discarded
after having emitted a "backend-died" signal, and a replacement EClient
instance has not yet been created.
|
|
|
|
|
|
| |
Returns TRUE if an EClient instance for the given source and extension
name was recently discarded after having emitted a "backend-died" signal,
and a replacement EClient instance has not yet been created.
|
|
|
|
|
| |
Jeez, I should know this by now. Schedule an idle callback on the
internal GMainContext to emit the signal like we do for other signals.
|
|
|
|
| |
Rebroadcasts a GObject::notify signal emitted by a cached EClient.
|
| |
|
|
|
|
|
|
|
| |
WebKit deny in loading local URIs (file://...) when an HTML body is
constructed from a string, not from a local file, thus fix the URIs
into "evo-file://", which are passed into our request handlers,
which can load the local files.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
EClientSelector extends the functionality of ESourceSelector by
utilizing an EClientCache to display status information about the
backends associated with the displayed data sources.
(No backend status is displayed just yet, but that's the plan.)
|
|
|
|
|
|
|
|
| |
Changed my mind. There's some scenarios where a function depends on an
ESourceRegistry but could also utilize an EClientCache, and it would be
nice to just pass the EClientCache and extract the ESourceRegistry from
it, so we need to make sure the ESourceRegistry will be there when it's
needed and not quietly disappear.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
New class to help reduce code duplication and centralize some EClient
handling policies.
Benefits:
- EClient instances can be shared across the entire application.
- Centralized rebroadcasting of "backend-died" and "backend-error"
signals emitted from cached EClient instances.
- Automatic cache invalidation when backends crash. The EClient
is discarded, and a new instance is created on the next request.
|
|
|
|
| |
We require GTK+ 3.4, so no need to check for versions older than that.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Instead of e_client_utils_open_new() and e_book_client_new().
|
|
|
|
| |
e_client_is_opened() always returns TRUE, so skip it.
|
| |
|
|
|
|
|
| |
Clean up resulting deprecation warnings, which were all related to
GtkOrientable consolidation (e.g. gtk_hbox_new() -> gtk_box_new()).
|
|
|
|
|
|
|
| |
g_hash_table_add(table, key) uses less memory than
g_hash_table_insert(table, key, GINT_TO_POINTER (1)).
Also use g_hash_table_contains() when testing for membership.
|
|
|
|
| |
characters
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|