_bufferWidget->setFocusProxy(_inputWidget);
 
   _inputWidget->inputLine()->installEventFilter(_bufferWidget);
+
+  connect(_topicWidget, SIGNAL(switchedPlain()), _bufferWidget, SLOT(setFocus()));
 }
 
 void MainWin::setupTopicWidget() {
   VerticalDock *dock = new VerticalDock(tr("Topic"), this);
   dock->setObjectName("TopicDock");
-  TopicWidget *topicwidget = new TopicWidget(dock);
+  _topicWidget = new TopicWidget(dock);
 
-  dock->setWidget(topicwidget);
+  dock->setWidget(_topicWidget);
 
-  topicwidget->setModel(Client::bufferModel());
-  topicwidget->setSelectionModel(Client::bufferModel()->standardSelectionModel());
+  _topicWidget->setModel(Client::bufferModel());
+  _topicWidget->setSelectionModel(Client::bufferModel()->standardSelectionModel());
 
   addDockWidget(Qt::TopDockWidgetArea, dock, Qt::Vertical);
 
 
 class NickListWidget;
 class SystemTray;
 class ChatMonitorView;
+class TopicWidget;
 
 class QMenu;
 class QLabel;
     NickListWidget *_nickListWidget;
     InputWidget *_inputWidget;
     ChatMonitorView *_chatMonitorView;
+    TopicWidget *_topicWidget;
 
     QMenu *_fileMenu, *_networksMenu, *_viewMenu, *_bufferViewsMenu, *_settingsMenu, *_helpMenu, *_helpDebugMenu;
     QMenu *_toolbarMenu;
 
   virtual bool eventFilter(QObject *obj, QEvent *event);
   inline bool isReadOnly() const { return _readonly; }
 
+  signals:
+    void switchedPlain();
+
 protected slots:
   virtual void currentChanged(const QModelIndex ¤t, const QModelIndex &previous);
   virtual void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight);