From f46f8984253dba861ab4017b2ee6886554fe428d Mon Sep 17 00:00:00 2001 From: Ales Erjavec Date: Wed, 5 Oct 2016 18:30:32 +0200 Subject: [PATCH 1/2] gui: Restore edit change tracking in gui.lineEdit Invoke callbacks on `focusOutEvent` only if text actually changed. This restores behaviour prior to 8f3968d5dfa1848b1e7a3d271df8fb344102d7d0 --- Orange/widgets/gui.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/Orange/widgets/gui.py b/Orange/widgets/gui.py index 22210a40cbb..252217dd031 100644 --- a/Orange/widgets/gui.py +++ b/Orange/widgets/gui.py @@ -779,18 +779,31 @@ def __init__(self, parent, callback, focusInCallback=None): self.callback = callback self.focusInCallback = focusInCallback self.returnPressed.connect(self.returnPressedHandler) + # did the text change between focus enter and leave + self.__changed = False + self.textEdited.connect(self.__textEdited) + + def __textEdited(self): + self.__changed = True def returnPressedHandler(self): - if hasattr(self, "cback") and self.cback: - self.cback(self.text()) - if self.callback: - self.callback() + if self.__changed: + self.__changed = False + if hasattr(self, "cback") and self.cback: + self.cback(self.text()) + if self.callback: + self.callback() + + def setText(self, text): + self.__changed = False + super().setText(text) def focusOutEvent(self, *e): super().focusOutEvent(*e) self.returnPressedHandler() def focusInEvent(self, *e): + self.__changed = False if self.focusInCallback: self.focusInCallback() return super().focusInEvent(*e) From 5c0986e33c8a499e2a37f6c0c4c58433b78bad75 Mon Sep 17 00:00:00 2001 From: Ales Erjavec Date: Wed, 5 Oct 2016 18:42:14 +0200 Subject: [PATCH 2/2] gui: Remove no longer necessary container widget/layout --- Orange/widgets/gui.py | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/Orange/widgets/gui.py b/Orange/widgets/gui.py index 252217dd031..fe9075c5f92 100644 --- a/Orange/widgets/gui.py +++ b/Orange/widgets/gui.py @@ -852,10 +852,8 @@ def lineEdit(widget, master, value, label=None, labelWidth=None, b = widgetBox(widget, box, orientation, addToLayout=False) if label is not None: widgetLabel(b, label, labelWidth) - hasHBox = _is_horizontal(orientation) else: b = widget - hasHBox = False baseClass = misc.pop("baseClass", None) if baseClass: @@ -863,13 +861,7 @@ def lineEdit(widget, master, value, label=None, labelWidth=None, if b is not widget: b.layout().addWidget(ledit) elif focusInCallback or callback and not callbackOnType: - if not hasHBox: - outer = hBox(b, addToLayout=(b is not widget)) - if b is widget: - b = outer - else: - outer = b - ledit = LineEditWFocusOut(outer, callback, focusInCallback) + ledit = LineEditWFocusOut(b, callback, focusInCallback) else: ledit = QtGui.QLineEdit(b) if b is not widget: