1. 17 Apr, 2021 10 commits
    • Luis Javier Merino's avatar
      Do not reflow double-height lines · 05d81656
      Luis Javier Merino authored and Kurt Hindenburg's avatar Kurt Hindenburg committed
      Double height lines are actually two lines, the first with the top part
      of the characters, the second with the bottom part. Reflowing could lead
      to situations where we render a top part, a double height line with its
      top and bottom parts, and a bottom part, which looks weird.
      05d81656
    • Luis Javier Merino's avatar
      Prevent selecting beyond last column on double-width lines · 3cd160f5
      Luis Javier Merino authored and Kurt Hindenburg's avatar Kurt Hindenburg committed
      There is a difference with xterm behavior: when the screen width is an
      odd number of columns, xterm allows selecting up to columns/2+1, we just
      allow selecting up to columns/2.
      3cd160f5
    • Luis Javier Merino's avatar
      Make reflow aware of line rendition attributes · 9771b1d9
      Luis Javier Merino authored and Kurt Hindenburg's avatar Kurt Hindenburg committed
      While DECDHL/DECDWL lines are not wrapped at the correct column, now at
      least reflowing doesn't clear line rendition attributes, so resizing
      Konsole and going back to the original size always recovers the original
      content, including double-height/double-width status of each line.
      
      Reflowing double-height lines doesn't make much sense, since a
      double-height line actually consists of a top (T) and a bottom (B)
      line. Shrinking them could lead to TTBB lines, which look weird. At
      least now going back to the original size brings back the original
      content in all its glory.
      9771b1d9
    • Luis Javier Merino's avatar
      Support scrolling double-height/width lines · 57ce654d
      Luis Javier Merino authored and Kurt Hindenburg's avatar Kurt Hindenburg committed
      The scrollback buffer has support for a wrapped property for every line.
      Extend it to support the line rendition attributes.
      57ce654d
    • Luis Javier Merino's avatar
      Allow writing only half of a double-height line · c61e4cac
      Luis Javier Merino authored and Kurt Hindenburg's avatar Kurt Hindenburg committed
      While DECHDL sequences should be used in pairs on adjacent lines, the
      first line drawing the top half, and the second line drawing the bottom
      half, apparently real VTxxx (or at least the VT220) terminals did draw
      only the top or bottom of characters when confronted with an isolated
      DECDHL line (https://retrocomputing.stackexchange.com/questions/18023/).
      xterm has that same behavior. So behave likewise.
      c61e4cac
    • Luis Javier Merino's avatar
      Fix selection on double width lines · 2232ed67
      Luis Javier Merino authored and Kurt Hindenburg's avatar Kurt Hindenburg committed
      TerminalDisplay::getCharacterPosition() should take double-width lines
      into account to return the right column.
      2232ed67
    • Luis Javier Merino's avatar
      Don't clear line rendition on EL and partial ED · e1e832f5
      Luis Javier Merino authored and Kurt Hindenburg's avatar Kurt Hindenburg committed
      EL (Erase Line) should not reset the line rendition attribute to
      single-width. ED (Erase Display) should only reset it for completely
      cleared lines. ECH (Erase CHaracters) should obviously not reset it.
      DECSED and DECSEL (Selective Erase, not supported by Konsole) should not
      reset it.
      
      This fixes a vttest test where a line is set to double-height-top and
      then EL before writing its text and the double-height-bottom line below.
      
      Can also be tested with:
      
      echo -e "\e[2J\e[4;1HNormal\n\e#6DOUBLE\n\e#6DOUBLE\nNormal" &&
      sleep 2; echo -e "\e[5;3H\e[1J\e[8;1H"
      e1e832f5
    • Luis Javier Merino's avatar
      Use the correct last column for double-width lines · 4352df00
      Luis Javier Merino authored and Kurt Hindenburg's avatar Kurt Hindenburg committed
      Some control functions special case the last column. When a line has
      been set to double-width via DECDWL or DECDHL (double-height and
      double-width), the correcr last column for that line should be used.
      Control functions which special case the last column include TAB, CUF,
      ICH and DECRC.
      
      Can be tested with:
      
      perl -E '$r=join "", map{$_%10}1..80; say "\e<\e[?40h\e[?3l\e[?7l$r";
               $s="L"."\tx"x4 ."\t\tR"; say "\e#3$s\n\e#4$s"'
      
      The above tests that tabs don't travel beyond the last column in
      double-width lines.  The last column (below columns 79 and 80 of
      the previous line) should have an "R".
      
      perl -E '$r=join "", map{$_%10}1..80; say "\e<\e[?40h\e[?3l\e[?7h$r";
               $s="L"."X"x36 ."\e[6C"."R"; say "\e#3$s\n\e#4$s"'
      
      The above tests that CUF (Cursor Forward) doesn't travel beyond the last
      column in double-width lines.  The last column (below columns 79 and 80
      of the previous line) should have an "R".
      
      perl -E '$r=join "", map{$_%10}1..80; say "\e<\e[?40h\e[?3l\e[?7h$r";
               $s="L"."X"x22 ."R"."x"x8 ."r"."\e[17D\e[16@";
               say "\e#3$s\n\e#4$s"'
      
      The above tests that ICH (Insert CHaracters; VT200+) doesn't write past
      the last column, visible on repaints (switch to another window and
      back).
      
      perl -E '$r=join "", map{$_%10}1..80; say "\e<\e[?40h\e[?3l\e[?7h$r";
               $s="L"."X"x38 ."r\e7\e[H\e8R"; say "\e#3$s\n\e#4$s"'
      
      The above tests that DECRC (Restore Cursor) doesn't restore the cursor
      to a position beyond the last column on double-width lines.  The last
      column should have an "R", "r" should not be visible.
      
      perl -E '$r=join "", map{$_%10}1..80; say "\e<\e[?40h\e[?3l\e[?7l$r";
               $s="L"."X"x38 ."R"; print "\e#6$s"'; sleep 5; echo
      
      The above tests that the cursor stays at the rightmost column. The
      cursor should stay over the "R" for 5 seconds.
      4352df00
    • Luis Javier Merino's avatar
      Fix appending characters at end of line in double width lines · 9ffe33a2
      Luis Javier Merino authored and Kurt Hindenburg's avatar Kurt Hindenburg committed
      Since double-width/double-height lines have room for just half the
      characters, take that into account.
      
      Can be tested with:
      
      perl -E '$r=join "", map{$_%10}1..80; say "\e<\e[?40h\e[?3l\e[?7h$r";
               $s="L"."X"x38 ."RL"; say "\e#6$s"'
      
      The above tests that appending characters to double-width lines in
      DECAWM (Auto Wrap Mode) wraps at the correct last column. There should
      appear a second line (single-width) with a single "L".
      
      perl -E '$r=join "", map{$_%10}1..80; say "\e<\e[?40h\e[?3l\e[?7l$r";
               $s="L"."X"x42 ." TEST FAILED OUTOFBOUNDS R"; say "\e#6$s"'
      
      The above tests that appending characters to double-width lines in
      non-DECAWM (Auto Wrap Mode) doesn't write past the last column (visible
      on repaints - switch to another window and back). The last column (below
      columns 79 and 80 of prev line) should have an "R".
      9ffe33a2
    • Luis Javier Merino's avatar
      Fix positioning of double width/double height runs · 398a6657
      Luis Javier Merino authored and Kurt Hindenburg's avatar Kurt Hindenburg committed
      When there were several runs of double width/double height runs with
      differing color/rendition/line draw/..., the second and subsequent runs
      were positioned wrong. Fix the calculation of the starting x position to
      account for double width, and fix a bug were the y position was
      incremented for every run instead of for every line.
      
      Can be tested with:
      perl -E '$s="\e[0mTEST\e[32mTEST\e[0m"; say "\e#3$s\n\e#4$s"'
      398a6657
  2. 16 Apr, 2021 2 commits
  3. 14 Apr, 2021 1 commit
  4. 12 Apr, 2021 2 commits
  5. 06 Apr, 2021 1 commit
    • Ahmad Samir's avatar
      Fix QDialogButtonBox connections in the edit profile dialog · c413d543
      Ahmad Samir authored
      KPageDialog already creates the accepted()/rejected() connections, since
      the code here created another connection, the accept() slot was being
      called twice for each OK button click, with e.g. the profile name empty,
      clicking Ok:
      - the first time isProfileNameValid() would return false, and the saving
        would abort, as it should
      - the second time around, isProfileNameValid() would return true since
        the name has been reverted to the original value in the Name line edit
      
      The same goes for the reject() slot.
      
      Also use a lambda instead of apply(), it's a very small method and this
      was the code is more readable, since we don't need to jump back and forth.
      c413d543
  6. 05 Apr, 2021 2 commits
  7. 04 Apr, 2021 4 commits
  8. 31 Mar, 2021 2 commits
  9. 28 Mar, 2021 2 commits
  10. 26 Mar, 2021 5 commits
  11. 23 Mar, 2021 3 commits
    • Ahmad Samir's avatar
      Make the "Edit Current Profile" dialog modal · 94505d94
      Ahmad Samir authored and Kurt Hindenburg's avatar Kurt Hindenburg committed
      This should prevent opening two instance of the EditProfileDialog in the
      same process, i.e. if "run all konsole windows in a single process" option is:
      - Enabled, then opening the dialog will block user interaction with all
        other konsole windows (including tabs).
      - Disabled, then open the dialog will block user interactin with all
        other tabs in the same window
      
      This simplifies the code since it checked if such a dialog was open
      somewhere else to prevent crashes.
      94505d94
    • Ahmad Samir's avatar
      Show dialogs with show() rather than exec() · 61a7947a
      Ahmad Samir authored and Kurt Hindenburg's avatar Kurt Hindenburg committed
      exec() creates a nested eventloop, which could lead to some nasty
      crashes ...etc.
      
      ProfileSettings::editSelected(): since the dialog is modal, the user
      can't interact with the konsole window at all, so no chance of opening
      another instance of the EditProfileDialog.
      61a7947a
    • Kurt Hindenburg's avatar
      Add a bunch of authors to the credits · 9ec6f0aa
      Kurt Hindenburg authored
      This is long overdue as I haven't been keeping this up to date.
      9ec6f0aa
  12. 19 Mar, 2021 2 commits
  13. 18 Mar, 2021 4 commits