+
+ // Expand the "All Decoders" category/tag if the user filtered
+ 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);