mirror of
https://github.com/python/cpython.git
synced 2025-10-10 00:43:41 +00:00
bpo-33768: IDLE: Clicking on code context line moves it to top of editor (GH-7411)
This commit is contained in:
parent
4aa3006619
commit
041272b657
3 changed files with 50 additions and 0 deletions
|
@ -117,6 +117,7 @@ class CodeContext:
|
|||
height=1,
|
||||
width=1, # Don't request more than we get.
|
||||
padx=padx, border=border, relief=SUNKEN, state='disabled')
|
||||
self.context.bind('<ButtonRelease-1>', self.jumptoline)
|
||||
# Pack the context widget before and above the text_frame widget,
|
||||
# thus ensuring that it will appear directly above text_frame.
|
||||
self.context.pack(side=TOP, fill=X, expand=False,
|
||||
|
@ -196,6 +197,20 @@ class CodeContext:
|
|||
self.context.insert('end', '\n'.join(context_strings[showfirst:]))
|
||||
self.context['state'] = 'disabled'
|
||||
|
||||
def jumptoline(self, event=None):
|
||||
"Show clicked context line at top of editor."
|
||||
lines = len(self.info)
|
||||
if lines == 1: # No context lines are showing.
|
||||
newtop = 1
|
||||
else:
|
||||
# Line number clicked.
|
||||
contextline = int(float(self.context.index('insert')))
|
||||
# Lines not displayed due to maxlines.
|
||||
offset = max(1, lines - self.context_depth) - 1
|
||||
newtop = self.info[offset + contextline][0]
|
||||
self.text.yview(f'{newtop}.0')
|
||||
self.update_code_context()
|
||||
|
||||
def timer_event(self):
|
||||
"Event on editor text widget triggered every UPDATEINTERVAL ms."
|
||||
if self.context:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue