connect(filter, SIGNAL(textChanged(const QString&)),
this, SLOT(on_filter_changed(const QString&)));
+ connect(filter, SIGNAL(returnPressed()),
+ this, SLOT(on_filter_return_pressed()));
connect(tree_view_, SIGNAL(currentChanged(const QModelIndex&)),
this, SLOT(on_item_changed(const QModelIndex&)));
tree_view_->setExpanded(tree_view_->model()->index(0, 0), !text.isEmpty());
}
+void SubWindow::on_filter_return_pressed()
+{
+ int num_visible_decoders = 0;
+ QModelIndex last_valid_index;
+
+ QModelIndex index = tree_view_->model()->index(0, 0);
+
+ while (index.isValid()) {
+ QModelIndex id_index = index.model()->index(index.row(), 2, index.parent());
+ QString decoder_name = index.model()->data(id_index, Qt::DisplayRole).toString();
+ if (!decoder_name.isEmpty()) {
+ last_valid_index = index;
+ num_visible_decoders++;
+ }
+ index = tree_view_->indexBelow(index);
+ }
+
+ // If only one decoder matches the filter, apply it when the user presses enter
+ if (num_visible_decoders == 1)
+ tree_view_->activated(last_valid_index);
+}
+
} // namespace decoder_selector
} // namespace subwindows
} // namespace pv