File evolution-height-miscalculation.patch of Package evolution

From a037d582a27ecb3bb8f51fbe0f597d9183e75701 Mon Sep 17 00:00:00 2001
From: Milan Crha <mcrha@redhat.com>
Date: Tue, 3 Jan 2023 18:22:20 +0100
Subject: [PATCH] I#2204 - itip-formatter: iframe height miscalculated without
 frame flattening

Closes https://gitlab.gnome.org/GNOME/evolution/-/issues/2204
---
 data/webkit/e-web-view.js | 23 +++++++++++++++++++----
 1 file changed, 19 insertions(+), 4 deletions(-)

diff --git a/data/webkit/e-web-view.js b/data/webkit/e-web-view.js
index 309cada00f..ab9ca5a6d5 100644
--- a/data/webkit/e-web-view.js
+++ b/data/webkit/e-web-view.js
@@ -789,12 +789,12 @@ Evo.mailDisplayUpdateIFramesHeightRecursive = function(doc)
 		Evo.mailDisplayUpdateIFramesHeightRecursive(iframes[ii].contentDocument);
 	}
 
-	if (!doc.body || !doc.defaultView || !doc.defaultView.frameElement)
+	if (!doc.scrollingElement || !doc.defaultView || !doc.defaultView.frameElement)
 		return;
 
-	if (doc.defaultView.frameElement.height == doc.body.scrollHeight)
+	if (doc.defaultView.frameElement.height == doc.scrollingElement.scrollHeight)
 		doc.defaultView.frameElement.height = 10;
-	doc.defaultView.frameElement.height = doc.body.scrollHeight + 2 + (doc.body.scrollWidth > doc.body.clientWidth ? 20 : 0);
+	doc.defaultView.frameElement.height = doc.scrollingElement.scrollHeight + 2 + (doc.scrollingElement.scrollWidth > doc.scrollingElement.clientWidth ? 20 : 0);
 }
 
 Evo.MailDisplayUpdateIFramesHeight = function()
@@ -1421,8 +1421,10 @@ EvoItip.SetElementInnerHTML = function(iframe_id, element_id, html_content)
 {
 	var elem = Evo.FindElement(iframe_id, element_id);
 
-	if (elem)
+	if (elem) {
 		elem.innerHTML = html_content;
+		window.webkit.messageHandlers.scheduleIFramesHeightUpdate.postMessage(0);
+	}
 }
 
 EvoItip.SetShowCheckbox = function(iframe_id, element_id, show, update_second)
@@ -1448,6 +1450,8 @@ EvoItip.SetShowCheckbox = function(iframe_id, element_id, show, update_second)
 		if (elem) {
 			elem.hidden = !show;
 		}
+
+		window.webkit.messageHandlers.scheduleIFramesHeightUpdate.postMessage(0);
 	}
 }
 
@@ -1461,6 +1465,8 @@ EvoItip.SetAreaText = function(iframe_id, element_id, text)
 		if (row.lastElementChild) {
 			row.lastElementChild.innerHTML = text;
 		}
+
+		window.webkit.messageHandlers.scheduleIFramesHeightUpdate.postMessage(0);
 	}
 }
 
@@ -1478,6 +1484,8 @@ EvoItip.UpdateTimes = function(iframe_id, element_id, header, label)
 		if (elem.lastElementChild) {
 			elem.lastElementChild.innerHTML = label;
 		}
+
+		window.webkit.messageHandlers.scheduleIFramesHeightUpdate.postMessage(0);
 	}
 }
 
@@ -1505,6 +1513,8 @@ EvoItip.AppendInfoRow = function(iframe_id, table_id, row_id, icon_name, message
 
 	cell = row.insertCell(-1);
 	cell.innerHTML = message;
+
+	window.webkit.messageHandlers.scheduleIFramesHeightUpdate.postMessage(0);
 }
 
 EvoItip.RemoveInfoRow = function(iframe_id, row_id)
@@ -1513,6 +1523,7 @@ EvoItip.RemoveInfoRow = function(iframe_id, row_id)
 
 	if (row && row.parentNode) {
 		row.parentNode.removeChild(row);
+		window.webkit.messageHandlers.scheduleIFramesHeightUpdate.postMessage(0);
 	}
 }
 
@@ -1524,6 +1535,8 @@ EvoItip.RemoveChildNodes = function(iframe_id, element_id)
 		while (elem.lastChild) {
 			elem.removeChild(elem.lastChild);
 		}
+
+		window.webkit.messageHandlers.scheduleIFramesHeightUpdate.postMessage(0);
 	}
 }
 
@@ -1576,6 +1589,8 @@ EvoItip.HideButtons = function(iframe_id, element_id)
 			if (button)
 				button.hidden = true;
 		}
+
+		window.webkit.messageHandlers.scheduleIFramesHeightUpdate.postMessage(0);
 	}
 }
 
-- 
2.41.0

openSUSE Build Service is sponsored by