From 5774520f270b91d37bdedc5fbac0da94b81fdac8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Santiago=20Le=C3=B3n?= Date: Tue, 10 Dec 2019 08:32:18 -0600 Subject: [PATCH] Move cursor by Unicode character count, not byte count. (#107) (#108) * Move cursor by Unicode character count, not byte count. (#107) * Fix lint errors * Start new release appdata --- data/io.elementary.calculator.appdata.xml.in | 7 +++++++ src/MainWindow.vala | 6 +++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/data/io.elementary.calculator.appdata.xml.in b/data/io.elementary.calculator.appdata.xml.in index 09b8b7e1..61ac2826 100644 --- a/data/io.elementary.calculator.appdata.xml.in +++ b/data/io.elementary.calculator.appdata.xml.in @@ -11,6 +11,13 @@

A simple calculator for everyday use. It supports basic and some scientific calculations including trigonometry functions, sin, cos, and tan.

+ + +
    +
  • Fix inserting multi-byte characters
  • +
+
+
    diff --git a/src/MainWindow.vala b/src/MainWindow.vala index 40ce9d24..2a4c7100 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -307,7 +307,7 @@ namespace PantheonCalculator { new_position -= selection_length; } entry.insert_at_cursor (label); - new_position += label.length; + new_position += label.char_count (); entry.grab_focus (); entry.set_position (new_position); } @@ -315,13 +315,13 @@ namespace PantheonCalculator { private void function_button_clicked (string label) { int selection_start = -1; int selection_end = -1; - int new_position = entry.get_position (); if (entry.get_selection_bounds (out selection_start, out selection_end)) { + int new_position = selection_start; string selected_text = entry.get_chars (selection_start, selection_end); string function_call = label + "(" + selected_text + ")"; entry.delete_text (selection_start, selection_end); entry.insert_text (function_call, -1, ref selection_start); - new_position += function_call.length; + new_position += function_call.char_count (); entry.grab_focus (); entry.set_position (new_position); } else {