Fix the following bug:

- When dragging the mouse in either listbox, the *first* entry
clicked on is selected rather than the last (but the last one is
highlighted).

This is done by changing the bindtags so that our binding is executed
after the default binding (which sets the 'active' index to the last
item selected), and using 'active' instead of 'anchor' as the index to
ask for.
This commit is contained in:
Guido van Rossum 1997-01-03 23:39:26 +00:00
parent bf0c3ca9bd
commit 7fc0bf8247
2 changed files with 12 additions and 8 deletions

View file

@ -11,8 +11,6 @@
from Tkinter import *
from Dialog import Dialog
ANCHOR = 'anchor'
import os
import fnmatch
@ -73,6 +71,8 @@ def __init__(self, master, title=None):
self.files = Listbox(self.midframe, exportselection=0,
yscrollcommand=(self.filesbar, 'set'))
self.files.pack(side=RIGHT, expand=YES, fill=BOTH)
btags = self.files.bindtags()
self.files.bindtags(btags[1:] + btags[:1])
self.files.bind('<ButtonRelease-1>', self.files_select_event)
self.files.bind('<Double-ButtonRelease-1>', self.files_double_event)
self.filesbar.config(command=(self.files, 'yview'))
@ -83,6 +83,8 @@ def __init__(self, master, title=None):
yscrollcommand=(self.dirsbar, 'set'))
self.dirs.pack(side=LEFT, expand=YES, fill=BOTH)
self.dirsbar.config(command=(self.dirs, 'yview'))
btags = self.dirs.bindtags()
self.dirs.bindtags(btags[1:] + btags[:1])
self.dirs.bind('<ButtonRelease-1>', self.dirs_select_event)
self.dirs.bind('<Double-ButtonRelease-1>', self.dirs_double_event)
@ -133,7 +135,7 @@ def dirs_double_event(self, event):
def dirs_select_event(self, event):
dir, pat = self.get_filter()
subdir = self.dirs.get(ANCHOR)
subdir = self.dirs.get('active')
dir = os.path.normpath(os.path.join(self.directory, subdir))
self.set_filter(dir, pat)
@ -141,7 +143,7 @@ def files_double_event(self, event):
self.ok_command()
def files_select_event(self, event):
file = self.files.get(ANCHOR)
file = self.files.get('active')
self.set_selection(file)
def ok_event(self, event):