SUMMARY It should be possible to paste a negative value with `U+2212 − MINUS SIGN` (e.g. `−1`) in addition to `U+002D - HYPHEN-MINUS` (e.g. `-1`). The former character should be converted to the later, since it's the negative sign used by KCalc. The `U+2212 − MINUS SIGN` (https://unicode-table.com/en/2212/) is part of the Unicode Mathematical Operators block, and might be used to represent negative values. STEPS TO REPRODUCE 1. Copy a negative value having `U+2212 − MINUS SIGN` (e.g. `−1`) to the clipboard. 2. Paste the clipboard content to KCalc. OBSERVED RESULT The value is not handled, and `nan` is displayed. EXPECTED RESULT The value is accepted, and `-1` is displayed. Internally, `U+2212 − MINUS SIGN` is converted to `U+002D - HYPHEN-MINUS` (e.g. `−1` becomes `-1`). SOFTWARE/OS VERSIONS KDE Plasma Version: 5.26.1 KDE Frameworks Version: 5.99.0 Qt Version: 5.15.6 ADDITIONAL INFORMATION None.
Git commit c7864e9547b2ef2e9e318a88c78ba51f10fbc5e3 by Carl Schwan, on behalf of Gabriel Barrantes. Committed on 25/01/2024 at 18:27. Pushed by carlschwan into branch 'master'. Add display for user's input Add display to keep the user's entries visible during the whole calculation process, this allows editing the expression at any point to make any correction the user considers opportune. This display allows coping/pasting an expression to be calculated, that can also be edited as required. All currently implemented functions are supported and also was added support for 0x, 0b and 0 as prefixes for hex, binary and octal numbers. Before:{width="225" height="211"} After: {width="258" height="258"}{width=262 height=262} New classes added: * KCalcToken: contains a given valid token such as an operation (+, -, ...), a function (cos, ln, ...), a parenthesis or a number. * KCalcParser: provides an API to convert a given string (for example "1+cos(4.5)") to a Queue of KCalcToken objects. * KCalcInputDisplay: this is a customized QLineEdit widget, it holds the user's input. * KCalcDisplayFrame: holds the input display, result display and some labels. * CalcEngine_p: encapsulates the functionality that used to be available in CalcEngine class, to be only visible for KCalcToken objects. Modified classes: * CalcEngine: added the main algorithm to process the calculation, based on common Operator-precedence parsers. @teams/qa @teams/vdg @teams/usability Related: bug 470371, bug 470591, bug 142728, bug 459999, bug 443276, bug 447347, bug 454835 M +17 -1 CMakeLists.txt A +20 -0 autotests/CMakeLists.txt A +239 -0 autotests/kcalc_parser_core_test.cpp [License: GPL(v2.0+)] M +352 -363 kcalc.cpp M +39 -19 kcalc.h M +600 -300 kcalc.ui M +1 -19 kcalc_const_menu.cpp M +2 -1 kcalc_const_menu.h M +411 -828 kcalc_core.cpp M +24 -107 kcalc_core.h A +713 -0 kcalc_core_p.cpp [License: GPL(v2.0+)] A +92 -0 kcalc_core_p.h [License: GPL(v2.0+)] A +57 -0 kcalc_display_frame.cpp [License: GPL(v2.0+)] A +24 -0 kcalc_display_frame.h [License: GPL(v2.0+)] A +101 -0 kcalc_input_display.cpp [License: GPL(v2.0+)] A +36 -0 kcalc_input_display.h [License: GPL(v2.0+)] A +776 -0 kcalc_parser.cpp [License: GPL(v2.0+)] A +155 -0 kcalc_parser.h [License: GPL(v2.0+)] A +64 -0 kcalc_priority_levels_p.h [License: GPL(v2.0+)] A +412 -0 kcalc_token.cpp [License: GPL(v2.0+)] A +175 -0 kcalc_token.h [License: GPL(v2.0+)] M +3 -72 kcalcdisplay.cpp M +0 -1 kcalcdisplay.h M +1 -42 kcalchistory.cpp M +0 -3 kcalchistory.h M +9 -1 knumber/knumber.cpp M +2 -0 knumber/knumber.h M +4 -4 scienceconstants.xml https://invent.kde.org/utilities/kcalc/-/commit/c7864e9547b2ef2e9e318a88c78ba51f10fbc5e3
It works now. Thank you for your work!