[SailfishDevel] RegExpValidator - different behaviour between Emulator and Jolla device

Andrey Kozhevnikov coderusinbox at gmail.com
Wed Jan 21 14:09:51 UTC 2015


This is caused because if predictive text input. Text is not commited to 
component until word separator entered, word is choosed or focus is lost.

21.01.2015 19:02, Thomas Amler пишет:
> Hi,
>
> I have a problem concerning the RegExpValidator of a TextField. This 
> is the code:
>
>             TextField {
>                 id: cameraManufacturer
>                 width: parent.width
>                 label: qsTr("Manufacturer")
>                 placeholderText: label
>                 text: editCameraManufacturer
>                 validator: RegExpValidator { regExp: /^.{3,60}$/ }
>                 EnterKey.enabled: errorHighlight === false ? true : false
>                 EnterKey.iconSource: "image://theme/icon-m-enter-next"
>                 EnterKey.onClicked: cameraModel.focus = true
>
>                 onErrorHighlightChanged: checkContent()
>
>                 onTextChanged: console.log(errorHighlight + "#" + 
> acceptableInput)
>             }
>
> The validator works as expected on the Emulator. It reacts on every 
> text change in the field and changes the errorHighlight Status to 
> false if the regExp matches and vice versa. Also the field gets marked 
> red if errorHighlight is true and so on.
>
> But if I'm using the same code on my Jolla the Validator only changes 
> the errorHighlight value if I change the focus to another TextField. 
> If I change back to the first TextField and change some characters, I 
> suddenly get an errorHighlight = true although the RegExp should match 
> the text.
>
> As you can see I also integrated some console debugging. This makes 
> the problem even more strange. On the Emulator everything works fine. 
> errorHighlight is "true" until the third character is entered and is 
> logged as "false" when I enter the fourth character. Corresponding 
> behaviour can be seen with the acceptableInput property. It is false 
> until I enter the third character and with the third logging event it 
> is logged as true. So both are logged as true with log line three, but 
> this might be related to the onTextChanged Event, which should be ok I 
> think.
> This is the output on the Emulator:
> [D] onTextChanged:122 - true#false
> [D] onTextChanged:122 - true#false
> [D] onTextChanged:122 - true#true
> [D] onTextChanged:122 - false#true
>
>
> On my Jolla errorHighlight is ALWAYS "true" and accaptableInput is 
> ALWAYS "false". Output (timestamp and other useless garbage has been 
> wiped) for Jolla:
> [D] onTextChanged:122 - true#false
> [D] onTextChanged:122 - true#false
> [D] onTextChanged:122 - true#false
> [D] onTextChanged:122 - true#false
>
> Now comes the really weird thing on the Jolla... Directly after 
> switching focus (not pressing any key, only tapping on the next 
> TextField) to another TextField I get this:
> [D] onTextChanged:122 - true#true
> [D] onTextChanged:122 - false#true
> This doesn't happen in the Emulator!!!
>
> WTF is going on?!
>
> I'm really confused about this different behaviour and I couldn't find 
> a way to workaround this. I also have other TextFields using a 
> DoubleValidator which works quite fine.
>
> If anyone knows what I'm doing wrong... Any help is appreciated! :-)
> _______________________________________________
> SailfishOS.org Devel mailing list
> To unsubscribe, please send a mail to 
> devel-unsubscribe at lists.sailfishos.org



More information about the Devel mailing list