Hi, Attached are revised patches to make NSImageView receive -setTarget: -setAction methods and invoke the action when an image on another view is dragged and dropped onto an NSImageView in question. According to two suggestions I got so far, each of whic by Alexander Malmberg and Fred Kiefer respectively, I offer two solutions. This is because I'm not sure which is better and think decision should be made on the basis of broader point of view, which I can't say I have. I appreciate it very much if someone could do it. I hope, at least, these patches help further discussion on the issue by virtue of saving someone's labor. Solution01: Make NSImageCell is a subclass of NSActionCell ---------------------------------------------------------- Changed Files: NSImageCell.h, NSImageView.m, and ChangeLog (pros) Only few lines of code to modify the behavior of NSImageView. (possibly) Doesn't require recompilation of applications. (cons) Doesn't conform to doc. Extra methods inherited from NSActionCell proper. According to the suggestion by Alexander Malmberg, -performSelector is replaced with -sendAction:to:. However, no changes are made in -initWithCoder: or -encodeWithCoder:, because the modification doesn't add new ivars. Also, because -initWithCoder: and -encodeWithCoder: of all relevant classes look fine to me, I'm wondering if they really need to be modified. Solution02: Keep NSImageCell a direct subclass of NSCell and ------------------------------------------------------------ and add new ivars to it ----------------------- Changed Files: NSImageCell.h, NSImageCell.m, NSImageView.m, and ChangeLog (pros) Conforms to doc. (cons) (possibly) Requires recompilation of applications. Though NSImageCell is a direct subclass of NSCell, it receives -setTarget: and -setAction: without raising an exception. A little bit confusing, raising another question, "What is NSActionCell for?" This solution owes to Fred Kiefer's suggestion. Because some new ivars are added to NSImageCell:, -initWithCoder and -encodeWithCoder: are modified so that they can deals with the new ivars properly. The class's version is changed to 2 from 1 to guarantee backward compatibility to some extent. New methods relevant to target/action are also added: most of them are duplication of those found in NSActionCell. The target/action ivars are held in NSImageCell. They are explicitly invoked with -performDragOperation: of NSImageView. This method sets a given new image only if the view is editable. Now an action is in NSImageCell, it might be accidentally/unexpectedly called, dependening on a given situation. If so, this requires another fix on the patches or somewhere in -gui. Some tests on this is highly likely to be needed. - Kazunobu Kuriyama
Solution01.tar.gz
Description: GNU Zip compressed data
Solution02.tar.gz
Description: GNU Zip compressed data_______________________________________________ Bug-gnustep mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/bug-gnustep
