[Konsole-devel] [Bug 95932] Terminal Resize does not work
Kurt V.Hindenburg
kurt.hindenburg at kdemail.net
Mon Mar 28 23:25:36 UTC 2005
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
http://bugs.kde.org/show_bug.cgi?id=95932
kurt.hindenburg kdemail net changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
------- Additional Comments From kurt.hindenburg kdemail net 2005-03-29 01:25 -------
CVS commit by hindenburg:
Allow xterm resize ESC code to work. Not the easiest code to understand...
BUGS: 95932
M +10 -0 TEmuVt102.cpp 1.114
M +1 -0 TEmulation.h 1.36
M +13 -1 konsole.cpp 1.523
M +1 -0 konsole.h 1.203
--- kdebase/konsole/konsole/TEmuVt102.cpp #1.113:1.114
@ -257,4 +257,5 @ void TEmuVt102::pushToToken(int cc)
#define SCS 16
#define GRP 32
+#define CPS 64
void TEmuVt102::initTokenizer()
@ -264,4 +265,6 @ void TEmuVt102::initTokenizer()
for(i = 32; i < 256; i++) tbl[ i] |= CHR;
for(s = (UINT8*)" ABCDGHILMPSTXZcdfry"; *s; s++) tbl[*s] |= CPN;
+// resize = \e[8;<row>;<col>t
+ for(s = (UINT8*)"t"; *s; s++) tbl[*s] |= CPS;
for(s = (UINT8*)"0123456789" ; *s; s++) tbl[*s] |= DIG;
for(s = (UINT8*)"()+*%" ; *s; s++) tbl[*s] |= SCS;
@ -336,4 +339,8 @ void TEmuVt102::onRcvChar(int cc)
if (lec(3,1,'#')) { tau( TY_ESC_DE(s[2]), 0, 0); resetToken(); return; }
if (eps( CPN)) { tau( TY_CSI_PN(cc), argv[0],argv[1]); resetToken(); return; }
+
+// resize = \e[8;<row>;<col>t
+ if (eps( CPS)) { tau( TY_CSI_PS(cc, argv[0]), argv[1], argv[2]); resetToken(); return; }
+
if (epe( )) { tau( TY_CSI_PE(cc), 0, 0); resetToken(); return; }
if (ees( DIG)) { addDigit(cc-'0'); return; }
@ -506,4 +513,7 @ switch( N )
case TY_ESC_DE('8' ) : scr->helpAlign ( ); break;
+// resize = \e[8;<row>;<col>t
+ case TY_CSI_PS('t', 8) : changeColLin( q /* col */, p /* lin */ ); break;
+
case TY_CSI_PS('K', 0) : scr->clearToEndOfLine ( ); break;
case TY_CSI_PS('K', 1) : scr->clearToBeginOfLine ( ); break;
--- kdebase/konsole/konsole/TEmulation.h #1.35:1.36
@ -69,4 +69,5 @ signals:
void ImageSizeChanged(int lines, int columns);
void changeColumns(int columns);
+ void changeColLin(int columns, int lines);
void changeTitle(int arg, const char* str);
void notifySessionState(int state);
--- kdebase/konsole/konsole/konsole.h #1.202:1.203
@ -157,4 +157,5 @ private slots:
void changeColumns(int);
+ void changeColLin(int columns, int lines);
void notifySessionState(TESession* session,int state);
void notifySize(int columns, int lines);
--- kdebase/konsole/konsole/konsole.cpp #1.522:1.523
@ -1947,6 +1947,14 @ void Konsole::reparseConfiguration()
}
-// --| color selection |-------------------------------------------------------
+// Called from emulation
+void Konsole::changeColLin(int columns, int lines)
+{
+ if (b_allowResize && !b_fixedSize) {
+ setColLin(columns, lines);
+ te->update();
+ }
+}
+// Called from emulation
void Konsole::changeColumns(int columns)
{
@ -2624,4 +2632,6 @ QString Konsole::newSession(KSimpleConfi
connect( s->getEmulation(), SIGNAL(changeColumns(int)),
this, SLOT(changeColumns(int)) );
+ connect( s->getEmulation(), SIGNAL(changeColLin(int,int)),
+ this, SLOT(changeColLin(int,int)) );
connect( s->getEmulation(), SIGNAL(ImageSizeChanged(int,int)),
this, SLOT(notifySize(int,int)));
@ -3352,4 +3362,5 @ void Konsole::detachSession(TESession* _
disconnect( _se->getEmulation(),SIGNAL(ImageSizeChanged(int,int)), this,SLOT(notifySize(int,int)));
+ disconnect( _se->getEmulation(),SIGNAL(changeColLin(int, int)), this,SLOT(changeColLin(int,int)) );
disconnect( _se->getEmulation(),SIGNAL(changeColumns(int)), this,SLOT(changeColumns(int)) );
@ -3450,4 +3461,5 @ void Konsole::attachSession(TESession* s
connect( session->getEmulation(),SIGNAL(ImageSizeChanged(int,int)), this,SLOT(notifySize(int,int)));
connect( session->getEmulation(),SIGNAL(changeColumns(int)), this,SLOT(changeColumns(int)) );
+ connect( session->getEmulation(),SIGNAL(changeColLin(int, int)), this,SLOT(changeColLin(int,int)) );
activateSession(session);
More information about the konsole-devel
mailing list