1. 24 Jun, 2021 10 commits
    • Volker Krause's avatar
      Port away from KStatefulBrush::brush(const QWidget*) · 2f7a6d9b
      Volker Krause authored
      Soon to be deprecated, use the QPalette overload instead.
      2f7a6d9b
    • Jonah Brüchert's avatar
      Move TerminalBell into its own class · 67508680
      Jonah Brüchert authored and Tomaz  Canabrava's avatar Tomaz Canabrava committed
      67508680
    • Jonah Brüchert's avatar
      TerminalDisplay: Extract copying related functions · 1a2867c8
      Jonah Brüchert authored and Tomaz  Canabrava's avatar Tomaz Canabrava committed
      1a2867c8
    • Jonah Brüchert's avatar
      TerminalDisplay: Move out common pasting related code · 8e8b9243
      Jonah Brüchert authored and Tomaz  Canabrava's avatar Tomaz Canabrava committed
      8e8b9243
    • Andrey Alekseenko's avatar
      Handle 'ssh -J' properly in tab title · cd207665
      Andrey Alekseenko authored and Tomaz  Canabrava's avatar Tomaz Canabrava committed
      Previously, `ssh -J intermediate target` treated -J as a host name,
      resulting in tab having `() -J` title, instead of `() target`.
      cd207665
    • Luis Javier Merino's avatar
      Fix crash/warn on history reflow · 2a78bb6e
      Luis Javier Merino authored and Tomaz  Canabrava's avatar Tomaz Canabrava committed
      When the last line in history was marked as wrapped, the history reflow
      algorithm could try to make an out-of-bound access.
      
      These were found via repeteadly zooming-in and out in the amp.rs editor
      (available through Rust's cargo tool).  amp.rs writes in the normal
      buffer (not in the alternate buffer).
      
      While at it, add a Q_ASSERT in HistoryScrollFile::startOfLine() to
      ensure parameters are in range.  Note that after an addCells()/addLine()
      pair, HistoryScrollFile::startOfLine(getLines) always has the same value
      as _cells.len().
      
      BUG: 436916
      2a78bb6e
    • Tomaz  Canabrava's avatar
      Silence warning · 1d58aae6
      Tomaz Canabrava authored and Tomaz  Canabrava's avatar Tomaz Canabrava committed
      1d58aae6
    • Tomaz  Canabrava's avatar
      Add the SSH Manager Plugin · 05484db2
      Tomaz Canabrava authored and Tomaz  Canabrava's avatar Tomaz Canabrava committed
      This plugin adds a SSH Manager, just like PuTTY, for Konsole.
      It reads and parses the ~/.ssh/config file and generates entries
      based on that, it also accepts entries manually.
      
      The file used to store the information is a json, stored locally.
      Clicking on the entry: request to connect to the server
      Middle click on the entry: new tab, request to connect to the server
      
      You can also filter entries, and disable / enable the view by
      the new Plugins submenu.
      05484db2
    • Tomaz  Canabrava's avatar
      Implement a Base system for plugins within Konsole · 2c1a4113
      Tomaz Canabrava authored and Tomaz  Canabrava's avatar Tomaz Canabrava committed
      This commit introduces a plugins sytem for konsole, so we can
      extend the application without touching the core. Currently
      there's a testcase plugin (in the next commit) that handles
      ssh connections and will serve as a base introduction on how
      to write plugins for konsole.
      
      Things we need to keep in mind when developing a plugin for
      konsole:
      - We can have more than a mainwindow, so if the plugin creates
      widgets, it needs to create the widget per window
      - We can have multiple tabs / multiple TerminalDisplays so always
      check what terminal display you are triggering the action (using
      activeTerminalDisplay())
      
      From the mainWindow you can get the activeTerminalDisplay, from
      the terminalDisplay you can get the Session, the VT102Emulation and
      the Screen.
      
      Then you can go crazy.
      2c1a4113
    • Yuri Chornoivan's avatar
      Fix my typo · 1fa7b3a3
      Yuri Chornoivan authored
      1fa7b3a3
  2. 23 Jun, 2021 2 commits
  3. 22 Jun, 2021 3 commits
    • Friedrich W. H. Kossebau's avatar
      Use ecm_qt_install_logging_categories to generate kdebugsettings file · c86fb452
      Friedrich W. H. Kossebau authored and Kurt Hindenburg's avatar Kurt Hindenburg committed
      GIT_SILENT
      c86fb452
    • Ahmad Samir's avatar
      Add option to always invert text selection colours · 38208f94
      Ahmad Samir authored
      The recent change of blending the background/foreground colours for text
      selection doesn't work everywhere, users with vision impairment or
      colour-blindness would probably find it hard to distinguish text selection
      colours; and the current code can't possibly cover all variations of colour
      schemes out there. The same goes with certain displays and viewing angles,
      some display types are notoriously awful when viewed at an angle.
      
      BUG: 435309
      FIXED-IN: 21.08
      38208f94
    • Ahmad Samir's avatar
      General code cleanup · 4ef7296b
      Ahmad Samir authored
      - Add a type alias for QPointer<Session>
      - Use TerminalDisplay::setSessionController() as early as possible
      - Use Screen::setCurrentTerminalDisplay() in TerminalDisplay::mousePressEvent(),
        this matches what's being done in keyPressEvent()
      - Add convenience function TerminalDisplay::currentSession()
      - More const
      4ef7296b
  4. 18 Jun, 2021 6 commits
  5. 15 Jun, 2021 15 commits
  6. 07 Jun, 2021 4 commits
    • Luis Javier Merino's avatar
      Support AutoScroll while mouse tracking is enabled · a66d2e23
      Luis Javier Merino authored and Tomaz  Canabrava's avatar Tomaz Canabrava committed
      AutoScrollHandler generates synthetic mouse moves to allow extending the
      selection by dragging the mouse ouside the display area.  The synthetic
      events it generates didn't carry any modifiers, so they were not
      properly working when an application had requested mouse tracking
      reports.  In that case, generate the events with ShiftModifier, so they
      work properly.
      a66d2e23
    • Luis Javier Merino's avatar
      Only generate autoscroll events while selecting · 6aa40563
      Luis Javier Merino authored and Tomaz  Canabrava's avatar Tomaz Canabrava committed
      As gumix explains in the bug below, "Konsole keeps sending mouse-drag
      reports in ESC[?1003h mode after releasing button outside window [...]
      The only way to stop it is to get mouse back over Konsole window."
      
      These mouse-drag reports are actually generated by AutoScrollHandler, to
      support the use case of extending the selection by dragging the mouse
      outside the display area.
      
      So, only generate those reports while selecting.
      
      Can be tested by playing around in vttest:
      
       - 11. Test non-VT100 (e.g., VT220, XTERM) terminals
       - 8. Test XTERM special features
       - 5. Mouse features
       - 7. Mouse Button-Event Tracking (XFree86 xterm)
      
      BUG: 391975
      6aa40563
    • Luis Javier Merino's avatar
      Restore AutoScrollHandler behavior · c9f77e52
      Luis Javier Merino authored and Tomaz  Canabrava's avatar Tomaz Canabrava committed
      AutoScrollHandler allows to extend the selection by dragging the mouse
      outside the display.  It does this by generating synthetic mouse move
      events when the left mouse button is held down and the mouse is moved
      outside of the display area.  This improves the user experience of
      extending the selection to cover text that is scrolled outside the
      display area.
      
      Unfortunately, this was broken by commit
      6667d96e, which filters out mouse move
      events if they don't change the character cell position.  So, modify the
      filtering a bit, allowing mouse movements outside the display area to
      pass through.
      c9f77e52
    • Luis Javier Merino's avatar
      De-qwidget-ize TerminalColor and TerminalFonts · 66e19aaf
      Luis Javier Merino authored and Tomaz  Canabrava's avatar Tomaz Canabrava committed
      Something was swallowing mouse moves on the top left 100x30 pixels of
      TerminalDisplay.  As it turns out, it was the widgets for TerminalFonts
      and TerminalColor.  Neither of them really needs to be a QWidget.
      
      TerminalColor emits the onPalette(const QPalette &) signal, has slots,
      and overrides event(QEvent &), so turn it into a QObject.
      
      TerminalFonts doesn't do any of the above, turn it into a plain C++
      object.
      
      Now that TerminalFonts is no longer a QObject, manage it with a
      std::unique_ptr.
      
      TerminalFonts::fontChange(const QFont &) was calling update(), which was
      probably a leftover from when it was split from TerminalDisplay.  Get
      rid of it.  Trivial testing using keyboard shortcuts to change font size
      (Ctrl++, Ctrl+-, Alt+Ctrl+0), and previewing font changes on "Edit
      Current Profile..." seem to indicate that it isn't needed.
      66e19aaf