noticed in a matrix of switch buttons in NSTrackModeMatrix mode
selectedRow isn't updated when doing keyboard arrow key stuff
the state changes when deselecting/selecting rows

there still seems to be some drawing artifacts with this patch,
dotted frame rects being left dotted...

this doesn't fix the selectedRow thing for NSHighlightModeMatrix
and i'm not sure the correct thing to do with those on the rest...

if someone knows of any other code using NSTrackModeMatrix,
not sure if this is something which should wait until after the upcoming release
<matrix-kbd.diff>

Index: NSMatrix.m
===================================================================
--- NSMatrix.m  (revision 24288)
+++ NSMatrix.m  (working copy)
@@ -1098,7 +1098,8 @@
 
              if ([aCell state] || isHighlighted)
                {
-                 [aCell setState: NSOffState];
+                 if (_mode != NSTrackModeMatrix) 
+                   [aCell setState: NSOffState];
 
                  if (isHighlighted)
                    {
@@ -1135,7 +1136,9 @@
        {
          if (_selectedCells[i][j])
            {
-             [_cells[i][j] setState: NSOffState];
+             if (_mode != NSTrackModeMatrix) 
+               [_cells[i][j] setState: NSOffState];
+
              _selectedCells[i][j] = NO;
            }
        }
@@ -1172,7 +1175,10 @@
            && [_cells[i][j] isEditable] == NO)
            {
              _selectedCell = _cells[i][j];
-             [_selectedCell setState: NSOnState];
+
+             if (_mode != NSTrackModeMatrix) 
+               [_selectedCell setState: NSOnState];
+
              _selectedCells[i][j] = YES;
 
              _selectedRow = i;
@@ -1211,7 +1217,8 @@
       _selectedColumn = column;
       _selectedCells[row][column] = YES;
 
-      [_selectedCell setState: NSOnState];
+      if (_mode != NSTrackModeMatrix) 
+        [_selectedCell setState: NSOnState];
 
       if (_mode == NSListModeMatrix)
        [aCell setHighlighted: YES];
@@ -3356,7 +3363,8 @@
   BOOL selectCell = NO;
   int h, i, lastDottedRow, lastDottedColumn;
 
-  if (_mode == NSRadioModeMatrix || _mode == NSListModeMatrix)
+  if (_mode == NSRadioModeMatrix || _mode == NSListModeMatrix
+      || _mode == NSTrackModeMatrix)
     selectCell = YES;
 
   if (_dottedRow == -1 || _dottedColumn == -1)
_______________________________________________
Gnustep-dev mailing list
Gnustep-dev@gnu.org
http://lists.gnu.org/mailman/listinfo/gnustep-dev

Reply via email to