1. 20 10月, 2020 2 次提交
  2. 18 10月, 2020 5 次提交
  3. 17 10月, 2020 25 次提交
  4. 16 10月, 2020 8 次提交
    • M
    • S
    • S
    • S
    • K
    • K
      [embedder] Platform View owns lifecycle of external view embedder (#21847) · 62459b3b
      Kaushik Iska 提交于
      Changing it to shared_ptr and migrating the ownership from surface
      to platform view.
      62459b3b
    • C
      Add multi-step IME support to TextInputModel (#21682) · 44ea9677
      Chris Bracken 提交于
      * Add multi-step IME support to TextInputModel
      
      This updates the platform-independent TextInputModel to add support for
      input method (abbreviated IM or IME) composing regions.
      
      In contrast to languages such as English, where keyboard input is
      managed keystroke-by-keystroke, languages such as Japanese require a
      multi-step input process wherein the user begins a composing sequence,
      during which point their keystrokes are captured by a system input
      method and converted into a text sequence. During composing, the user is
      able to edit the composing range and manage the conversion from keyboard
      input to text before eventually committing the text to the underlying
      text input field.
      
      To illustrate this, in Japanese, this sequence might look something like
      the following:
      
      1. User types 'k'. The character 'k' is added to the composing region.
         Typically, the text 'k' will be inserted inline into the underlying
         text field but the composing range will be highlighted in some manner,
         frequently with a highlight or underline.
      2. User types 'a'. The composing range is replaced with the phonetic
         kana character 'か' (ka). The composing range continues to be
         highlighted.
      3. User types 'k'. The character 'k' is appended to the composing
         range such that the highlighted text is now 'かk'
      4. User types 'u'. The trailing 'k' is replaced with the phonetic kana
         character 'く' (ku) such that the composing range now reads 'かく'
         The composing range continues to be highlighted.
      5. The user presses the space bar to convert the kana characters to
         kanji. The composing range is replaced with '書く' (kaku: to write).
      6. The user presses the space bar again to show other conversions. The
         user's configured input method (for example, ibus) pops up a
         completions menu populated with alternatives such as 各 (kaku:
         every), 描く (kaku: to draw), 核 (kaku: pit of a fruit, nucleus), 角
         (kaku: angle), etc.
      7. The user uses the arrow keys to navigate the completions menu and
         select the alternative to input. As they do, the inline composing
         region in the text field is updated. It continues to be highlighted
         or underlined.
      8. The user hits enter to commit the composing region. The text is
         committed to the underlying text field and the visual highlighting is
         removed.
      9. If the user presses another key, a new composing sequence begins.
      
      If a selection is present when composing begins, it is preserved until
      the first keypress of input is received, at which point the selection is
      deleted. If a composing sequence is aborted before the first keypress,
      the selection is preserved. Creating a new selection (with the mouse,
      for example) aborts composing and the composing region is automatically
      committed. A composing range and selection, both with an extent, are
      not permitted to co-exist.
      
      During composing, keyboard navigation via the arrow keys, or home and
      end (or equivalent shortcuts) is restricted to the composing range, as
      are deletions via backspace and the delete key. This patch adds two new
      private convenience methods, `editing_range` and `text_range`. The
      former returns the range for which editing is currently active -- the
      composing range, if composing, otherwise the full range of the text. The
      latter, returns a range from position 0 (inclusive) to `text_.length()`
      exclusive.
      
      * Move SetComposingLength to TextRange::set_*
      
      Adds set_base, set_extent, set_start, set_end methods to TextRange.
      44ea9677
    • K