[REBOL] Re: focus on a text field
From: carl::cybercraft::co::nz at: 24-Dec-2003 22:20
On 13-Jun-03, Greg Schwarz wrote:
> I have two text fields, one is for keyboard input, the other is used
> for dynamic data.
> When there is some dynamic data is inputed, the focus goes from one
> text field to the othere and back again.
> The problem is when it goes back to the keyboard input field, all
> the text is hightlighted, and when you key the next char all the
> text is replaced. I would like to know how to get the cursor back to
> the end of the text your keying in?
> view layout [
> dynamic: area 350x200
> keyboard: field 350x32
> ]
> focus keyboard
Hi Greg,
If you do a...
probe first system/view
at the console, you'll notice two words: highlight-start and
highlight-end. They're words indexed to the start and end of
highlighted text. So, one way to un-highlight text is to have...
highlight-start: highlight-end
in your code. To have it happen when a face is focused, you could
modify the focus function like I have below. If you look at the
source of focus, you'll see that the last thing it does is a...
show face
By inserting a word (focus-check) before that I've made it call a
function before it shows the face, the function un-highlighting the
text if the focus is on the keyboard face.
So, here's the code...
rebol []
focus-check: does [
if same? keyboard system/view/focal-face [
system/view/highlight-start: system/view/highlight-end
]
]
; Add 'focus-check word to 'focus function
;------------------------------------------
if 'focus-check <> first skip tail second :focus -3 [
insert skip tail second :focus -2 [focus-check]
]
; Test
;------
view layout [
dynamic: area 350x200
keyboard: field 350x32 "Test"
field 350x32 "Normal field"
do [focus keyboard]
]
Hope that helps.
--
Carl Read