The <TR> is similar to <BR> for the Plain text, thus when reading it
add the new line, if needed.
The WebKit returns correct `\n` in the node's innerText, but using it
as a plain text hides it for the user, thus split the lines and add
them as separate paragraphs.
- Move common actions from toolbar to headerbar
- Add EHeaderBarButton to mimic and replace EMenuToolButton
- Add EShellHeaderBar for "New button" handling
When traversing the HTML structure the to-be-removed nodes in the middle
of the text could prevent correct move between nodes, by traversing into
them and immediately removing the node.
This can be used to have predefined some time between events to move
between rooms and such things, without a need to modify the end time
for every single new event manually.
The option can be found in Edit->Preferences->Calendar and Tasks->General
tab->Miscellaneous section->Use markdown for Description in the component editor.
* Unlinkify mailto: anchors, which causes trouble on wrapping inside quoted text.
* Merge consecutive text nodes before wrapping to simplify the algorithm
While the BLOCKQUOTE node is considered a clock node, it's not a real
block node for paragraph quoting, thus special-case it and requote
its content instead.
This could exhibit in certain occasions when deleting content inside
quoted part using Backspace or Delete keys.
As the split (after Enter key press) splits the BLOCKQUOTE up to
the BODY, it's necessary to backup all of that. Otherwise, when
splitting in the second or higher BLOCKQUOTE level, the undo does
not have correct information and misbehaves.
This allows to save JavaScript plugins, files with .js extension,
into `$PREFIX/share/evolution/webkit/preview-plugins/` or into
`~/.local/share/evolution/preview-plugins/` for the message preview
and into `$PREFIX/share/evolution/webkit/webkit-editor-plugins/` or
into `~/.local/share/evolution/webkit-editor-plugins/` for
the WebKit composer.
The plugin is an object, which contains two members:
* `name` - a string with a name of the plugin
* `setup(doc)` - a setup function
The argument of the `setup` function is a `document`, which can
be either the main document or an iframe document. The function
can be called multiple times for the same document.
The preview plugin registers itself by calling `Evo.RegisterPlugin(plugin_instance)`.
The WebKit editor plugin registers itself by calling `EvoEditor.RegisterPlugin(plugin_instance)`.
The `legacy` directory is not known to the `hicolor` icon theme, thus
the icons could not be found. Store the icons into a directory known
to the `hicolor` instead.
Related to https://gitlab.gnome.org/GNOME/evolution/-/issues/1698