Ignore control characters in the text part of Xpe "ESC]" sequences

Summary:
Ignore control characters in the text part of Xpe (OSC, Operating System
Control) of the form "ESC]Pn;Pt\a" escape sequences; this matches what
XTerm docs say.

If userTitle is an empty string, set the window title to a blank space
when showWindowTitleOnTitleBar is enabled; basically if the user sets
the title to an empty string, leave it as-is.

BUG: 315581
FIXED-IN: 18.08

Test Plan:
- unset PROMPT_COMMAND, in case the shell is configured to set the
   window title via that variable
- Make sure "Show window title on the title bar" is enabled
- Execute:
$ /usr/bin/echo -e 'j\e]2;\n\aj'
- The window title is changed to the tab title text; and the output
    looks like this:
j
j

- Apply the diff, build, and try again, the window title should be
   set to an empty string (really a blank space), and the output
   should look like:
jj

Reviewers: #konsole, hindenburg

Reviewed By: #konsole, hindenburg

Subscribers: konsole-devel, #konsole

Tags: #konsole

Differential Revision: https://phabricator.kde.org/D13078
wilder-portage
Ahmad Samir 8 years ago committed by Kurt Hindenburg
parent 847b72358d
commit d547d1d177
  1. 9
      src/MainWindow.cpp
  2. 6
      src/Vt102Emulation.cpp

@ -287,9 +287,12 @@ void MainWindow::updateWindowCaption()
// use tab title as caption by default
QString caption = title;
// use window title as caption only when enabled and it is not empty
if (KonsoleSettings::showWindowTitleOnTitleBar() && !userTitle.isEmpty()) {
caption = userTitle;
// use window title as caption when this setting is enabled
// if the userTitle is empty, use a blank space (using an empty string
// removes the dash — before the application name; leaving the dash
// looks better)
if (KonsoleSettings::showWindowTitleOnTitleBar()) {
!userTitle.isEmpty() ? caption = userTitle : caption = QStringLiteral(" ");
}
if (KonsoleSettings::showAppNameOnTitleBar()) {

@ -360,6 +360,12 @@ void Vt102Emulation::receiveChar(uint cc)
if (ces(CTL))
{
// ignore control characters in the text part of Xpe (aka OSC) "ESC]"
// escape sequences; this matches what XTERM docs say
if (Xpe) {
return;
}
// DEC HACK ALERT! Control Characters are allowed *within* esc sequences in VT100
// This means, they do neither a resetTokenizer() nor a pushToToken(). Some of them, do
// of course. Guess this originates from a weakly layered handling of the X-on

Loading…
Cancel
Save