Allow recent clips to be pinned. Pinned clips are put a different place
and are persistent.
The pane is split in two columns, the clipboard history and the pinned
clips.
Pinned clips are stored in a new preference file.
Improved pinning layout
clipboard: Remove history entry after pinning
Work in progress: It's not yet possible to paste from the pane.
The pane can be switched to and from and displays the strings recently
added to the clipboard.
ClipboardHistoryService listens for change to the system clipboard and
keep the history in memory.
This data is not persisted to the storage.
The maximum size limits the amount of user data stored in memory but
also gives a sense to the user that the history is not persisted and can
be forgotten as soon as the app stops.
- Removing unused information (names and descriptions) from the Emoji class
- Creating a Gradle task that generates a more efficient res/raw/emojis.txt file from the most recent Unicode standard
- Saving recently used emoji preferences as emoji values rather than names
- Migrating old user preferences to the new system
Add éèàç directly to the layout, which removes the corresponding dead
keys.
Remove the requirement for ù and ÿ from method.xml, which are extremely
rare and can be typed via the compose key.
Themes do not dim secondary keys the same way due to the "offset"
mechanism. Instead, use a ratio that is the same for every themes.
It's still possible to override this ratio per theme.
The COMPOSE_PENDING modifier indicate whether a compose sequence is in
progress. The new key of kind Compose_pending sets the current state of
the sequence.
The compose sequences are compiled into a state machine by a python
script into a compact encoding.
The state of the pending compose is determined by the index of a state.
The pin entry layout shouldn't be inverted as the letter indications
would be meaningless and the order would be opposite to what the option
specifies.
The enter and action key are swapped as the automatic swapping is also
removed.
This makes translation easier as there's a single file to edit at.
Existing short and full descriptions are conserved.
sync_translations.py takes care of updating the metadata files.
The metadata directories are renamed to match the language codes used in `res/`.
Contributing guidelines are updated accordingly.
This separates the layout definitions from the special layouts
(bottom_row, greekmath) and other unrelated files (method, settings).
This is also a more intuitive location for layouts and make the resource
directory easier to navigate.
Under the hood, layouts are copied back into
build/generated-resources/xml.