From 0e783de5bfd9b2e740979f2eed58e60fa85bdfc0 Mon Sep 17 00:00:00 2001 From: Michael Gratton Date: Sat, 17 Oct 2020 13:38:16 +1100 Subject: [PATCH 106/124] ui/conversation-web-view.css: Work around oversized email body height 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. --- ui/conversation-web-view.css | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ui/conversation-web-view.css b/ui/conversation-web-view.css index 3c1929f2..8b0ef421 100644 --- a/ui/conversation-web-view.css +++ b/ui/conversation-web-view.css @@ -23,6 +23,15 @@ html { width: 100vw !important; height: max-content !important; + /* Despite the fact that the width must always be defined by the + viewport, the viewport width will be 0 if the email is loaded before + its WebView is laid out in the widget hierarchy. As a workaround, to + prevent this causing the email being squished down to is minimum + width and hence being stretched right out in height, set a + reasonable minimum width. See + https://gitlab.gnome.org/GNOME/geary/-/issues/283 */ + min-width: 400px !important; + /* Lock down the box sizing just enough so that the width and height constraints above work as expected, and so the element's scrollHeight is accurate. */ -- 2.29.2