[3.11] gh-57795: IDLE: Enter the selected text when opening the "Replace" dialog (GH-17593) (GH-113515)

(cherry picked from commit 712afab5ac)

Co-authored-by: Zackery Spytz <zspytz@gmail.com>
Co-authored-by: Roger Serwy <roger.serwy@gmail.com>
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
This commit is contained in:
Miss Islington (bot) 2023-12-27 15:43:59 +01:00 committed by GitHub
parent 050d50a28d
commit a1f0118a26
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 16 deletions

View file

@ -26,7 +26,8 @@ def replace(text, insert_tags=None):
if not hasattr(engine, "_replacedialog"):
engine._replacedialog = ReplaceDialog(root, engine)
dialog = engine._replacedialog
dialog.open(text, insert_tags=insert_tags)
searchphrase = text.get("sel.first", "sel.last")
dialog.open(text, searchphrase, insert_tags=insert_tags)
class ReplaceDialog(SearchDialogBase):
@ -52,27 +53,17 @@ class ReplaceDialog(SearchDialogBase):
self.replvar = StringVar(root)
self.insert_tags = None
def open(self, text, insert_tags=None):
def open(self, text, searchphrase=None, *, insert_tags=None):
"""Make dialog visible on top of others and ready to use.
Also, highlight the currently selected text and set the
search to include the current selection (self.ok).
Also, set the search to include the current selection
(self.ok).
Args:
text: Text widget being searched.
searchphrase: String phrase to search.
"""
SearchDialogBase.open(self, text)
try:
first = text.index("sel.first")
except TclError:
first = None
try:
last = text.index("sel.last")
except TclError:
last = None
first = first or text.index("insert")
last = last or first
self.show_hit(first, last)
SearchDialogBase.open(self, text, searchphrase)
self.ok = True
self.insert_tags = insert_tags