Bug 103181 - /cycle command kills every channel tab instead of cycling current channel
Summary: /cycle command kills every channel tab instead of cycling current channel
Status: RESOLVED FIXED
Alias: None
Product: konversation
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: Compiled Sources Linux
: NOR normal
Target Milestone: ---
Assignee: Ismail Donmez
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-04-04 05:27 UTC by Brian Pankey
Modified: 2010-07-01 16:02 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Brian Pankey 2005-04-04 05:27:14 UTC
Version:           0.16 AND cvs (using KDE KDE 3.4.0)
Installed from:    Compiled From Sources
Compiler:          gcc-3.4.3-20050110 
OS:                Linux

using the /cycle command in one channel seems to cycle all channels. every channel tab disappears and comes back slowly, taking a lot of time to resync the channels
Comment 1 Ismail Donmez 2005-04-04 07:05:14 UTC
There is a reason for /cycle not being in Changelog ;)
Comment 2 Ismail Donmez 2005-04-08 11:54:27 UTC
CVS commit by cartman: 

Make /cycle work correctly. Somehow someone managed to find a bug in this
undocumented feature :-)
BUG:103181


  M +9 -4      channel.cpp   1.313
  M +2 -3      channel.h   1.113
  M +0 -8      outputfilter.cpp   1.150
  M +1 -2      outputfilter.h   1.65


--- kdeextragear-2/konversation/konversation/channel.cpp  #1.312:1.313
@@ -331,5 +331,4 @@ void Channel::setServer(Server *server) 
   setIdentity(server->getIdentity());
 
-  connect(server->getOutputFilter(),SIGNAL(cycleChannel()),this,SLOT(cycleChannel()));
 }
 
@@ -752,8 +751,14 @@ void Channel::channelTextEntered()
   channelInput->clear();
 
-  if(line.lower()=="/clear")
+  if(line.lower().stripWhiteSpace() == "/clear") {
     textView->clear();
-  else
-    if(!line.isEmpty()) sendChannelText(line);
+  }
+  else if(line.lower().stripWhiteSpace() == "/cycle") {
+    cycleChannel();
+  }
+  else {
+    if(!line.isEmpty()) 
+      sendChannelText(line);
+  }
 }
 

--- kdeextragear-2/konversation/konversation/channel.h  #1.112:1.113
@@ -216,7 +216,4 @@ class Channel : public ChatWindow
     void refreshModeButtons();
     
-    // Connected to OutputFilter::cycleChannel
-    void cycleChannel();
-
     ///Request a delayed nicklist sorting
     void requestNickListSort();
@@ -235,4 +232,6 @@ class Channel : public ChatWindow
     virtual void childAdjustFocus();
 
+    void cycleChannel();
+
     int nicks;
     int ops;

--- kdeextragear-2/konversation/konversation/outputfilter.cpp  #1.149:1.150
@@ -189,6 +189,4 @@ namespace Konversation {
             else if(command == "charset") parseCharset(parameter);
 
-            else if(command == "cycle")   parseCycle();
-
             // Forward unknown commands to server
             else {
@@ -1276,10 +1274,4 @@ namespace Konversation {
   }
 
-  void OutputFilter::parseCycle()
-  {
-    emit cycleChannel();
-  }
-
-
 }
 

--- kdeextragear-2/konversation/konversation/outputfilter.h  #1.64:1.65
@@ -81,5 +81,4 @@ namespace Konversation
       void reconnectServer();
       void connectToServer(const QString& server, const QString& port, const QString& password);
-      void cycleChannel();
   
     public slots:
Comment 3 Ismail Donmez 2010-07-01 16:02:46 UTC
commit 22a85118d31ef23e8e6cc7ace3a773752cb6690b
Author: İsmail Dönmez <ismail@kde.org>
Date:   Fri Apr 8 09:54:19 2005 +0000

    Make /cycle work correctly. Somehow someone managed to find a bug in this
    undocumented feature :-)
    BUG:103181
    
    svn path=/trunk/kdeextragear-2/konversation/; revision=404000

diff --git a/konversation/channel.cpp b/konversation/channel.cpp
index 19dac61..865daeb 100644
--- a/konversation/channel.cpp
+++ b/konversation/channel.cpp
@@ -330,7 +330,6 @@ void Channel::setServer(Server *server) {
   refreshModeButtons();
   setIdentity(server->getIdentity());
 
-  connect(server->getOutputFilter(),SIGNAL(cycleChannel()),this,SLOT(cycleChannel()));
 }
 
 Channel::~Channel()
@@ -751,10 +750,16 @@ void Channel::channelTextEntered()
   QString line = channelInput->text();
   channelInput->clear();
 
-  if(line.lower()=="/clear")
+  if(line.lower().stripWhiteSpace() == "/clear") {
     textView->clear();
-  else
-    if(!line.isEmpty()) sendChannelText(line);
+  }
+  else if(line.lower().stripWhiteSpace() == "/cycle") {
+    cycleChannel();
+  }
+  else {
+    if(!line.isEmpty()) 
+      sendChannelText(line);
+  }
 }
 
 void Channel::sendChannelText(const QString& sendLine)
diff --git a/konversation/channel.h b/konversation/channel.h
index 26726f8..188516f 100644
--- a/konversation/channel.h
+++ b/konversation/channel.h
@@ -215,9 +215,6 @@ class Channel : public ChatWindow
      */
     void refreshModeButtons();
     
-    // Connected to OutputFilter::cycleChannel
-    void cycleChannel();
-
     ///Request a delayed nicklist sorting
     void requestNickListSort();
 
@@ -233,6 +230,8 @@ class Channel : public ChatWindow
     void fastAddNickname(ChannelNickPtr channelnick);
     /** Called from ChatWindow adjustFocus */
     virtual void childAdjustFocus();
+    
+    void cycleChannel();
 
     int nicks;
     int ops;
diff --git a/konversation/outputfilter.cpp b/konversation/outputfilter.cpp
index c586c42..02fab77 100644
--- a/konversation/outputfilter.cpp
+++ b/konversation/outputfilter.cpp
@@ -188,8 +188,6 @@ namespace Konversation {
 
 	    else if(command == "charset") parseCharset(parameter);
 
-	    else if(command == "cycle")   parseCycle();
-
             // Forward unknown commands to server
             else {
                 result.toServer = inputLine.mid(1);
@@ -1275,12 +1273,6 @@ namespace Konversation {
       m_server->getIdentity()->setCodecName(shortName);
   }
 
-  void OutputFilter::parseCycle()
-  {
-    emit cycleChannel();
-  }
-
-
 }
 
 #include "outputfilter.moc"
diff --git a/konversation/outputfilter.h b/konversation/outputfilter.h
index c391b52..ed55568 100644
--- a/konversation/outputfilter.h
+++ b/konversation/outputfilter.h
@@ -80,8 +80,7 @@ namespace Konversation
       void multiServerCommand(const QString& command, const QString& parameter);
       void reconnectServer();
       void connectToServer(const QString& server, const QString& port, const QString& password);
-      void cycleChannel();
-  
+
     public slots:
       void setCommandChar();
       OutputFilterResult execBan(const QString& mask,const QString& channels);