src/eric7/EricWidgets/EricTextEditSearchWidget.py

branch
eric7
changeset 10795
89cfe35c12f9
parent 10439
21c28b0f9e41
child 10807
4bcd4e08418f
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:

eric ide

mercurial