From aed9957d22a4fa2e64df08a0e5ddfdbf309f130a Mon Sep 17 00:00:00 2001
From: Kevin Smith <git@kismith.co.uk>
Date: Mon, 23 Apr 2012 15:05:29 +0100
Subject: Stop over-enlarging nested span elements in chat windows.

Resolves: #891

diff --git a/Swift/QtUI/ChatSnippet.cpp b/Swift/QtUI/ChatSnippet.cpp
index 7524623..ab31d29 100644
--- a/Swift/QtUI/ChatSnippet.cpp
+++ b/Swift/QtUI/ChatSnippet.cpp
@@ -35,4 +35,8 @@ QString ChatSnippet::timeToEscapedString(const QDateTime& time) {
 	return escape(time.toString(date));
 }
 
+QString ChatSnippet::wrapResizable(const QString& text) {
+	return "<span class='swift_resizable'>" + text + "</span>";
+}
+
 };
diff --git a/Swift/QtUI/ChatSnippet.h b/Swift/QtUI/ChatSnippet.h
index 523a96c..f79f487 100644
--- a/Swift/QtUI/ChatSnippet.h
+++ b/Swift/QtUI/ChatSnippet.h
@@ -41,6 +41,7 @@ namespace Swift {
 			static QString timeToEscapedString(const QDateTime& time);
 
 		protected:
+			QString wrapResizable(const QString& text);
 			void setContinuationFallbackSnippet(boost::shared_ptr<ChatSnippet> continuationFallback) {
 				continuationFallback_ = continuationFallback;
 			}
diff --git a/Swift/QtUI/MessageSnippet.cpp b/Swift/QtUI/MessageSnippet.cpp
index a2e4651..7505905 100644
--- a/Swift/QtUI/MessageSnippet.cpp
+++ b/Swift/QtUI/MessageSnippet.cpp
@@ -32,9 +32,9 @@ MessageSnippet::MessageSnippet(const QString& message, const QString& sender, co
 		}
 	}
 
-	content_.replace("%message%", "<span class='swift_message'>" + escape(message) + "</span><span class='swift_ack'></span><span class='swift_receipt'></span>");
-	content_.replace("%sender%", escape(sender));
-	content_.replace("%time%", "<span class='swift_time'>" + timeToEscapedString(time) + "</span>");
+	content_.replace("%message%", wrapResizable("<span class='swift_message'>" + escape(message) + "</span><span class='swift_ack'></span><span class='swift_receipt'></span>"));
+	content_.replace("%sender%", wrapResizable(escape(sender)));
+	content_.replace("%time%", wrapResizable("<span class='swift_time'>" + timeToEscapedString(time) + "</span>"));
 	content_.replace("%userIconPath%", escape(iconURI));
 	content_ = "<div id='" + id + "'>" + content_ + "</div>";
 }
diff --git a/Swift/QtUI/QtChatView.cpp b/Swift/QtUI/QtChatView.cpp
index b0c4e09..4fa25ee 100644
--- a/Swift/QtUI/QtChatView.cpp
+++ b/Swift/QtUI/QtChatView.cpp
@@ -118,7 +118,7 @@ void QtChatView::addToDOM(boost::shared_ptr<ChatSnippet> snippet) {
 	if (fontSizeSteps_ != 0) {
 		double size = 1.0 + 0.2 * fontSizeSteps_;
 		QString sizeString(QString().setNum(size, 'g', 3) + "em");
-		const QWebElementCollection spans = lastElement_.findAll("span");
+		const QWebElementCollection spans = lastElement_.findAll("span.swift_resizable");
 		foreach (QWebElement span, spans) {
 			span.setStyleProperty("font-size", sizeString);
 		}
@@ -257,7 +257,7 @@ void QtChatView::resizeFont(int fontSizeSteps) {
 	double size = 1.0 + 0.2 * fontSizeSteps_;
 	QString sizeString(QString().setNum(size, 'g', 3) + "em");
 	//qDebug() << "Setting to " << sizeString;
-	const QWebElementCollection spans = document_.findAll("span");
+	const QWebElementCollection spans = document_.findAll("span.swift_resizable");
 	foreach (QWebElement span, spans) {
 		span.setStyleProperty("font-size", sizeString);
 	}
diff --git a/Swift/QtUI/SystemMessageSnippet.cpp b/Swift/QtUI/SystemMessageSnippet.cpp
index 2e0aec4..c78fe36 100644
--- a/Swift/QtUI/SystemMessageSnippet.cpp
+++ b/Swift/QtUI/SystemMessageSnippet.cpp
@@ -16,9 +16,9 @@ SystemMessageSnippet::SystemMessageSnippet(const QString& message, const QDateTi
 	}
 	content_ = theme->getStatus();
 
-	content_.replace("%message%", "<span class='swift_message'>" + escape(message) + "</span>");
-	content_.replace("%shortTime%", escape(time.toString("h:mm")));
-	content_.replace("%time%", "<span class='swift_time'>" + timeToEscapedString(time) + "</span>");
+	content_.replace("%message%", wrapResizable("<span class='swift_message'>" + escape(message) + "</span>"));
+	content_.replace("%shortTime%", wrapResizable(escape(time.toString("h:mm"))));
+	content_.replace("%time%", wrapResizable("<span class='swift_time'>" + timeToEscapedString(time) + "</span>"));
 }
 
 SystemMessageSnippet::~SystemMessageSnippet() {
-- 
cgit v0.10.2-6-g49f6