diff -r cd93fbb75019 -r 89cfe35c12f9 src/eric7/EricWidgets/EricTextEditSearchWidget.py --- a/src/eric7/EricWidgets/EricTextEditSearchWidget.py Sun Jun 23 12:17:40 2024 +0200 +++ b/src/eric7/EricWidgets/EricTextEditSearchWidget.py Sun Jun 23 16:23:36 2024 +0200 @@ -185,6 +185,8 @@ self.setTabOrder(self.wordCheckBox, self.findPrevButton) self.setTabOrder(self.findPrevButton, self.findNextButton) + self.__isActive = False # trace the activation state + def setWidthForHeight(self, widthForHeight): """ Public method to set the 'width for height'. @@ -233,16 +235,11 @@ editType in (EricTextEditType.QTEXTEDIT, EricTextEditType.QTEXTBROWSER) ) self.infoLabel.setVisible(editType == EricTextEditType.QWEBENGINEVIEW) - if editType == EricTextEditType.QWEBENGINEVIEW: - self.__textedit.page().findTextFinished.connect(self.__findTextFinished) def detachTextEdit(self): """ Public method to detach the current text edit. """ - if self.__texteditType == EricTextEditType.QWEBENGINEVIEW: - self.__textedit.page().findTextFinished.disconnect(self.__findTextFinished) - self.__textedit = None self.__texteditType = EricTextEditType.UNKNOWN @@ -254,6 +251,9 @@ self.show() self.findtextCombo.setFocus(Qt.FocusReason.ActiveWindowFocusReason) self.findtextCombo.lineEdit().selectAll() + self.infoLabel.clear() + + self.__isActive = True @pyqtSlot() def deactivate(self): @@ -262,12 +262,17 @@ """ if self.__textedit: self.__textedit.setFocus(Qt.FocusReason.ActiveWindowFocusReason) - if self.__texteditType == EricTextEditType.QWEBENGINEVIEW: + if ( + self.__texteditType == EricTextEditType.QWEBENGINEVIEW + and self.__isActive + ): self.__textedit.findText("") if self.closeButton is not None: self.hide() self.closePressed.emit() + self.__isActive = False + @pyqtSlot() def __closeButtonClicked(self): """ @@ -373,6 +378,9 @@ if not self.__textedit: return + self.show() + self.__isActive = True + self.infoLabel.clear() if self.__texteditType != EricTextEditType.QWEBENGINEVIEW: self.infoLabel.hide() @@ -446,14 +454,17 @@ @param backwards flag indicating a backwards search @type bool """ - from PyQt6.QtWebEngineCore import QWebEnginePage # __IGNORE_WARNING_I102__ + from PyQt6.QtWebEngineCore import QWebEnginePage # noqa: I102 - findFlags = QWebEnginePage.FindFlag(0) - if self.caseCheckBox.isChecked(): - findFlags |= QWebEnginePage.FindFlag.FindCaseSensitively - if backwards: - findFlags |= QWebEnginePage.FindFlag.FindBackward - self.__textedit.findText(self.findtextCombo.currentText(), findFlags) + if self.findtextCombo.currentText(): + findFlags = QWebEnginePage.FindFlag(0) + if self.caseCheckBox.isChecked(): + findFlags |= QWebEnginePage.FindFlag.FindCaseSensitively + if backwards: + findFlags |= QWebEnginePage.FindFlag.FindBackward + self.__textedit.findText( + self.findtextCombo.currentText(), findFlags, self.__findTextFinished + ) def __setFindtextComboBackground(self, error): """ @@ -473,7 +484,9 @@ def __findTextFinished(self, result): """ - Private slot handling the findTextFinished signal of the web page. + Private method handling the find result of the web page search. + + Note: This method is used as the callback of the 'findText()' method call. @param result reference to the QWebEngineFindTextResult object of the last search @@ -481,7 +494,8 @@ """ if result.numberOfMatches() == 0: self.infoLabel.setText( - self.tr("'{0}' was not found.").format(self.findtextCombo.currentText()) + self.tr("'{0}' was not found.") + .format(self.findtextCombo.currentText()) ) self.__setFindtextComboBackground(True) else: