fixed focus when closing ChatViewSearchbar
authorDirk Rettschlag <dirk.rettschlag@gmail.com>
Thu, 28 Jan 2010 11:50:19 +0000 (12:50 +0100)
committerManuel Nickschas <sputnick@quassel-irc.org>
Fri, 29 Jan 2010 23:53:39 +0000 (00:53 +0100)
src/qtui/bufferwidget.cpp
src/qtui/chatviewsearchbar.cpp
src/qtui/chatviewsearchbar.h
src/qtui/mainwin.cpp
src/qtui/mainwin.h

index 135c0d1..e6990aa 100644 (file)
@@ -51,22 +51,24 @@ BufferWidget::BufferWidget(QWidget *parent)
   _chatViewSearchController->setSearchOnlyRegularMsgs(ui.searchBar->searchOnlyRegularMsgsBox()->isChecked());
 
   connect(ui.searchBar, SIGNAL(searchChanged(const QString &)),
-         _chatViewSearchController, SLOT(setSearchString(const QString &)));
+    _chatViewSearchController, SLOT(setSearchString(const QString &)));
   connect(ui.searchBar->caseSensitiveBox(), SIGNAL(toggled(bool)),
-         _chatViewSearchController, SLOT(setCaseSensitive(bool)));
+    _chatViewSearchController, SLOT(setCaseSensitive(bool)));
   connect(ui.searchBar->searchSendersBox(), SIGNAL(toggled(bool)),
-         _chatViewSearchController, SLOT(setSearchSenders(bool)));
+    _chatViewSearchController, SLOT(setSearchSenders(bool)));
   connect(ui.searchBar->searchMsgsBox(), SIGNAL(toggled(bool)),
-         _chatViewSearchController, SLOT(setSearchMsgs(bool)));
+    _chatViewSearchController, SLOT(setSearchMsgs(bool)));
   connect(ui.searchBar->searchOnlyRegularMsgsBox(), SIGNAL(toggled(bool)),
-         _chatViewSearchController, SLOT(setSearchOnlyRegularMsgs(bool)));
+    _chatViewSearchController, SLOT(setSearchOnlyRegularMsgs(bool)));
   connect(ui.searchBar->searchUpButton(), SIGNAL(clicked()),
-         _chatViewSearchController, SLOT(highlightPrev()));
+    _chatViewSearchController, SLOT(highlightPrev()));
   connect(ui.searchBar->searchDownButton(), SIGNAL(clicked()),
-         _chatViewSearchController, SLOT(highlightNext()));
+    _chatViewSearchController, SLOT(highlightNext()));
+
+  connect(ui.searchBar, SIGNAL(hidden()), this, SLOT(setFocus()));
 
   connect(_chatViewSearchController, SIGNAL(newCurrentHighlight(QGraphicsItem *)),
-         this, SLOT(scrollToHighlight(QGraphicsItem *)));
+    this, SLOT(scrollToHighlight(QGraphicsItem *)));
 
   ActionCollection *coll = QtUi::actionCollection();
 
index 19fce8a..5dcc112 100644 (file)
@@ -58,7 +58,10 @@ void ChatViewSearchBar::setVisible(bool visible) {
   // a resize event which can lead to strange side effects.
   ui.searchEditLine->clear();
   QWidget::setVisible(visible);
-  if(visible) ui.searchEditLine->setFocus();
+  if(visible)
+    ui.searchEditLine->setFocus();
+  else
+    emit hidden();
 }
 
 void ChatViewSearchBar::delaySearch() {
index 497c5dd..d0068b9 100644 (file)
@@ -47,6 +47,7 @@ public slots:
 
 signals:
   void searchChanged(const QString &);
+  void hidden();
 
 private slots:
   void delaySearch();
index d0a623f..32b59ab 100644 (file)
@@ -183,9 +183,9 @@ void MainWin::init() {
   setupBufferWidget();
   setupMenus();
   setupTopicWidget();
-  setupChatMonitor();
   setupNickWidget();
   setupInputWidget();
+  setupChatMonitor();
   setupStatusBar();
   setupToolBars();
   setupSystray();
@@ -591,9 +591,10 @@ void MainWin::setupChatMonitor() {
   dock->setObjectName("ChatMonitorDock");
 
   ChatMonitorFilter *filter = new ChatMonitorFilter(Client::messageModel(), this);
-  ChatMonitorView *chatView = new ChatMonitorView(filter, this);
-  chatView->show();
-  dock->setWidget(chatView);
+  _chatMonitorView = new ChatMonitorView(filter, this);
+  _chatMonitorView->setFocusProxy(_inputWidget);
+  _chatMonitorView->show();
+  dock->setWidget(_chatMonitorView);
   dock->hide();
 
   addDockWidget(Qt::TopDockWidgetArea, dock, Qt::Vertical);
index 4f3f750..9807550 100644 (file)
@@ -48,6 +48,7 @@ class InputWidget;
 class MsgProcessorStatusWidget;
 class NickListWidget;
 class SystemTray;
+class ChatMonitorView;
 
 class QMenu;
 class QLabel;
@@ -200,6 +201,7 @@ class MainWin
     BufferWidget *_bufferWidget;
     NickListWidget *_nickListWidget;
     InputWidget *_inputWidget;
+    ChatMonitorView *_chatMonitorView;
 
     QMenu *_fileMenu, *_networksMenu, *_viewMenu, *_bufferViewsMenu, *_settingsMenu, *_helpMenu, *_helpDebugMenu;
     QMenu *_toolbarMenu;