[prev in list] [next in list] [prev in thread] [next in thread] 

List:       konsole-devel
Subject:    [Konsole-devel] [PATCH to bug 49153]: deattach/attach session -> key input is doubled
From:       Luis Pedro Coelho <luis_pedro () netcabo ! pt>
Date:       2002-10-20 14:04:57
[Download RAW message or body]

Hi,

[I hope this is the right place for this].

(See the bug report at http://bugs.kde.org/show_bug.cgi?id=49153)

There is another manifestation of the bug: instead of reattaching the konsole, 
open another session and now inputs on this new session will also appear on 
the dettached one.

I found that the problem is that TEmulVt102::onKeyPressed is *not* 
disconnected from TEWidget::keyPressedSignal as it should so it gets 
connected twice. This looks like a Qt bug, though I was unable to build a 
simple case showing the bug. This is reinforced by the fact that it only 
shows on qt-copy.

This patch works around the bug. However, I think that this patch is also 
better since it is more fault-tolerant, i.e. if you add a connection later 
there is no possibility you forget to disconnect it.

HTH,
-- 
Luis Pedro Coelho

"Technology does not always equal progress."
Douglas Coupland
["konsole.patch" (text/x-diff)]

Index: TEmuVt102.cpp
===================================================================
RCS file: /cvs/kdebase/konsole/konsole/TEmuVt102.cpp,v
retrieving revision 1.94
diff -u -3 -p -r1.94 TEmuVt102.cpp
--- TEmuVt102.cpp	2002/09/14 00:15:45	1.94
+++ TEmuVt102.cpp	2002/10/20 13:59:37
@@ -95,11 +95,8 @@ void TEmuVt102::changeGUI(TEWidget* newg
 {
   if (gui==newgui) return;
 
-  QObject::disconnect(gui,SIGNAL(mouseSignal(int,int,int)),
-                      this,SLOT(onMouse(int,int,int)));
-  QObject::disconnect(gui, SIGNAL(sendStringToEmu(const char*)),
-		   this, SLOT(sendString(const char*)));
-  TEmulation::changeGUI(newgui);
+  TEmulation::changeGUI(newgui); //This disconnects everything, so we don't need to
+
   QObject::connect(gui,SIGNAL(mouseSignal(int,int,int)),
                    this,SLOT(onMouse(int,int,int)));  
   QObject::connect(gui, SIGNAL(sendStringToEmu(const char*)),
Index: TEmulation.cpp
===================================================================
RCS file: /cvs/kdebase/konsole/konsole/TEmulation.cpp,v
retrieving revision 1.44
diff -u -3 -p -r1.44 TEmulation.cpp
--- TEmulation.cpp	2002/08/27 08:53:59	1.44
+++ TEmulation.cpp	2002/10/20 13:59:37
@@ -148,27 +148,7 @@ void TEmulation::connectGUI()
 void TEmulation::changeGUI(TEWidget* newgui)
 {
   if (gui==newgui) return;
-
-  QObject::disconnect(gui,SIGNAL(changedImageSizeSignal(int,int)),
-                   this,SLOT(onImageSizeChange(int,int)));
-  QObject::disconnect(gui,SIGNAL(changedHistoryCursor(int)),
-                   this,SLOT(onHistoryCursorChange(int)));
-  QObject::disconnect(gui,SIGNAL(keyPressedSignal(QKeyEvent*)),
-                   this,SLOT(onKeyPress(QKeyEvent*)));
-  QObject::disconnect(gui,SIGNAL(beginSelectionSignal(const int,const int)),
-		   this,SLOT(onSelectionBegin(const int,const int)) );
-  QObject::disconnect(gui,SIGNAL(extendSelectionSignal(const int,const int)),
-		   this,SLOT(onSelectionExtend(const int,const int)) );
-  QObject::disconnect(gui,SIGNAL(endSelectionSignal(const bool)),
-		   this,SLOT(setSelection(const bool)) );
-  QObject::disconnect(gui,SIGNAL(copySelectionSignal()),
-		   this,SLOT(copySelection()) );
-  QObject::disconnect(gui,SIGNAL(clearSelectionSignal()),
-		   this,SLOT(clearSelection()) );
-  QObject::disconnect(gui,SIGNAL(isBusySelecting(bool)),
-		   this,SLOT(isBusySelecting(bool)) );
-  QObject::disconnect(gui,SIGNAL(testIsSelected(const int, const int, bool &)),
-		   this,SLOT(testIsSelected(const int, const int, bool &)) );
+  QObject::disconnect(gui,0,this,0); // Just disconnect everything
   gui=newgui;
   connectGUI();
 }

_______________________________________________
konsole-devel mailing list
konsole-devel@mail.kde.org
http://mail.kde.org/mailman/listinfo/konsole-devel

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic