Using `whitespace: pre-wrap` to format plain text email sometimes
causes additional width to be allocated by the plain text blocks that
then does not get used due to the constraints on the HTML element.
The allocated space remains however and hence an un-needed horizontal
scrollbar appears.
Using `break-spaces` instead seems to help since it allows breaks after
a space character, leading to the additional space not otherwise being
allocated.
Sometimes when loading an email body, the viewport for the web view
will be set to 0 (when the web view is hidden or not yet laid out in
the widget hierarchy?). When this happens, since the width of the body
is specified as 100vw, the content width is reduced to the absolute
minimum and hence the content height is stretched right out. Then, when
the web view is displayed, the viewport width increases but the extra
whitespace is never reclaimed (scrollHeight never goes down), so the
height of the web view remains way too large, causing large amounts of
whitespace at the end of the email message (i.e. #283).
To work around this, set a min width for the HTML element so the initial
height of the email body isn't too badly wrong.
Use some more obvious CSS to ensure we can get an accurate idea of the
content height for sizing the web view and that the body fits the
web view's width.
This seems to be a bit more accurate than the previous calculation.
Force the doc element's border to zero as well to make using
scrollHeight more reliable.
* ui/client-web-view.js (PageState::getPreferredHeight): Compute and use
top and bottom when determining the height value.
* ui/conversation-web-view.css: Remove onerous style defaults now we
can deal with HTML elements with margins.
* ui/conversation-web-view.js (ConversationPageState): Add
::updatePreferredHeight method to waitch for and update the web view's
preferred height when it changes.
(ConversationPageState::createControllableQuotes): Create quote
controllers using the DOM so we can easily attach click handlers to
it. Attach handlers to toggle the hide class and updated the preferred
height.
* ui/client-web-view.js (PageState): Add ::getPreferredHeight method, use
that to determine the preferred height of the page.
* ui/conversation-web-view.css: Import GTK+4 Adwaita button CSS to work
around WebKitGTK+ Bug 166648. Tweak quote style a bit.
* ui/conversation-web-view.js: New script, port old HTML cleaning code in
vala to Javascript as new subclass of PageState. Instantiate that on
page load.
* src/client/conversation-viewer/conversation-web-view.vala
(ConversationWebView): Load and add new JS script for conversations.
* src/client/web-process/util-conversation.vala (Util.Conversation):
Remove migrated and obsolete code.
* ui/client-web-view.js (PageState): Allow on-load behaviour to be
overridden in subclasses.
* ui/CMakeLists.txt: Include new JS script.
* ui/conversation-web-view.css: Chase CSS class name changes.
* src/client/conversation-viewer/conversation-message.vala
(ConversationMessage): Remove ReplacedImage and related code.
(ConversationMessage::inline_image_replacer): Don't bother loading,
scaling, rotating and serialising the images, just add them as CID
resources.
* src/client/components/client-web-view.vala (ClientWebView): Modify the
cid_resources map contain memory buffers, not files, and update call
sites.
* ui/conversation-web-view.css: Prefix the names of base Geary-internal
elements with "geary_" to reduce the odds of them colliding with class
names in HTML messages. Chase the name changes in classes that generate
them.
* src/client/conversation-viewer/conversation-message.vala
(ConversationMessage): Use constants for class names and
WebKit.DOMElement::class_list to add/remove them.
* src/client/conversation-viewer/conversation-message.vala:
(ConversationMessage::create_quote_container): Fix unwanted whitespace
at the top of quote containers by removing newlines from the inner
HTML used to construct them.
(ConversationMessage::unset_controllable_quotes): Replace using
absolute pxiel value for determining whether a quote should be unhidden
with a percentage of the parent container.
* ui/conversation-web-view.css: Polish and simplify quote container CSS.
* src/client/conversation-viewer/conversation-message.vala
(ConversationMessage::clean_html_markup): Ensure all displayed message
bodies have at least a HTML element, so that the style in
conversation-web-view.css has something to work on. Load application
style when sanitising the HTML rather than when the web view has
loaded.
* src/client/conversation-viewer/conversation-web-view.vala
(ConversationWebView): Just set user style using WebKit.WebSettings,
don't try to set application CSS, and remove all associated code.
* ui/conversation-web-view.css: Only trigger CSS 2.1 § 10.6.7 on the HTML
element, so BODY can be styled as normal by email CSS.
* src/client/application/geary-application.vala
(GearyApplication::read_theme_file): Renamed to ::read_resource, do the
lookup on a GResource instead of from the file system.
(GearyApplication::get_ui_file): Remove unused method.
* src/client/conversation-viewer/conversation-web-view.vala
(ConversationWebView): Chase CSS file rename and load method.
* theming/CMakeLists.txt: Removed, no longer needed.
* theming/message-viewer.css: Moved to ui/conversation-web-view.css.
* ui/CMakeLists.txt: Add conversation-web-view.css resource.
* CMakeLists.txt: Remove theming include.
* src/client/application/geary-application.vala :
2016-10-04 10:58:17 +11:00
Renamed from theming/message-viewer.css (Browse further)