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

Co-authored-by: Roger Serwy <roger.serwy@gmail.com>
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
This commit is contained in:
Zackery Spytz 2023-12-27 06:27:40 -08:00 committed by GitHub
parent 1ddd773293
commit 712afab5ac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 16 deletions

View File

@ -25,7 +25,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):
@ -51,27 +52,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

View File

@ -0,0 +1 @@
Enter the selected text when opening the "Replace" dialog.