From 3b4a1570d460ca45b5233b777887630480401bf6 Mon Sep 17 00:00:00 2001 From: Alexander Malmberg Date: Tue, 13 Apr 2004 22:42:30 +0000 Subject: [PATCH] (-keyDown:): When the user selects a cell by typing a partial name, make sure all other cells are deselected. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@19090 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 6 ++++++ Source/NSBrowser.m | 46 +++++++++++++++++++++++++++------------------- 2 files changed, 33 insertions(+), 19 deletions(-) diff --git a/ChangeLog b/ChangeLog index ede41dd55..55bca7d12 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-04-14 00:36 Alexander Malmberg + + * Source/NSBrowser.m (-keyDown:): When the user selects a cell + by typing a partial name, make sure all other cells are + deselected. + 2004-04-13 Quentin Mathe * Source/NSToolbarItem.m: diff --git a/Source/NSBrowser.m b/Source/NSBrowser.m index f1786bf8d..3933e5008 100644 --- a/Source/NSBrowser.m +++ b/Source/NSBrowser.m @@ -2254,10 +2254,11 @@ static NSTextFieldCell *titleCell; NSMatrix *matrix; NSString *sv; int i, n, s; + int match; int selectedColumn; SEL lcarcSel = @selector(loadedCellAtRow:column:); IMP lcarc = [self methodForSelector: lcarcSel]; - + selectedColumn = [self selectedColumn]; if(selectedColumn != -1) { @@ -2290,7 +2291,7 @@ static NSTextFieldCell *titleCell; RETAIN(_charBuffer); } } - + _alphaNumericalLastColumn = selectedColumn; _lastKeyPressed = [theEvent timestamp]; @@ -2300,35 +2301,42 @@ static NSTextFieldCell *titleCell; if (([sv length] > 0) && ([sv hasPrefix: _charBuffer])) return; - - for (i = s+1; i < n; i++) + + match = -1; + for (i = s + 1; i < n; i++) { sv = [((*lcarc)(self, lcarcSel, i, selectedColumn)) stringValue]; if (([sv length] > 0) && ([sv hasPrefix: _charBuffer])) { - [self selectRow: i - inColumn: selectedColumn]; - [matrix scrollCellToVisibleAtRow: i column: 0]; - [matrix performClick: self]; - return; + match = i; + break; } } - for (i = 0; i < s; i++) + if (i == n) { - sv = [((*lcarc)(self, lcarcSel, i, selectedColumn)) - stringValue]; - if (([sv length] > 0) - && ([sv hasPrefix: _charBuffer])) + for (i = 0; i < s; i++) { - [self selectRow: i - inColumn: selectedColumn]; - [matrix scrollCellToVisibleAtRow: i column: 0]; - [matrix performClick: self]; - return; + sv = [((*lcarc)(self, lcarcSel, i, selectedColumn)) + stringValue]; + if (([sv length] > 0) + && ([sv hasPrefix: _charBuffer])) + { + match = i; + break; + } } } + if (match != -1) + { + [matrix deselectAllCells]; + [self selectRow: match + inColumn: selectedColumn]; + [matrix scrollCellToVisibleAtRow: match column: 0]; + [matrix performClick: self]; + return; + } } _lastKeyPressed = 0.; }