aboutsummaryrefslogtreecommitdiff
path: root/main/src/ui
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/ui')
-rw-r--r--main/src/ui/global_search.vala13
1 files changed, 7 insertions, 6 deletions
diff --git a/main/src/ui/global_search.vala b/main/src/ui/global_search.vala
index a63aaed1..51e04af2 100644
--- a/main/src/ui/global_search.vala
+++ b/main/src/ui/global_search.vala
@@ -224,14 +224,15 @@ public class GlobalSearch {
grid.margin_bottom = 3;
string text = Util.unbreak_space_around_non_spacing_mark(item.message.body.replace("\n", "").replace("\r", ""));
- if (text.length > 200) {
+ if (text.char_count() > 200) {
int index = text.index_of(search);
- if (index + search.length <= 100) {
- text = text.substring(0, 150) + " … " + text.substring(text.length - 50, 50);
- } else if (index >= text.length - 100) {
- text = text.substring(0, 50) + " … " + text.substring(text.length - 150, 150);
+ int char_index = index < 0 ? 0 : text.char_count(index);
+ if (char_index + search.char_count() <= 100) {
+ text = text.substring(0, text.index_of_nth_char(150)) + " … " + text.substring(text.index_of_nth_char(text.char_count() - 50));
+ } else if (char_index >= text.char_count() - 100) {
+ text = text.substring(0, text.index_of_nth_char(50)) + " … " + text.substring(text.index_of_nth_char(text.char_count() - 150));
} else {
- text = text.substring(0, 25) + " … " + text.substring(index - 50, 50) + text.substring(index, 100) + " … " + text.substring(text.length - 25, 25);
+ text = text.substring(0, text.index_of_nth_char(25)) + " … " + text.substring(text.index_of_nth_char(char_index - 50), text.index_of_nth_char(char_index + 100)) + " … " + text.substring(text.index_of_nth_char(text.char_count() - 25));
}
}
Label label = new Label("") { use_markup=true, xalign=0, selectable=true, wrap=true, wrap_mode=Pango.WrapMode.WORD_CHAR, vexpand=true };