src/eric7/QScintilla/SearchReplaceWidget.py

branch
eric7
changeset 10040
b5ef1a93cd1a
parent 10039
3a47235d3469
child 10187
cd500ea7f787
diff -r 3a47235d3469 -r b5ef1a93cd1a src/eric7/QScintilla/SearchReplaceWidget.py
--- a/src/eric7/QScintilla/SearchReplaceWidget.py	Fri May 19 14:25:31 2023 +0200
+++ b/src/eric7/QScintilla/SearchReplaceWidget.py	Fri May 19 15:09:24 2023 +0200
@@ -138,12 +138,15 @@
         )
 
         self.__currentEditor = None
+        self.__replaceMode = False
 
         self.findtextCombo.lineEdit().textEdited.connect(self.__quickSearch)
         self.caseCheckBox.toggled.connect(self.__updateQuickSearchMarkers)
         self.wordCheckBox.toggled.connect(self.__updateQuickSearchMarkers)
         self.regexpCheckBox.toggled.connect(self.__updateQuickSearchMarkers)
 
+        self.replacetextCombo.installEventFilter(self)
+
         self.__findtextComboStyleSheet = self.findtextCombo.styleSheet()
 
         # define actions
@@ -236,6 +239,39 @@
         self.__selections = []
         self.__finding = False
 
+    def eventFilter(self, obj, evt):
+        """
+        Public method to handle events for other objects.
+
+        @param obj reference to the object
+        @type QObject
+        @param evt reference to the event
+        @type QEvent
+        @return flag indicating that the event should be filtered out
+        @rtype bool
+        """
+        if (
+            obj is self.replacetextCombo
+            and evt.type() == QEvent.Type.FocusIn
+            and self.__replaceMode
+        ):
+            if not bool(self.replacetextCombo.currentText()):
+                self.replacetextCombo.setCurrentText(self.findtextCombo.currentText())
+            self.replacetextCombo.lineEdit().selectAll()
+            return True
+
+        return super().eventFilter(obj, evt)
+
+    def changeEvent(self, evt):
+        """
+        Protected method handling state changes.
+
+        @param evt event containing the state change
+        @type QEvent
+        """
+        if evt.type() == QEvent.Type.FontChange:
+            self.adjustSize()
+
     def __setShortcuts(self):
         """
         Private method to set the local action's shortcuts to the same key
@@ -346,16 +382,6 @@
         self.replaceAllButton.setEnabled(enable)
         self.replaceAllAct.setEnabled(enable)
 
-    def changeEvent(self, evt):
-        """
-        Protected method handling state changes.
-
-        @param evt event containing the state change
-        @type QEvent
-        """
-        if evt.type() == QEvent.Type.FontChange:
-            self.adjustSize()
-
     def __selectionBoundary(self, selections=None):
         """
         Private method to calculate the current selection boundary.
@@ -1048,8 +1074,8 @@
         """
         Private method to replace one occurrence of text.
 
-        @param searchNext flag indicating to search for the next occurrence
-        (boolean).
+        @param searchNext flag indicating to search for the next occurrence.
+        @type bool
         """
         self.__finding = True
 
@@ -1310,6 +1336,8 @@
         @type bool (optional)
         """
         super().hide()
+
+        self.__replaceMode = replaceMode
         if replaceMode:
             self.__showReplace(text)
         else:

eric ide

mercurial