{"action":"created","issue":{"url":"https://api.github.com/repos/mabe02/lanterna/issues/138","labels_url":"https://api.github.com/repos/mabe02/lanterna/issues/138/labels{/name}","comments_url":"https://api.github.com/repos/mabe02/lanterna/issues/138/comments","events_url":"https://api.github.com/repos/mabe02/lanterna/issues/138/events","html_url":"https://github.com/mabe02/lanterna/issues/138","id":91904550,"number":138,"title":"Scrolling a Screen","user":{"login":"cmiles74","id":33499,"avatar_url":"https://avatars.githubusercontent.com/u/33499?v=3","gravatar_id":"","url":"https://api.github.com/users/cmiles74","html_url":"https://github.com/cmiles74","followers_url":"https://api.github.com/users/cmiles74/followers","following_url":"https://api.github.com/users/cmiles74/following{/other_user}","gists_url":"https://api.github.com/users/cmiles74/gists{/gist_id}","starred_url":"https://api.github.com/users/cmiles74/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cmiles74/subscriptions","organizations_url":"https://api.github.com/users/cmiles74/orgs","repos_url":"https://api.github.com/users/cmiles74/repos","events_url":"https://api.github.com/users/cmiles74/events{/privacy}","received_events_url":"https://api.github.com/users/cmiles74/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":6,"created_at":"2015-06-29T20:39:02Z","updated_at":"2015-07-11T12:16:23Z","closed_at":null,"body":"I'm using Lanterna 3.0.0-alpha6 and am trying to put together an irssi type interface. In my application the top-most portion of the terminal scrolls, the bottom line is reserved for user input. Presently when I need to scroll the content I redraw the top portion of the window in it's entirety, adding my new line to the bottom.\r\n\r\nThis works okay with the Swing terminal but performs poorly with an actual xterm (or Gnome Terminal) window. Is there a better way of scrolling text?\r\n\r\nThank you!"},"comment":{"url":"https://api.github.com/repos/mabe02/lanterna/issues/comments/120610803","html_url":"https://github.com/mabe02/lanterna/issues/138#issuecomment-120610803","issue_url":"https://api.github.com/repos/mabe02/lanterna/issues/138","id":120610803,"user":{"login":"avl42","id":5255346,"avatar_url":"https://avatars.githubusercontent.com/u/5255346?v=3","gravatar_id":"","url":"https://api.github.com/users/avl42","html_url":"https://github.com/avl42","followers_url":"https://api.github.com/users/avl42/followers","following_url":"https://api.github.com/users/avl42/following{/other_user}","gists_url":"https://api.github.com/users/avl42/gists{/gist_id}","starred_url":"https://api.github.com/users/avl42/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/avl42/subscriptions","organizations_url":"https://api.github.com/users/avl42/orgs","repos_url":"https://api.github.com/users/avl42/repos","events_url":"https://api.github.com/users/avl42/events{/privacy}","received_events_url":"https://api.github.com/users/avl42/received_events","type":"User","site_admin":false},"created_at":"2015-07-11T12:16:23Z","updated_at":"2015-07-11T12:16:23Z","body":"Auto-detection of opportunity for scrolling surely is not worth the effort.\r\n\r\nWhat might be interesting, though, is this:\r\nScreen gets a scroll(...) method, that will primarily just scroll the back-buffer and store the desired scroll range and distance for later. Upon next delta-refresh, it will apply the stored scroll-action to the terminal and the front-buffer, then do a classic delta-refresh.\r\n\r\nThe typical use-case for a user would be to scroll, then fill the new lines, then do a refresh.  If a user scrolls the same range twice before a refresh, that could be added up, but if he scrolls conflicting ranges, then Screen could just \"give up\" and do a plain refresh without any scrolling-optimizations - ditto if the Terminal it has isn't actually an ExtendedTerminal.\r\n\r\nEssentially, the user would provide the information about what kind of scrolling would optimize terminal-refresh.\r\n"}}