From c1c3b6a7e5b5e2bcf2067260e1c90c95bfee9d72 Mon Sep 17 00:00:00 2001
From: John Preston <johnprestonmail@gmail.com>
Date: Sat, 7 Apr 2018 11:51:17 +0400
Subject: [PATCH] Disable emoji suggestions for :-D/:-P

---
 .../chat_helpers/emoji_suggestions_widget.cpp   | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/Telegram/SourceFiles/chat_helpers/emoji_suggestions_widget.cpp b/Telegram/SourceFiles/chat_helpers/emoji_suggestions_widget.cpp
index 1bbe7cdcd..e7da4d4b5 100644
--- a/Telegram/SourceFiles/chat_helpers/emoji_suggestions_widget.cpp
+++ b/Telegram/SourceFiles/chat_helpers/emoji_suggestions_widget.cpp
@@ -414,6 +414,11 @@ QString SuggestionsController::getEmojiQuery() {
 	const auto isUpperCaseLetter = [](QChar ch) {
 		return (ch >= 'A' && ch <= 'Z');
 	};
+	const auto isLetter = [](QChar ch) {
+		return (ch >= 'a' && ch <= 'z')
+			|| (ch >= 'A' && ch <= 'Z')
+			|| (ch >= '0' && ch <= '9');
+	};
 	const auto isSuggestionChar = [](QChar ch) {
 		return (ch >= 'a' && ch <= 'z')
 			|| (ch >= 'A' && ch <= 'Z')
@@ -437,9 +442,17 @@ QString SuggestionsController::getEmojiQuery() {
 					_queryStartPosition += i + 2;
 					const auto length = position - i;
 					auto result = text.mid(i, length);
-					if (length == 2 && isUpperCaseLetter(result[1])) {
+					const auto upperCaseLetters = std::count_if(
+						result.begin(),
+						result.end(),
+						isUpperCaseLetter);
+					const auto letters = std::count_if(
+						result.begin(),
+						result.end(),
+						isLetter);
+					if (letters == upperCaseLetters && letters == 1) {
 						// No upper case single letter suggestions.
-						// We don't want to suggest emoji on :D and :P
+						// We don't want to suggest emoji on :D and :-P
 						return QString();
 					}
 					return result.toLower();