diff --git a/metainfo.xml b/metainfo.xml index 1f20807bb9..54280be6e5 100644 --- a/metainfo.xml +++ b/metainfo.xml @@ -114,6 +114,7 @@
  • Fixes statusline being misplaced after resize when being in alt screen (#1091).
  • Fixes hyperlinks with IDs (#1088)
  • Fixes hyperlink highlight when screen has been scrolled (#1084)
  • +
  • Fixes cursor shape changes when entering vi-like normal mode or visual mode.
  • Improves mouse selection to be more natural extending into new grid cells.
  • Modal mode: Improves how `[m` jumps from the current prompt to the next prompt above it.
  • Adds `profiles.*.permissions.display_host_writable_statusline` to allow the user to intervene in `DECSSDT 2` VT sequence to show the host writable statusline.
  • diff --git a/src/contour/Config.cpp b/src/contour/Config.cpp index a1854765a7..f2dfee9e2d 100644 --- a/src/contour/Config.cpp +++ b/src/contour/Config.cpp @@ -620,9 +620,9 @@ namespace return nullopt; } - optional parseCursorConfig(YAML::Node rootNode, + optional parseCursorConfig(YAML::Node const& rootNode, UsedKeys& usedKeys, - std::string basePath) + std::string const& basePath) { if (!rootNode) return nullopt; @@ -1693,7 +1693,7 @@ namespace parseCursorConfig(visualModeNode["cursor"], _usedKeys, basePath + ".visual_mode.cursor")) { _usedKeys.emplace(basePath + ".visual_mode.cursor"); - profile.inputModes.normal.cursor = cursorOpt.value(); + profile.inputModes.visual.cursor = cursorOpt.value(); } } diff --git a/src/contour/TerminalSession.cpp b/src/contour/TerminalSession.cpp index 6e78c9925d..b435f6f089 100644 --- a/src/contour/TerminalSession.cpp +++ b/src/contour/TerminalSession.cpp @@ -1190,6 +1190,10 @@ void TerminalSession::configureCursor(config::CursorConfig const& cursorConfig) terminal_.setCursorBlinkingInterval(cursorConfig.cursorBlinkInterval); terminal_.setCursorDisplay(cursorConfig.cursorDisplay); terminal_.setCursorShape(cursorConfig.cursorShape); + + // Force a redraw of the screen + // to ensure the correct cursor shape is displayed. + scheduleRedraw(); } void TerminalSession::configureDisplay()