This part adds an "Import as Event" button to the meeting request
window when the selected calendar claims it can add only meetings
organized by the calendar owner, which will remove the organizer
and all the attendees before the import.
Related to https://gitlab.gnome.org/GNOME/evolution-ews/-/issues/295
This replaces a deprecated GtkUIManager with a new EUIManager, which
uses its own file format, similar to the .ui used by the gtk+, but
not the same. This brought in more structures like EUIAction and
EUIActionGroup.
To name the few most significant changes:
The overall window architecture had been changed internally too, the
EShellView is a widget now and contains everything except of the header
bar. This allows to create the window content once and not regenerate it
every switch between the views. It also moved the EUIManager from
the EShellWindow to the EShellView.
The EMailShellContent does not implement an EMailReader interface any more.
It allows to have cleaner EMailReader usage in the code. To get to
the EMailReader use:
EMailView *mail_view = NULL;
g_object_get (e_shell_view_get_shell_content (mail_shell_view), "mail-view", &mail_view, NULL);
if (mail_view) {
EMailReader *mail_reader = E_MAIL_READER (mail_view);
...
g_clear_object (&mail_view);
}
The plugins cannot have their UI definitions in the .eplug file,
these are added in the code, directly to the EUIManager. Modules
already did that.
While calculating image size for the preview width, the images which are
being loaded report their width as 0px, which can be preserved due to it
can fix the preview width constraint, even though the image is 0px because
it's not loaded yet. The image does not enlarge to its expected size after
it's loaded due to this, effectively making the image invisible.
This is cleaner than having the code in the C and recompile the project
for any simple change. There is also added a call to
window.webkit.messageHandlers.scheduleIFramesHeightUpdate.postMessage(0);
at the end, which caused trouble when being in the C code (there had been
issued an "Unsupported return type" error).
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.
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.
* 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.