1. 24 Jun, 2021 6 commits
    • 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 8 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
    • Luis Javier Merino's avatar
      Support DECSET 1003 mouse move tracking · b5d17438
      Luis Javier Merino authored and Tomaz  Canabrava's avatar Tomaz Canabrava committed
      Mode 1003 reports all mouse movement.  Support it in Konsole.
      
      BUG: 391967
      BUG: 416530
      BUG: 423333
      b5d17438
    • Luis Javier Merino's avatar
      Don't send move events for normal mouse tracking · 027e8c15
      Luis Javier Merino authored and Tomaz  Canabrava's avatar Tomaz Canabrava committed
      xterm's DECSET 1000 requests justs press and release notifications, so
      do not send move events on this mode.
      
      BUG: 302731
      027e8c15
    • Luis Javier Merino's avatar
      Make mouse tracking modes mutually exclusive · d70fc5ee
      Luis Javier Merino authored and Tomaz  Canabrava's avatar Tomaz Canabrava committed
      On xterm, modes 9 (X10 legacy, button press), 1000 (button press and
      release), 1001 (mouse highlight tracking), 1002 (mouse drag) 1003 (mouse
      move) and DECELR (DEC Locator) are mutually exclusive.
      
      So are 1005 (extended coordinates mode), 1006 (SGR extended
      coordinates), 1015 (urxvt extended coordinates) and 1016 (use pixel
      coordinates).
      
      On xterm, disabling any of the 9, 1000, 1001, 1002, 1003, DECELR modes
      disables mouse tracking.  To disable the extended coordinate modes
      (1005, 1006, 1015, 1016), the current mode should be disabled.
      
      So, do the same for the modes Konsole supports.
      d70fc5ee
    • Luis Javier Merino's avatar
      Respect read-only for all mouse tracking events · 1a63b91d
      Luis Javier Merino authored and Tomaz  Canabrava's avatar Tomaz Canabrava committed
      The read-only property wasn't being respected for mouse move and mouse
      release events.
      1a63b91d