--- 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: