Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Keyboard paging computation error while paging up #73

Closed
Jugen opened this issue Aug 5, 2020 · 0 comments · Fixed by #74
Closed

Keyboard paging computation error while paging up #73

Jugen opened this issue Aug 5, 2020 · 0 comments · Fixed by #74
Labels

Comments

@Jugen
Copy link
Contributor

Jugen commented Aug 5, 2020

This is from RichTextFX issue 935

Replicate

  1. Run the following JavaFX application, which uses RichTextFX:
    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.control.ScrollPane;
    import javafx.stage.Stage;
    import org.fxmisc.flowless.VirtualizedScrollPane;
    import org.fxmisc.richtext.StyleClassedTextArea;
    
    public class Pagination extends Application {
      public static void main( final String[] args ) {
        launch( args );
      }
    
      @Override
      public void start( final Stage stage ) {
        final var editor = new StyleClassedTextArea( false );
        final var scrollbars = new VirtualizedScrollPane<>( editor );
    
        scrollbars.setVbarPolicy( ScrollPane.ScrollBarPolicy.ALWAYS );
        editor.setWrapText( true );
    
        stage.setScene( new Scene(scrollbars) );
        stage.show();
      }
    }
  2. Copy multiple text paragraphs (e.g., https://www.lipsum.com/feed/html).
  3. Paste the text 5 times (to ensure the scrollbar extends).
  4. Do not resize the window (you can, but it'll mean more steps; if you did, start over):
    small-window
  5. Press Ctrl+Home to navigate to the top of the document.
  6. Press Ctrl+End to navigate to the bottom of the document.
  7. Press and hold Page Up to navigate upwards.

Expected Results

The view port navigates back one page for as long as the key is held, or the top is reached.

Actual Results

The computation for the new caret position goes awry in a variety of ways, depending on how much text is pasted and the view port size, resulting in one of the following behaviours:

  • Nothing happens.
  • View port scrolls up several times, but eventually stops, as though running into an asymptote.
  • View port scrolls up a few times, then scrolls to the same page within an infinite loop.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant