discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NSWindowController should be a NSResponder


From: Gregory John Casamento
Subject: Re: NSWindowController should be a NSResponder
Date: Thu, 23 Oct 2008 19:48:11 -0700 (PDT)

Wolfgang,

Each of the objects in gui knows how to archive itself.  Gorm manages the object tree and allows you to edit the objects, but doesn't produce the archive itself... that's done by NSArchiver and NSKeyedArchiver for gorm and nib files respectively.

The change to fix this issue is rather simple.   I believe that the initWithCoder: method in NSWindowController calls the super version of that method.  What needs to be done is to bump the version of the class and make it so that the current version calls super initWithCoder and the old version doesn't.   That should, I believe, solve the issue.

Later, GC
 
Gregory Casamento -- Principal Consultant - OLC, Inc
# GNUstep Chief Maintainer



From: Wolfgang Lux <wolfgang.lux@gmail.com>
To: David Ayers <ayers@fsfe.org>
Cc: Fred Kiefer <fredkiefer@gmx.de>; DISCUSS GNUstep <discuss-gnustep@gnu.org>
Sent: Thursday, October 23, 2008 1:24:25 PM
Subject: Re: NSWindowController should be a NSResponder

David Ayers wrote:

> The change is good and correct for trunk but what's more 
> interesting ist
> that you probably have to consider NSCoding implication for non-keyed
> un/archivers... this seems non trivial to fix.

Archiving, oh yes. Thanks for pointing out that I have overlooked
archiving. By chance, (un)archiving simply continued to work because
the current implementations of -initWithCoder: and -encodeWithCoder:
sloppily do not call their superclass implementations (-inithWithCoder:
uses -init instead). So, we loose the ability to archive the inherited
interfaceStyle and menu attributes of the window controller. When keyed
archiving is used this is trivially fixed by calling the super class
implementations. In order to get non-keyed archiving to work we'll have
to increase the class version number of NSWindowController and depending
on the version used during (un)archiving either call the super class
implementation or use the old implementation, i.e., effectively do
nothing. I have attached a patch below.

Apparently, Gorm must be changed as well to take care of writing
backward compatible archives for older gui versions. Someone out
there willing to implement that before I delve into Gorm's sources?

Wolfgang





reply via email to

[Prev in Thread] Current Thread [Next in Thread]