Coder Social home page Coder Social logo

Comments (4)

tibbi avatar tibbi commented on June 20, 2024

Im pretty sure that is the expected behaviour. Anyway, such things are handled by the system, not us.

from simple-notes.

Zocker1999NET avatar Zocker1999NET commented on June 20, 2024

I wouldn't call that expected behavior. If I'm inserting text & having a blinking "text" cursor, I'm expecting that my arrow keys do move the "text" cursor & not jump in between elements.

However, I found out the exact conditions the issue is appearing (tested with version 6.15.5):

  1. Enable "Make links and emails clickable" in the app settings
  2. Creating a note with a link for testing the issue
  3. Fully restart the app to ensure that said link is recognized as such
  4. Reopen the note & verify that arrow keys are working as expected (moving text cursor)
  5. Now long press anything to trigger Android's sub menu
    • EDIT: It does not need to be the link which has to be selected, anything selecting works, making the app barely usable with this setting. However, the setting from point 1 needs to be enabled.
  6. Press anywhere in the text to give focus back to the input
  7. Now verify that the arrow keys (IMO falsely) do not move the text cursor but jump between/to the links

This is a screen record where I reproduce the issue:

_screencapture.mp4

I have no real experience in Android development specific, but to me it looks like the focus isn't correctly set to be only on the text input after the link was selected once. I cannot say if this might be an issue with the Android system, but this is the only app where I experience this. Anyway, I will keep my eyes open to find an app with a similar simple text UI & link recognizing to see if it experiences the same error.

from simple-notes.

tibbi avatar tibbi commented on June 20, 2024

that is all done by the system, not us.

from simple-notes.

Zocker1999NET avatar Zocker1999NET commented on June 20, 2024

Sorry, I value the huge work you put in this app, but I disagree with you. I've looked in-depth into the code & I found out the hotfix added in 1741070 is causing that, with "Make links and emails clickable" enabled, the fix you introduced in 696858e for #136 is reverted at runtime in the case I presented above.


Your fix for #136 wants to use MyMovementMethod instead of LinkMovementMethod with linksClickable=true to solve it:

if (config!!.clickableLinks) {
view.text_note_view.apply {
linksClickable = true
autoLinkMask = Linkify.WEB_URLS or Linkify.EMAIL_ADDRESSES
movementMethod = MyMovementMethod.getInstance()
}
}

And it does in my case, after a fresh launch, the arrow keys work fine.

But when selecting a text, this hotfix comes in to solve an issue in Android <=6 Google "couldn't" fix by enabling ArrowKeyMovementMethod when a selection is triggered to avoid a crash. It would eventually revert the hotfix when the text is deselected, but it reverts it to LinkMovementMethod, ultimately reverting your work in 696858e at runtime:

if (config.clickableLinks) {
noteViewWithTextSelected?.movementMethod = LinkMovementMethod.getInstance()
}


So I concluded that changing line 257 to use MyMovementMethod and not LinkMovementMethod should fix the issue I have, and after testing I see that it does fix my issue. I've created PR #634 to propose this change.

Alternatively, or rather additionally, the hotfix may be guarded to be only applied on Android <=6 devices (like proposed here), to avoid further hassle with this workaround where it is not needed, as it feels kind of "hacky" and hopefully is only required on such old Android versions (However, that requires further testing with older devices at least I cannot do, that's why I didn't add this to my PR).

from simple-notes.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.