Re: Questions on using a NSTextView as a source viewer.
Re: Questions on using a NSTextView as a source viewer.
- Subject: Re: Questions on using a NSTextView as a source viewer.
- From: Daryle Walker <email@hidden>
- Date: Sat, 11 Oct 2014 15:31:21 -0400
On Oct 11, 2014, at 10:23 AM, Keary Suska <email@hidden> wrote:
> On Oct 11, 2014, at 3:53 AM, Daryle Walker <email@hidden> wrote:
>
>> On Oct 10, 2014, at 1:58 AM, Ken Thomases <email@hidden> wrote:
>>
>>> On Oct 10, 2014, at 12:02 AM, Daryle Walker <email@hidden> wrote:
>>>
>>>> On Oct 7, 2014, at 8:03 PM, Ken Thomases <email@hidden> wrote:
>>>>
>>>>> On Oct 7, 2014, at 5:29 PM, Daryle Walker <email@hidden> wrote:
>>>>>
>>>>>> 1. Although the text in the window expands vertically as needed, it never does horizontally. Wrapping always happens when lines are too long, but it adjusts as the width of the window is changed. How do I get “infinite” space horizontally? I tried various tweaks in Interface Builder and looked at various Apple guides, but I can’t turn off the horizontal wrapping.
>>>>>
>>>>> On the Size inspector of IB, enable Resizable Horizontally. Then, in code, do this (assuming self.textView is the outlet property):
>>>>>
>>>>> self.textView.textContainer.widthTracksTextView = NO;
>>>>>
>>>>> I couldn't find anyplace in IB that exposes the text container attributes.
>>>>
>>>> I added “textContainer.widthTracksTextView” to the run-time attributes section in Interface Builder as a Boolean, and it changes the behavior in the other direction; the text wraps at the window’s original width, even if I make the window wider. Changing it to YES (i.e. turning on the checkbox) brings back the previous behavior. (I first changed the horizontal point limit to 10K, just like the vertical limit.)
>>>
>>> Did you also set Resizable Horizontally (the first step, above)? And, yes, good catch: I forget to mention changing the max. width.
>>
>> Yes.
>>
>>> I tested this and it worked for me. In summary, all three steps:
>>>
>>> * Set the text view's max. width
>>> * Set the text view to be horizontally resizable
>>> * Set textView.textContainer.widthTracksTextView = NO
>>
>> I had that before my last post; didn’t fix it, made it worse (text width is the initial width of the window, even if I Zoom it out, or manually make it wider, or narrower(!)).
>
>
> I think Ken mis-stated what he meant--the max width isn't terribly relevant. You need to set the actual container size (width minimally) to an unlikely large number. Apple's TextViewSizing example project demonstrates this. They use the value 1.0e7, which comments say is the largest possible value before experiencing text drawing issues. You will have to set this value in code, as it can't be set via IB.
This fixed it. Thanks.
There was a minor detour where I just had “textContainer.containerSize” set. You need BOTH “containerSize” and “widthTracksTextView” set (to {10M, 10M} and NO, respectively). Both of these can be set in the user-defined run-time attributes section of IB. I heard about this a few months ago as a power-user hint. I first tried it to set the text-view’s font to the system fixed-width font, but I couldn’t do it. NSFont is not a type supported by the runtime attribute section, but NSSize and BOOL are.
>> On Oct 7, 2014, at 5:33 PM, Daryle Walker <email@hidden> wrote:
>>>>>
>>>>>> 3. The text in the view-source window is editable, although I turned that off. (It’s still selectable.) I can cut/copy/paste. Isn’t turning off editing supposed to stop this?
>>>>>
>>>>> Are you using bindings? Do any of them have Conditionally Sets Editable enabled in the binding options?
>>>>
>>>> Yes, one for the text view's contents, and another on the window's title (using the format substitution version). There is a binding for the text view being editable, but I’m not using it. (The text contents property in my window controller class is read-write.)
>>>
>>> My point was to check the options on those bindings for the Conditionally Sets Editable option. If any of them have that option enabled, that would explain why your text is editable when you set the text view to non-editable. The binding option is overriding the attribute you set. Turn it off.
>>
>> I thought you meant the “Editable” attribute under “Availability.” I haven’t activated that Binding at all. But now I see you meant the C.S.E. option under the Binding I did make. That option is checked.
>>
>> Turning it off blocks Cut and Paste, but still allows Copy, Select All, and Find.
>
> You will need to also turn off "selectable" (setSelectable: in code) which should disable the rest, and possibly change "find" value to "none" (setUsesFindBar: and/or setUsesFindPanel:).
Oh, I want read-only actions supported. Those don’t break the illusion that the source-view and browser windows are connected.
—
Daryle Walker
Mac, Internet, and Video Game Junkie
darylew AT mac DOT com
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden