bpo-33768: IDLE: Clicking on code context line moves it to top of editor (GH-7411)

This commit is contained in:
Cheryl Sabella 2018-06-08 01:21:15 -04:00 committed by Terry Jan Reedy
parent 4aa3006619
commit 041272b657
3 changed files with 50 additions and 0 deletions

View file

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