Émilie Feral
2ecc566c2c
[escher] TextField: when handling event with text, replace system
...
parenthesis by user parenthesis to switch from layout structure to
linear text.
When copying a layout and pasting it to a textfield, we add required
parentheses:
2+1
----- serializes to ---> [2+1]/3 and is turned to (2+1)/3 before being
3
handled by a textfield.
2019-08-08 17:22:02 +02:00
Émilie Feral
2861a35840
Clean some warnings
2019-08-08 16:29:38 +02:00
Émilie Feral
7a4ee746b2
[escher] TextField: call reinitDraftBuffer after edition is complete to
...
avoid erasing text that is required later.
Fix bug: OK handling on function list in linear mode did not copy the
function expression into the textfield before editing
2019-07-30 11:47:42 +02:00
Ruben Dashyan
bc8b5af2e6
[escher/modal_view_controller] didBecomeFirstResponder selects modal view if displayed
2019-07-19 15:06:25 +02:00
Ruben Dashyan
44809f4b3f
Substitute Escher app() by Container::activeApp()
2019-07-19 15:06:25 +02:00
Ruben Dashyan
b4cac92af2
[escher/modal_view_controller] Clean didBecomeFirstResponder
2019-07-19 15:06:25 +02:00
Ruben Dashyan
a0e6151b26
[*container] Remove static Container::sharedContainer
2019-07-19 15:06:25 +02:00
Ruben Dashyan
80981ce865
[escher/container] Make activeApp static
2019-07-19 15:06:25 +02:00
Ruben Dashyan
17795eed87
[escher] Include container.h instead of app.h
...
app.h did actually include container.h
2019-07-19 15:06:25 +02:00
Ruben Dashyan
0531187cda
[escher] Cleaner app header inclusion
2019-07-19 15:06:25 +02:00
Ruben Dashyan
2888eddd06
[escher/button_row_controller] Access the app directly
2019-07-19 15:06:25 +02:00
Ruben Dashyan
e4ec398ecd
[escher] InputEventHandler gets the app directly
2019-07-19 15:06:25 +02:00
Romain Goyet
581ec55832
[escher] Inline the App::snapshot() function
2019-07-19 15:06:25 +02:00
Romain Goyet
45875dd642
[escher] Make app() a global function
...
This way it can easily be reached by anyone, including non-responders.
And it can easily be overwritten in namespaced apps.
2019-07-19 15:06:25 +02:00
Ruben Dashyan
652cbae9ac
[escher/responder] Access the app directly from the shared container
2019-07-19 15:06:25 +02:00
Ruben Dashyan
ba2a98f5e5
[escher/app] Remove poor man's RTTI
2019-07-19 15:06:25 +02:00
Ruben Dashyan
443f974cbb
[escher/container] Inline activeApp() accessor
2019-07-19 15:06:25 +02:00
Ruben Dashyan
1f06819974
[apps] Remove Container * parameter from all App constructors
2019-07-19 15:06:25 +02:00
Ruben Dashyan
5f8a745957
[escher/app] Remove Container
2019-07-19 15:06:25 +02:00
Ruben Dashyan
268ad3f3ba
Access the shared container from escher and apps
2019-07-19 15:06:25 +02:00
Léa Saviot
e72c7d8564
[escher/layout_field] Fix cursor position when inserting layout
...
Scenario : In calculation, write 10/7, enter
Go up, press OK on 10/7 -> the cursor is not on the right of the layout
2019-06-26 10:08:03 +02:00
Léa Saviot
cc8403e020
[escher/text_input] Factorize and clean handleEvent Right and Left
2019-06-21 14:30:14 -04:00
Léa Saviot
5a8596acd7
[ion/utf8_helper] Put default parameter in RemovePreviousGlyph
2019-06-21 14:30:14 -04:00
Léa Saviot
b696668422
[escher/text_field] Fix cursor navigation on combining code points
2019-06-21 14:30:14 -04:00
Léa Saviot
5f549b514e
[escher] Fix backspace on utf8 combining code point
2019-06-21 14:30:14 -04:00
Léa Saviot
67eea0802f
[escher/text_area] Fix cursor navigation on combining code points
2019-06-21 14:30:14 -04:00
Léa Saviot
0478fc816e
[escher/layout_field] Fix cursor position when inserting "cos()"
2019-06-17 08:25:29 -04:00
Léa Saviot
e17658181d
[escher/layout_field] Compute the pointed layout after the insertion
...
Otherwise it breaks the scenario:
Initial layout: '0
"abs(x)" pressed in the toolbox => |•| is added, • being an empty layout
Final layout: |0'|
2019-06-14 08:20:54 -04:00
Léa Saviot
2061c5d692
[escher/text_area] Fix text indentation handling
...
We used a small buffer to preprocess a text to insert in text area (add
indentation, remove empty code points, compute the next cursor location),
but the size of this buffer was sometimes too small and caused a crash.
Now we do all the text odification in place in the text area buffer.
2019-06-13 11:40:13 -04:00
Léa Saviot
3d991e56da
[escher/poincare] Cleaner way to find the cursored layout in LayoutField
...
Everything is now in the virtual method
LayoutNode::layoutToPointWhenInserting
This removes a dirty inclusion of apps/i18n.h in escher
2019-05-27 17:24:11 +02:00
Émilie Feral
4dd7d1d792
[escher] ExpressionView: discard optimization that triggers a bug
2019-05-13 17:54:45 +02:00
Émilie Feral
1e01c5dadb
[escher] TextArea: fix cursor position when handling text with UCodePointEmpty
2019-05-07 17:13:13 +02:00
Léa Saviot
a7d8160ee0
[escher/text_field] Add missing cursor location update
...
Fixes the scenario: go to statistics, press the root key, then the XNT
key -> crash
2019-05-03 15:54:22 +02:00
Léa Saviot
5316372d72
[escher/text_field] When fetching XNT code point, text is draftText
2019-05-03 15:54:22 +02:00
Émilie Feral
2217eebaec
[escher] SelectableTableView: when reloading data, we temporary deselect
...
the table. We warn the SelectableTableViewDelegate that the selection
change is 'within a temporary selection change' when notifying it of the
change.
2019-05-03 15:54:21 +02:00
Émilie Feral
5e280c7538
[escher] ExpressionView: optimize setLayouts to avoid marking the whole
...
view as dirty when the layout did not really changed
2019-05-03 15:54:21 +02:00
Émilie Feral
9665f11d06
[poincare] Layout: discard methods isVerticalOffset(), isHorizontal(),
...
isRightParenthesisLayout(), isLeftBracket(), isRightBracket(),
isCodePoint(),
isLeftParenthesisLayout() and use type() instead
2019-05-03 15:54:21 +02:00
Émilie Feral
240ed439e0
[escher] ScrollableView: discard duplicate data source of scrolling
...
offset
2019-05-03 15:54:21 +02:00
Émilie Feral
a3f669fb08
[escher] TextView: avoid useless markRectAsDirty when updating
...
backgroundColor and textColor
2019-05-03 15:54:20 +02:00
Émilie Feral
50ad6b6761
[escher] SelectableTableViewDataSource: avoid calling m_delegate->tableViewDidChangeSelection when only reloading the data.
2019-05-03 15:54:20 +02:00
Ruben Dashyan
a3fe99da21
[escher] Simplify TableView::scrollToCell
2019-05-03 15:54:20 +02:00
Ruben Dashyan
7b426adf5b
[escher] Fix ExpressionField::inputViewHeight
...
Since commit
[escher] Implement ScrollView::minimalSizeForOptimalDisplay including margins
minimalSizeForOptimalDisplay includes the ScrollView margins.
2019-05-03 15:53:21 +02:00
Émilie Feral
578c65d5dd
[shared] Clean class names containing storage
2019-05-03 15:53:20 +02:00
Émilie Feral
067577ea02
[escher] Avoid unnecessary relayouts
2019-05-03 15:53:20 +02:00
Léa Saviot
b3d0de564a
[coding style] Small inlining
2019-05-03 15:53:20 +02:00
Léa Saviot
3f0bdc6630
[escher] Fix TextArea::handleEventWithText
...
It did not handle properly a new line (placed the cursor wrongly).
2019-05-03 15:53:20 +02:00
Léa Saviot
d4feebc2c6
[escher] Fix null termination for drawString in ScrollViewIndicator
2019-05-03 15:53:20 +02:00
Léa Saviot
07b22f44d2
[escher/text_field] Fix rect dirtying in setText
...
The content of the buffers might no be initialized before the setText,
so we cannot use reloadRectFromPosition, as it requires to perform
stringSize, which needs valid content.
2019-05-03 15:53:20 +02:00
Léa Saviot
cbb1055218
[escher] Fix TextField::ContentView::setEditing
2019-05-03 15:53:20 +02:00
Léa Saviot
b2a97cfc7a
[escher] Fix buffer choice in TextField::glyphFrameAtPosition
2019-05-03 15:53:20 +02:00