[Gambas-user] difference between QT TextEdit.Select and TextArea.Select

Benoit Minisini gambas at ...1...
Fri Jan 18 21:47:23 CET 2008


On jeudi 17 janvier 2008, Jaap Cramer wrote:
> HI
>
> I discovered a inconvenient difference between the behavior of Method
> SELECT in TextEdit and TextArea. By a TextArea properties like POS can be
> used in the method SELECT. If the text contains Unicode the value of the
> cursor-position can be recalculated to the position in the string. This is
> not the case in TextEdit. Because TextEdit contains HTML-tags, the cursor
> position cannot be used, or recalculated to a position in the string. Is
> this an error in TextEdit.Select; I want to select text, not positions...
>
> I added a example snippet to illustrate. The following code is called on
> tBible_MouseUp(). If one changed the position of the cursor, the purpose is
> to select the word on a single click. The following snippet works fine if
> tBible is a TextArea. I want to add some markups, so I decided to change
> tBible into a TextEdit.
>
>   DIM iPos, iStart, iEnd AS Integer
>   DIM sB AS String                 ' a temp container for the contents of
> tBible.text
>
>   sB = tBible.Text & " "            'end of text and space, so each word is
> surrounded by spaces sB = Replace(sB, "\n", " ")    'consider a return as a
> space
>   sB = Replace(sB, "־", " ")      'consider 'maqqef' (the high
> division-marker) as space
>
>   IF tBible.Selection.Length = 0 THEN           'if there is already a
> selection, then don't change it! iPos = tBible.Pos                         
>           'Position of the CURSOR, not string, so I don't need to
> recalculate it from a unicode string iStart = String.RInStr(sB, " ", iPos) 
>         'working with unicode, so recalculate values iEnd =
> String.InStr(sB, " ", iPos) - 1
>     tBible.Select(iStart, iEnd - iStart)
>   ENDIF
>
>
> grt
> Jaap
>
> Ubuntu 7.10, Gambas 2.0.0

There is really a problem with the TextEdit interface, and it comes from the 
way the QT widget it is based on works.

Maybe I should try to split the Text property, and have:
* Text for returning the text.
* RichText for returning the text with the markups.
* Selection.Text for returning the selected text.
* Selection.RichText for returning the selected text with the markups.

But I don't know if it is possible. Stay tune...

-- 
Benoit Minisini




More information about the User mailing list