+
+void BufferViewDock::updateTitle()
+{
+ QString title = _title;
+ if (isActive())
+ title.prepend(QString::fromUtf8("• "));
+ setWindowTitle(title);
+}
+
+void BufferViewDock::configChanged()
+{
+ if (_filterEdit->isVisible() != config()->showSearch()) {
+ _filterEdit->setVisible(config()->showSearch());
+ _filterEdit->clear();
+ }
+}
+
+void BufferViewDock::onFilterReturnPressed()
+{
+ if (_oldFocusItem) {
+ _oldFocusItem->setFocus();
+ _oldFocusItem = 0;
+ }
+
+ if (!config()->showSearch()) {
+ _filterEdit->setVisible(false);
+ }
+
+ BufferView *view = bufferView();
+ if (!view || _filterEdit->text().isEmpty()) {
+ return;
+ }
+
+ view->selectFirstBuffer();
+ _filterEdit->clear();
+}
+
+void BufferViewDock::setActive(bool active)
+{
+ if (active != isActive()) {
+ _active = active;
+ updateTitle();
+ if (active) {
+ raise(); // for tabbed docks
+ }
+ }
+}
+
+bool BufferViewDock::eventFilter(QObject *object, QEvent *event)
+{
+ if (object != _filterEdit) {
+ return false;
+ }
+
+ if (event->type() == QEvent::FocusOut) {
+ if (!config()->showSearch() && _filterEdit->text().isEmpty()) {
+ _filterEdit->setVisible(false);
+ return true;
+ }
+ } else if (event->type() == QEvent::KeyRelease) {
+ QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
+ if (keyEvent->key() != Qt::Key_Escape) {
+ return false;
+ }
+
+ _filterEdit->clear();
+
+ if (_oldFocusItem) {
+ _oldFocusItem->setFocus();
+ _oldFocusItem = 0;
+ }
+
+ return true;
+ }
+
+ return false;
+}
+
+void BufferViewDock::bufferViewRenamed(const QString &newName)
+{
+ _title = newName;
+ updateTitle();
+ toggleViewAction()->setText(newName);
+}
+
+
+int BufferViewDock::bufferViewId() const
+{
+ BufferView *view = bufferView();
+ if (!view)
+ return 0;
+
+ if (view->config())
+ return view->config()->bufferViewId();
+ else
+ return 0;
+}
+
+
+BufferViewConfig *BufferViewDock::config() const
+{
+ BufferView *view = bufferView();
+ if (!view)
+ return 0;
+ else
+ return view->config();
+}
+
+void BufferViewDock::setWidget(QWidget *newWidget)
+{
+ _widget->layout()->addWidget(newWidget);
+ _childWidget = newWidget;
+
+ connect(_filterEdit, SIGNAL(textChanged(QString)), bufferView(), SLOT(filterTextChanged(QString)));
+}
+
+void BufferViewDock::activateFilter()
+{
+ if (!_filterEdit->isVisible()) {
+ _filterEdit->setVisible(true);
+ }
+
+ _oldFocusItem = qApp->focusWidget();
+
+ _filterEdit->setFocus();