mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-04-23 07:00:46 +00:00
* Source/NSButtonCell.m ([NSButtonCell -drawInteriorWithFrame:
inView:]): fix mask if cell is highlighted and it isn't in off state. * Source/NSCell.m ([NSCell -trackMouse:inRect:ofView:untilMouseUp:]): set next cell state and send action after -stopTracking: * Source/NSBrowser.m ([NSBrowser -keyDown:]): does nothing for arrow up and down. ([NSBrowser -moveUp:]): removed. ([NSBrowser -moveDown:]): removed. ([NSBrowser -_performLoadOfColumn:]): fix matrix creation, enable matrix autoscroll. ([NSBrowser -_performLoadOfColumn:]): implemented reusesColumns. * Source/NSMatrix.m ([NSMatrix -keyDown:]): implemented keyboard navigation. ([NSMatrix -moveUp:]): likewise. ([NSMatrix -moveDown:]): likewise. ([NSMatrix -moveLeft:]): likewise. ([NSMatrix -moveRight:]): likewise. ([NSMatrix -performClick:]): implemented. ([NSMatrix -mouseDown:]): scroll rect only if autoscroll is enabled, do not hightlight a cell directly but use the matrix method. Now it handles only NSListModeMatrix mode to reduce complexity introduced by other modes. ([NSMatrix -_mouseDownNonListMode:]): fixed. ([NSMatrix -highlightCell:atRow:column:]): enable the cell dotted outline. ([NSMatrix -drawCellAtRow:column:]): likewise. ([NSMatrix -drawRect:]): removed drawing of dotted outline. Rewritten due to changes in -getRow:column:forPoint: ([NSMatrix -getRow:column:forPoint:]): set row and column to -1 if point is not inside a cell. ([NSMatrix -_selectCell:atRow:column:]): use mnemonic value for cell state, does not enable dotted outline and check for nil aCell. ([NSMatrix -selectTextAtRow:column:]): likewise. ([NSMatrix -_setState:highlight:startIndex:endIndex:]): use matrix highlightCell: method and mnemonic for cell state. ([NSMatrix -deselectAllCells]): likewise. ([NSMatrix -selectAll:]): likewise. ([NSMatrix -setSelectionFrom:to:anchor:highlight:]): likewise. ([NSMatrix -performKeyEquivalent:]): select next cell state. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@9594 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
8ea14cc868
commit
f005f68b2c
5 changed files with 933 additions and 475 deletions
45
ChangeLog
45
ChangeLog
|
@ -1,3 +1,48 @@
|
|||
2001-04-16 Mirko Viviani <mirko.viviani@rccr.cremona.it>
|
||||
|
||||
* Source/NSButtonCell.m ([NSButtonCell -drawInteriorWithFrame:
|
||||
inView:]): fix mask if cell is highlighted and it isn't in off state.
|
||||
|
||||
* Source/NSCell.m ([NSCell -trackMouse:inRect:ofView:untilMouseUp:]):
|
||||
set next cell state and send action after -stopTracking:
|
||||
|
||||
* Source/NSBrowser.m ([NSBrowser -keyDown:]): does nothing for arrow up
|
||||
and down.
|
||||
([NSBrowser -moveUp:]): removed.
|
||||
([NSBrowser -moveDown:]): removed.
|
||||
([NSBrowser -_performLoadOfColumn:]): fix matrix creation, enable
|
||||
matrix autoscroll.
|
||||
([NSBrowser -_performLoadOfColumn:]): implemented reusesColumns.
|
||||
|
||||
* Source/NSMatrix.m ([NSMatrix -keyDown:]): implemented keyboard
|
||||
navigation.
|
||||
([NSMatrix -moveUp:]): likewise.
|
||||
([NSMatrix -moveDown:]): likewise.
|
||||
([NSMatrix -moveLeft:]): likewise.
|
||||
([NSMatrix -moveRight:]): likewise.
|
||||
([NSMatrix -performClick:]): implemented.
|
||||
([NSMatrix -mouseDown:]): scroll rect only if autoscroll is enabled,
|
||||
do not hightlight a cell directly but use the matrix method.
|
||||
Now it handles only NSListModeMatrix mode to reduce complexity
|
||||
introduced by other modes.
|
||||
([NSMatrix -_mouseDownNonListMode:]): fixed.
|
||||
([NSMatrix -highlightCell:atRow:column:]): enable the cell dotted
|
||||
outline.
|
||||
([NSMatrix -drawCellAtRow:column:]): likewise.
|
||||
([NSMatrix -drawRect:]): removed drawing of dotted outline. Rewritten
|
||||
due to changes in -getRow:column:forPoint:
|
||||
([NSMatrix -getRow:column:forPoint:]): set row and column to -1 if
|
||||
point is not inside a cell.
|
||||
([NSMatrix -_selectCell:atRow:column:]): use mnemonic value for cell
|
||||
state, does not enable dotted outline and check for nil aCell.
|
||||
([NSMatrix -selectTextAtRow:column:]): likewise.
|
||||
([NSMatrix -_setState:highlight:startIndex:endIndex:]): use matrix
|
||||
highlightCell: method and mnemonic for cell state.
|
||||
([NSMatrix -deselectAllCells]): likewise.
|
||||
([NSMatrix -selectAll:]): likewise.
|
||||
([NSMatrix -setSelectionFrom:to:anchor:highlight:]): likewise.
|
||||
([NSMatrix -performKeyEquivalent:]): select next cell state.
|
||||
|
||||
2001-04-15 Adam Fedor <fedor@gnu.org>
|
||||
|
||||
* Source/NSView.m (_invalidateCoordinates): release the gstate.
|
||||
|
|
|
@ -2539,148 +2539,6 @@ static float scrollerWidth; // == [NSScroller scrollerWidth]
|
|||
{
|
||||
}
|
||||
|
||||
- (void)moveUp:(id)sender
|
||||
{
|
||||
if (_acceptsArrowKeys == YES)
|
||||
{
|
||||
NSArray *cells;
|
||||
NSMatrix *matrix;
|
||||
NSBrowserCell *selectedCell;
|
||||
BOOL firstPass = YES;
|
||||
int selectedRow, oldSelectedRow, selectedColumn, numberOfRows;
|
||||
|
||||
selectedColumn = [self selectedColumn];
|
||||
if (selectedColumn == -1)
|
||||
{
|
||||
matrix = [self matrixInColumn: 0];
|
||||
cells = [matrix cells];
|
||||
numberOfRows = [cells count];
|
||||
oldSelectedRow = selectedRow = numberOfRows - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
matrix = [self matrixInColumn: selectedColumn];
|
||||
cells = [matrix cells];
|
||||
numberOfRows = [cells count];
|
||||
oldSelectedRow = selectedRow = [matrix selectedRow];
|
||||
}
|
||||
|
||||
while (1)
|
||||
{
|
||||
if (selectedColumn == -1)
|
||||
{
|
||||
if (numberOfRows)
|
||||
{
|
||||
[matrix selectCellAtRow: selectedRow column: 0];
|
||||
[_window makeFirstResponder: matrix];
|
||||
[self doClick: matrix];
|
||||
selectedColumn = 0;
|
||||
}
|
||||
else
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!selectedRow)
|
||||
{
|
||||
numberOfRows = [cells count];
|
||||
if(numberOfRows <= 1)
|
||||
return;
|
||||
|
||||
selectedRow = numberOfRows;
|
||||
firstPass = NO;
|
||||
}
|
||||
|
||||
selectedRow--;
|
||||
|
||||
[matrix deselectAllCells];
|
||||
[matrix selectCellAtRow: selectedRow column: 0];
|
||||
[_window makeFirstResponder: matrix];
|
||||
[self doClick: matrix];
|
||||
}
|
||||
|
||||
selectedCell = [matrix selectedCell];
|
||||
|
||||
if (selectedCell ||
|
||||
(firstPass == NO && selectedRow == oldSelectedRow))
|
||||
break;
|
||||
}
|
||||
|
||||
if (_sendsActionOnArrowKeys == YES)
|
||||
[super sendAction: _action to: _target];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)moveDown:(id)sender
|
||||
{
|
||||
if (_acceptsArrowKeys)
|
||||
{
|
||||
NSArray *cells;
|
||||
NSMatrix *matrix;
|
||||
NSBrowserCell *selectedCell;
|
||||
BOOL firstPass = YES;
|
||||
int selectedRow, oldSelectedRow, selectedColumn, numberOfRows;
|
||||
|
||||
selectedColumn = [self selectedColumn];
|
||||
if (selectedColumn == -1)
|
||||
{
|
||||
matrix = [self matrixInColumn: 0];
|
||||
oldSelectedRow = selectedRow = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
matrix = [self matrixInColumn: selectedColumn];
|
||||
oldSelectedRow = selectedRow = [matrix selectedRow];
|
||||
}
|
||||
|
||||
cells = [matrix cells];
|
||||
numberOfRows = [cells count];
|
||||
|
||||
while (1)
|
||||
{
|
||||
if (selectedColumn == -1)
|
||||
{
|
||||
if (numberOfRows)
|
||||
{
|
||||
[matrix selectCellAtRow: 0 column: 0];
|
||||
[_window makeFirstResponder: matrix];
|
||||
[self doClick: matrix];
|
||||
selectedColumn = 0;
|
||||
}
|
||||
else
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
selectedRow++;
|
||||
|
||||
if (selectedRow >= numberOfRows)
|
||||
{
|
||||
if (numberOfRows <= 1)
|
||||
return;
|
||||
|
||||
selectedRow = 0;
|
||||
firstPass = NO;
|
||||
}
|
||||
|
||||
[matrix deselectAllCells];
|
||||
[matrix selectCellAtRow: selectedRow column: 0];
|
||||
[_window makeFirstResponder: matrix];
|
||||
[self doClick: matrix];
|
||||
}
|
||||
|
||||
selectedCell = [matrix selectedCell];
|
||||
|
||||
if (selectedCell ||
|
||||
(firstPass == NO && selectedRow == oldSelectedRow))
|
||||
break;
|
||||
}
|
||||
|
||||
if (_sendsActionOnArrowKeys == YES)
|
||||
[super sendAction: _action to: _target];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)moveLeft:(id)sender
|
||||
{
|
||||
if (_acceptsArrowKeys)
|
||||
|
@ -2768,10 +2626,7 @@ static float scrollerWidth; // == [NSScroller scrollerWidth]
|
|||
switch (character)
|
||||
{
|
||||
case NSUpArrowFunctionKey:
|
||||
[self moveUp:self];
|
||||
return;
|
||||
case NSDownArrowFunctionKey:
|
||||
[self moveDown:self];
|
||||
return;
|
||||
case NSLeftArrowFunctionKey:
|
||||
[self moveLeft:self];
|
||||
|
@ -3025,7 +2880,7 @@ static float scrollerWidth; // == [NSScroller scrollerWidth]
|
|||
|
||||
- (void)_performLoadOfColumn: (int)column
|
||||
{
|
||||
id bc, sc, matrix = nil;
|
||||
id bc, sc, matrix;
|
||||
NSRect matrixRect = {{0, 0}, {100, 100}};
|
||||
NSSize matrixIntercellSpace = {0, 0};
|
||||
|
||||
|
@ -3038,28 +2893,37 @@ static float scrollerWidth; // == [NSScroller scrollerWidth]
|
|||
if (!(sc = [bc columnScrollView]))
|
||||
return;
|
||||
|
||||
matrix = [bc columnMatrix];
|
||||
|
||||
// Loading is different based upon passive/active delegate
|
||||
if (_passiveDelegate)
|
||||
{
|
||||
// Ask the delegate for the number of rows
|
||||
int n = [_browserDelegate browser: self numberOfRowsInColumn: column];
|
||||
int i, n = [_browserDelegate browser: self numberOfRowsInColumn: column];
|
||||
|
||||
if (_reusesColumns)
|
||||
if (_reusesColumns && matrix)
|
||||
{
|
||||
[matrix renewRows: n columns: 1];
|
||||
[sc setDocumentView: matrix];
|
||||
|
||||
for (i = 0; i < n; i++)
|
||||
{
|
||||
[[matrix cellAtRow: i column: 0] setLoaded: NO];
|
||||
[self loadedCellAtRow: i column: column];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int i;
|
||||
|
||||
// create a new col matrix
|
||||
matrix = [_browserMatrixClass alloc];
|
||||
matrix = [matrix initWithFrame: matrixRect
|
||||
mode: NSListModeMatrix
|
||||
prototype: _browserCellPrototype
|
||||
numberOfRows: n
|
||||
numberOfColumns: 1];
|
||||
matrix = [[_browserMatrixClass alloc]
|
||||
initWithFrame: matrixRect
|
||||
mode: NSListModeMatrix
|
||||
prototype: _browserCellPrototype
|
||||
numberOfRows: n
|
||||
numberOfColumns: 1];
|
||||
[matrix setIntercellSpacing:matrixIntercellSpace];
|
||||
[matrix setAllowsEmptySelection: _allowsEmptySelection];
|
||||
[matrix setAutoscroll: YES];
|
||||
if (!_allowsMultipleSelection)
|
||||
{
|
||||
[matrix setMode: NSRadioModeMatrix];
|
||||
|
@ -3082,20 +2946,27 @@ static float scrollerWidth; // == [NSScroller scrollerWidth]
|
|||
}
|
||||
else
|
||||
{
|
||||
if (_reusesColumns)
|
||||
if (_reusesColumns && matrix)
|
||||
{
|
||||
[matrix renewRows: 0 columns: 1];
|
||||
[sc setDocumentView: matrix];
|
||||
|
||||
[_browserDelegate browser: self
|
||||
createRowsForColumn: column
|
||||
inMatrix: matrix];
|
||||
}
|
||||
else
|
||||
{
|
||||
// create a new col matrix
|
||||
matrix = [_browserMatrixClass alloc];
|
||||
[matrix initWithFrame: matrixRect
|
||||
mode: NSRadioModeMatrix
|
||||
prototype: _browserCellPrototype
|
||||
numberOfRows: 0
|
||||
numberOfColumns: 0];
|
||||
matrix = [[_browserMatrixClass alloc]
|
||||
initWithFrame: matrixRect
|
||||
mode: NSRadioModeMatrix
|
||||
prototype: _browserCellPrototype
|
||||
numberOfRows: 0
|
||||
numberOfColumns: 0];
|
||||
[matrix setIntercellSpacing:matrixIntercellSpace];
|
||||
[matrix setAllowsEmptySelection: _allowsEmptySelection];
|
||||
[matrix setAutoscroll: YES];
|
||||
if (_allowsMultipleSelection)
|
||||
{
|
||||
[matrix setMode: NSListModeMatrix];
|
||||
|
|
|
@ -602,7 +602,12 @@
|
|||
[controlView lockFocus];
|
||||
|
||||
if (_cell.is_highlighted)
|
||||
mask = _highlightsByMask;
|
||||
{
|
||||
mask = _highlightsByMask;
|
||||
|
||||
if (_cell.state)
|
||||
mask &= ~_showAltStateMask;
|
||||
}
|
||||
else if (_cell.state)
|
||||
mask = _showAltStateMask;
|
||||
else
|
||||
|
|
|
@ -1282,9 +1282,6 @@ static NSColor *shadowCol;
|
|||
NSDebugLog(@"NSCell mouse went up\n");
|
||||
mouseWentUp = YES;
|
||||
done = YES;
|
||||
[self setState: !_cell.state];
|
||||
if ((_action_mask & NSLeftMouseUpMask))
|
||||
[(NSControl*)controlView sendAction: action to: target];
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1305,6 +1302,13 @@ static NSColor *shadowCol;
|
|||
if (_cell.is_continuous)
|
||||
[NSEvent stopPeriodicEvents];
|
||||
|
||||
if (mouseWentUp)
|
||||
{
|
||||
[self setNextState];
|
||||
if ((_action_mask & NSLeftMouseUpMask))
|
||||
[(NSControl*)controlView sendAction: action to: target];
|
||||
}
|
||||
|
||||
// Return YES only if the mouse went up within the cell
|
||||
if (mouseWentUp && (flag || [controlView mouse: point inRect: cellFrame]))
|
||||
{
|
||||
|
|
1149
Source/NSMatrix.m
1149
Source/NSMatrix.m
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue