fully worked around bug in Qt
This commit is contained in:
@@ -41,6 +41,7 @@ class InstallerWizard(QtWidgets.QWizard):
|
|||||||
self.install_location.inputRejected.connect(self.install_location.clear)
|
self.install_location.inputRejected.connect(self.install_location.clear)
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
pass #inputRejected signal added in Qt 5.12, I have 5.9
|
pass #inputRejected signal added in Qt 5.12, I have 5.9
|
||||||
|
self.button(self.BackButton).clicked.connect(lambda x: self._location_validator.reset_state())
|
||||||
self.install_location.setValidator(self._location_validator)
|
self.install_location.setValidator(self._location_validator)
|
||||||
self.location_page.registerField("Location*", self.install_location)
|
self.location_page.registerField("Location*", self.install_location)
|
||||||
self.browse_button.clicked.connect(self._select_location)
|
self.browse_button.clicked.connect(self._select_location)
|
||||||
|
|||||||
@@ -13,10 +13,6 @@ class Location_Validator(QtGui.QValidator):
|
|||||||
_previous_location = None
|
_previous_location = None
|
||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
"""for some reason on my Linux system, selecting a directory validates the same location repatedly,
|
|
||||||
once for each subdir of the location. The only way to keep it from repeatedly validating and potentially
|
|
||||||
opening a warning window for each subdirectory in the location path was to track this and return the same
|
|
||||||
value that was returned the last time it was validated."""
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def ntfs_location_selected(self):
|
def ntfs_location_selected(self):
|
||||||
@@ -49,6 +45,9 @@ class Location_Validator(QtGui.QValidator):
|
|||||||
input_ {str} -- The text entered in the installation location QLineEdit widget
|
input_ {str} -- The text entered in the installation location QLineEdit widget
|
||||||
pos {int} -- The current location of the cursor in the QLineEdit widget
|
pos {int} -- The current location of the cursor in the QLineEdit widget
|
||||||
"""
|
"""
|
||||||
|
#there is a very obnoxious, nearly 10 year old bug in QLineEdit that causes validate to be called gratitously and rapidly especially on
|
||||||
|
#non-Windows platforms where it gets called every time the window focus changes. The bug has been in Qt since at least Qt4 and it doesn't
|
||||||
|
#look like anyone cares to fix it, so I did my best to supress gratitious input checking and modal dialog opening
|
||||||
if not input_.strip():
|
if not input_.strip():
|
||||||
_previous_location = input_
|
_previous_location = input_
|
||||||
return (QtGui.QValidator.Intermediate, input_, pos)
|
return (QtGui.QValidator.Intermediate, input_, pos)
|
||||||
@@ -89,3 +88,13 @@ class Location_Validator(QtGui.QValidator):
|
|||||||
self._previous_location = self._location
|
self._previous_location = self._location
|
||||||
|
|
||||||
return (self._disposition, self._location, self._pos,)
|
return (self._disposition, self._location, self._pos,)
|
||||||
|
|
||||||
|
@QtCore.pyqtSlot()
|
||||||
|
def reset_state(self):
|
||||||
|
"""Resets the internal state of the Location_Validator, including the previously validated location
|
||||||
|
"""
|
||||||
|
self._disposition = QtGui.QValidator.Intermediate
|
||||||
|
self._pos = 0
|
||||||
|
self._location = ""
|
||||||
|
self._ntfs_location_selected = False
|
||||||
|
self._previous_location = None
|
||||||
Reference in New Issue
Block a user