--- a/Tools_BrowserList.st Tue Oct 18 19:18:25 2011 +0200
+++ b/Tools_BrowserList.st Tue Oct 18 21:43:54 2011 +0200
@@ -1501,7 +1501,22 @@
keyPress:key x:x y:y view:aView
+ | v |
+
aView == listView ifTrue:[
+
+ "Forward the event to the view under pointer.
+ Therefore, the seach is started only iff the
+ pointer points to the list. Based on experience,
+ this improves usability because: does not require
+ to click in the list to focus it (which may change
+ the selection)"
+ (v := aView windowGroup pointerView) ~~ aView ifTrue:[
+ aView windowGroup focusView: v.
+ v sensor keyPress:key x:x y:y view:v.
+ ^self.
+ ].
+
searchWindow isNil ifTrue:[
key isCharacter ifTrue:[
searchHolder setValue: key asString.
@@ -1596,8 +1611,11 @@
filter
- ^[:entry|
- entry asString startsWith: searchHolder value
+ | pattern |
+ pattern := StringPattern fromString: searchHolder value.
+
+ ^[:entry :relax|
+ pattern match: entry asString trimSeparators relax: relax
]
"Created: / 27-07-2011 / 22:18:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -1679,7 +1697,15 @@
| filter filteredList |
filter := self filter.
- filteredList := listHolder value select:[:each|filter value: each].
+
+ filteredList := listHolder value select:[:each|filter value: each value: 1].
+ filteredList isEmpty ifTrue:[
+ filteredList := listHolder value select:[:each|filter value: each value: 2].
+ filteredList isEmpty ifTrue:[
+ filteredList := listHolder value select:[:each|filter value: each value: 3].
+ ]].
+
+
listView listHolder == listHolder ifTrue:[
listView listHolder: (ValueHolder with: filteredList)
] ifFalse:[
@@ -1731,5 +1757,5 @@
!BrowserList class methodsFor:'documentation'!
version_CVS
- ^ '$Header: /cvs/stx/stx/libtool/Tools_BrowserList.st,v 1.36 2011-08-02 08:24:50 vrany Exp $'
+ ^ '$Header: /cvs/stx/stx/libtool/Tools_BrowserList.st,v 1.37 2011-10-18 19:43:54 vrany Exp $'
! !