[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: NSTextView -initWithCoder, recent changes not working
From: |
Gregory Casamento |
Subject: |
Re: NSTextView -initWithCoder, recent changes not working |
Date: |
Mon, 29 Jun 2009 10:28:11 -0400 |
Those were only to resolve the immediate issue of the crash. I need
to revisit this change to correct the issue.
On Monday, June 29, 2009, Fred Kiefer wrote:
> I don't think that scattering a fee RETAINs in the code will resolve the
> underlying problem.
> The process of building up the text network is rather complicated and
> the new code in initWithCoder: definitely breaks the previous code
> structure. There are a few places in that class, where comments try to
> explain the overall assumptions of the text network. One of these is in
> setTextContainer: where it says that this has to be the only place where
> the text container gets changed. The new code doesn't play along with
> that.Either you know for sure what you are doing, then please document
> it and adjust all affected places. Or you don't, then just play along
> with the rest. perhaps it would be enough if the code in NSTextView
> initWithCoder: just decoded the NSTextContainer and left the setting of
> the ivar to the initWithCoder: method on NSTextContainer.
> Setting the NSTextStorage would also not be needed that way, as this
> would come in via the NSLayoutManager.
>
> I would suggest something like:
>
> if ([aDecoder containsValueForKey: @"NSTextContainer"])
> {
> RETAIN([aDecoder decodeObjectForKey: @"NSTextContainer"]);
> // See initWithFrame: for comments on this RELEASE
> RELEASE(self);
> }
> else
> {
> NSSize size = NSMakeSize(0,_maxSize.height);
> NSTextContainer *aTextContainer = [self buildUpTextNetwork:
> NSZeroSize];
> [aTextContainer setTextView: (NSTextView *)self];
> // See initWithFrame: for comments on this RELEASE
> RELEASE(self);
>
> [aTextContainer setContainerSize: size];
> [aTextContainer setWidthTracksTextView: YES];
> [aTextContainer setHeightTracksTextView: NO];
> }
>
>
> What I am not sure about are the RETAIN and RELEASE calls in the case
> where we have an NSTextContainer, but they seem to be in line with the
> rest of the code.
>
> Cheers
> Fred
>
> Gregory John Casamento wrote:
>> I am currently working on this. The issue is that it is possible, in a
>> nib, to encode content in the textview. Currently GNUstep doesn't
>> handle this.
>>
>> I'll add the retain you suggested and I should have this fixed soon.
>>
>> GC
>> Gregory Casamento -- Principal Consultant - OLC, Inc
>> # GNUstep Chief Maintainer
>>
>>
>> ------------------------------------------------------------------------
>> *From:* Georg Fleischmann
>> *To:* greg.casamento@gmail.com; bug-gnustep@gnu.org
>> *Sent:* Sunday, June 28, 2009 3:12:17 AM
>> *Subject:* NSTextView -initWithCoder, recent changes not working
>>
>> Hello Gregory,
>>
>> your recent changes in NSTextView to load the NSTextContainer from a Nib
>> are not working properly.
>>
>> The _textStorage needs a retain or will show a deadface soon.
>> With a retain, my Panel containing the TextView appears on screen.
>>
>> But when clicking with the mouse into the empty TextView I still get a
>> crash with the following stack:
>>
>> #0 0xb788325a in -[GSArray count] (self=0x0, _cmd=0xb7fa61e0) at
>> GSArray.m:233
>> #1 0xb7e697ed in _attributesAtIndexEffectiveRange (index=0, aRange=0x0,
>> tmpLength=0, _infoArray=0x0, foundIndex=0xbf8f1c28) at
>> GSTextStorage.m:333
>> #2 0xb7e697b2 in -[GSTextStorage attributesAtIndex:effectiveRange:] (
>> self=0x97473d0, _cmd=0xb7b77d18, index=0, aRange=0x0)
>> at GSTextStorage.m:540
>> #3 0xb78dbddf in -[NSAttributedString attribute:atIndex:effectiveRange:] (
>> self=0x97473d0, _cmd=0xb7fbb0d8, attributeName=0xb7fa9a30, index=0,
>> aRange=0x0) at NSAttributedString.m:403
>> #4 0xb7ea0671 in -[NSTextView(leftovers) mouseDown:] (self=0x9746c08,
>> _cmd=0xb7f9bef0, theEvent=0x97d5948) at NSTextView.m:4821
>> #5 0xb7e490d8 in -[NSWindow sendEvent:] (self=0x9c563c0, _cmd=0xb7effba0,
>> theEvent=0x97d5948) at NSWindow.m:3588
>> #6 0xb7cb0933 in -[NSApplication sendEvent:] (self=0x84a5eb0,
>> _cmd=0x825c898,
>> theEvent=0x97d5948) at NSApplication.m:1963
>> ...
>>
>> All of this worked before the change.
>>
>> Best wishes,
>> Georg Fleischmann
>>
>>
>> 2009-05-23 11:48-EDT Gregory John Casamento > >
>>
>> * Source/GSStandardWindowDecorationView.m: Live window resize
>> changes
>> for when using GNUstep decorations in
>> resizeWindowStartingWithEvent:.
>> * Source/NSLayoutManager.m: Unarchive the text containers into an
>> array in initWithCoder:.
>> * Source/NSTextContainer.m: Get the layout manager in
>> initWithCoder:.
>> * Source/NSTextView.m: Changes to include text container from nib
>> file into the nib loading process in initWithCoder:.
>
>
--
Gregory Casamento
Open Logic Corporation, Principal Consultant
## GNUstep Chief Maintainer
yahoo/skype: greg_casamento, aol: gjcasa
(240)274-9630 (Cell), (301)362-9640 (Home)