In the current situation NSCell performClick: method doesn't work with
NSMatrix and cannot be used for an NSCell subclass with embedded cells.
Here is a screenshot for the issue with NSMatrix when you call
performClick: on a cell :
… before the performClick: call
http://www.quentinmathe.com/gnustep/work/matrix_before_click.jpg
After the performClick: call
http://www.quentinmathe.com/gnustep/work/matrix_after_click.jpg
To fix this issue, I'm proposing the patches set below. The idea is to
have an NSControl method which can return the frame for the cell passed
as a parameter, and to have also a such method for NSCell in order to
allow NSCell subclasses to embed other cells (like in NSComboBoxCell
which I'm currently trying to rewrite).
Then the situation will be :
Each NSControl knows which is the frame for its cells...
Similarly at the cell level, each NSCell knows which is the frame
(relative to the control view) for its subcells.
To implement this proposal, I have created a protocol GSCellContainer
with one method -frameForCell: which is implemented by NSControl and
NSCell class, and this NSCell class implements a method -container which
returns the container for itself : the container can be a cell or a
control (when supercell ivar is nil).