floem icon indicating copy to clipboard operation
floem copied to clipboard

Text input improvements

Open 0HyperCube opened this issue 2 years ago • 10 comments

  • [x] Click to edit at particular character
  • [x] Drag to select range
  • [x] Double click to select a word
  • [x] Ctrl + Arrow key to move by word
  • [x] Shift + Arrow keys to select
  • [x] Ctrl + backspace to delete word before the cursor
  • [ ] Numpad del to delete the character after the cursor (Ctrl deletes the word)
  • [x] Ctrl + A to select all
  • [x] Cut, copy and paste shortcuts (need to access system clipboard)
  • [ ] IME support
  • [x] Proper mouse cursor icon on hover and a blinking caret in the text box
  • [ ] Optional multi line support (adding another component would be reasonable)
  • [ ] Alignment and justification
  • [ ] request_focus should put cursor at the end of the field
  • [ ] Programmatically set selection / cursor location

0HyperCube avatar May 05 '23 20:05 0HyperCube

I will look into the word-based actions and clicking at a glyph

presiyan-ivanov avatar May 06 '23 11:05 presiyan-ivanov

I Love Floem Project , It's a great idea for Rust GUI

moon989 avatar Aug 03 '23 03:08 moon989

Updated list based on my testing. I have started work on the remaining ones https://github.com/thewizzy/floem/tree/select_delete_range (also https://discord.com/channels/946858761413328946/1176271038653415444)

  • [x] Click to edit at particular character
  • [x] Drag to select range
  • [ ] Double click to select a word
  • [x] Ctrl + Arrow key to move by word
  • [x] Shift + Arrow keys to select
  • [x] Ctrl + backspace to delete word before the cursor
  • [x] Numpad del to delete the character after the cursor (Ctrl deletes the word)
  • [x] Ctrl + A to select all
  • [x] Cut, copy and paste shortcuts (need to access system clipboard)
  • [x] Del deletes the current selection, putting the cursor at the start of the range
  • [ ] IME support
  • [x] Proper mouse and blinking cursor
  • [ ] ~~Optional multi line support~~

thewizzy avatar Nov 20 '23 22:11 thewizzy

Some notes here about mac compatibility

Numpad del to delete the character after the cursor (Ctrl deletes the word) Two things:

  1. On mac a user would expect Opt + Delete to delete words left from the cursor instead of Ctrl
  2. This seems to be already working now with Ctrl + Delete

Ctrl + Arrow key to move by word Opt + arrow keys would move the cursor by word (right now Ctrl + arrow keys is tied by default to "spaces" on mac which moves the screen). On mac you also get Shift + Opt + Arrow key to select word for word (which right now is implemented but with Ctrl instead of Opt

On mac you also usually get:

  • Cmd + Delete to delete everything left from cursor
  • Cmd + z to go back in history (not sure how large the buffer is here)

dominikwilkowski avatar Dec 03 '23 22:12 dominikwilkowski

This open task is working for me on Windows and Wayland on GNOME:

Double click to select a word

Can you break down what needs to happen for IME support? ~Is this about enabling user input of special characters like łéçô? Is right-to-left support in scope? One thing I noticed during my testing is that a test application crashed when inputting é twice in a row. The issue does not trigger when I paste the é character twice from clipboard, only with direct input.~ (Edit: I opened https://github.com/lapce/floem/issues/235 for the é bug and I hope to submit a fix this weekend.)

pieterdd avatar Dec 29 '23 22:12 pieterdd

Another issue is being able to align/justify text. Text inside of TextInput doesn't respect alignment and justification

jrmoulton avatar Dec 31 '23 07:12 jrmoulton

I'd also like to add that request_focus() on an input field should put the cursor at the end of the input field text. right now it's at position 0 no matter how much is already inside the field.

dominikwilkowski avatar Jan 01 '24 00:01 dominikwilkowski

Just want to know how to interact with linux IM_MODULE using rust?? I only see tutorials about C.

csc-chicken avatar Mar 01 '24 00:03 csc-chicken

I'd also like to add that request_focus() on an input field should put the cursor at the end of the input field text. right now it's at position 0 no matter how much is already inside the field.

I'd rather have the current text selected in this case. This is generally more useful (e.g. makes the common case easy, which is to replace the entire text) and is in line with established UI frameworks/patterns (e.g. GTK, QT, Windows).

dwuertz avatar May 11 '24 10:05 dwuertz

Let's make sure what happens in input fields is what each OS is expecting to happen. It sounds like windows has a different behavior than macos etc. Nothing is worse than editing something and your cursor is jumping around in unexpected ways.

dominikwilkowski avatar May 11 '24 23:05 dominikwilkowski