Skip to content

Commit ecbbe9e

Browse files
authored
Merge pull request #4405 from VesnaT/same_domain_fix
[FIX] DataProjectionWidget: Update combos on new data
2 parents f96e566 + d15c24f commit ecbbe9e

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

Orange/widgets/visualize/tests/test_owprojectionwidget.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from Orange.widgets.tests.base import (
1212
WidgetTest, WidgetOutputsTestMixin, ProjectionWidgetTestMixin
1313
)
14+
from Orange.widgets.utils.colorpalettes import ContinuousPalettes
1415
from Orange.widgets.visualize.utils.widget import (
1516
OWDataProjectionWidget, OWProjectionWidgetBase
1617
)
@@ -230,6 +231,23 @@ def test_unconditional_commit_on_new_signal(self):
230231
self.send_signal(self.widget.Inputs.data, self.data)
231232
commit.assert_called()
232233

234+
def test_model_update(self):
235+
widget = self.widget
236+
237+
data = Table("iris")
238+
domain = data.domain
239+
240+
self.send_signal(widget.Inputs.data, data)
241+
self.assertIs(widget.controls.attr_color.model()[4], domain[0])
242+
243+
copy0 = domain[0].copy()
244+
assert copy0.palette.name != "linear_kryw_0_100_c71"
245+
copy0.palette = ContinuousPalettes["linear_kryw_0_100_c71"]
246+
domain = Domain((copy0, ) + domain.attributes[1:], domain.class_var)
247+
data0 = data.transform(domain)
248+
self.send_signal(widget.Inputs.data, data0)
249+
self.assertIs(widget.controls.attr_color.model()[4], copy0)
250+
233251

234252
if __name__ == "__main__":
235253
unittest.main()

Orange/widgets/visualize/utils/widget.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -430,13 +430,10 @@ def effective_data(self):
430430
def set_data(self, data):
431431
data_existed = self.data is not None
432432
effective_data = self.effective_data if data_existed else None
433-
same_domain = (data_existed and data is not None and
434-
data.domain.checksum() == self.data.domain.checksum())
435433
self.closeContext()
436434
self.data = data
437435
self.check_data()
438-
if not same_domain:
439-
self.init_attr_values()
436+
self.init_attr_values()
440437
self.openContext(self.data)
441438
self._invalidated = not (
442439
data_existed and self.data is not None and

0 commit comments

Comments
 (0)