diff --git a/Orange/widgets/data/owselectrows.py b/Orange/widgets/data/owselectrows.py index 0eb8a9f42eb..0dcf81d800d 100644 --- a/Orange/widgets/data/owselectrows.py +++ b/Orange/widgets/data/owselectrows.py @@ -530,6 +530,11 @@ def commit(self): matching_output = remover(matching_output) non_matching_output = remover(non_matching_output) + if matching_output is not None and not len(matching_output): + matching_output = None + if non_matching_output is not None and not len(non_matching_output): + non_matching_output = None + self.Outputs.matching_data.send(matching_output) self.Outputs.unmatched_data.send(non_matching_output) diff --git a/Orange/widgets/data/tests/test_owselectrows.py b/Orange/widgets/data/tests/test_owselectrows.py index 44ac116ecaf..a96e26dd68a 100644 --- a/Orange/widgets/data/tests/test_owselectrows.py +++ b/Orange/widgets/data/tests/test_owselectrows.py @@ -242,3 +242,20 @@ def widget_with_context(self, domain, conditions): settings = dict(context_settings=[context]) return self.create_widget(OWSelectRows, settings) + + def test_output_filter(self): + """ + None on output when there is no data. + GH-2726 + """ + data = Table("iris")[:10] + len_data = len(data) + self.send_signal(self.widget.Inputs.data, data) + + self.enterFilter(data.domain[0], "is below", "-1") + self.assertIsNone(self.get_output("Matching Data")) + self.assertEqual(len(self.get_output("Unmatched Data")), len_data) + self.widget.remove_all_button.click() + self.enterFilter(data.domain[0], "is below", "10") + self.assertIsNone(self.get_output("Unmatched Data")) + self.assertEqual(len(self.get_output("Matching Data")), len_data)