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.