we can make our own buttons and progress bars and various doodads with custom widgets, that's fine, but the text entry stuff... I think we really do need native OS help there. If we lived in a world of computers where all fonts are fixed width bitmap fonts, it wouldn't be so hard, but I just don't think we have enough power to be able to do cursors and text selection correctly with modern variable width fonts with what we currently have. I'd be very happy if edit_line and friends remain chromed up and native, and have para and friends eventually be able to do text selections and good text entry cursors. If we could do something like Shoes::Para#editable = true, and just have it instantly all functional one day, that'd be great, though something for a future release, not the coming one, and certainly not urgent. This also might bring on a desire for some new kind of flow that acts as a horizontal stack, to replicate edit_line functionality when the entered text is longer than the width of the slot.

Text selection is of course, the other thing I mentioned. A method named 'selection' which returns a range would be very nice here, and a method named selection= which accepts a range. This is something I personally have no immediate need for, but would be very good to have in the long term, for a release to come in the future perhaps. Seems something that would be very useful in hackety hack too! :)

The other nice thing about a selection being a range of course, is the ability to do something along the lines of thing.value[thing.selection] = "Ponies are Awesome" to replace the selected text in thing with something else. When nothing is selected, ideally selection would be a range that's zero characters wide (if that's allowed), otherwise nil, or maybe a positive integer representing cursor position.

Reply via email to