There's some complicated behind-the-scenes stuff in NSScrollView et al to avoid 
breaking apps that put extra stuff in the horizontal scroll zone because with 
some of the new style settings the scroll zone size is highly variable in both 
dimensions.  Wouldn't surprise me if there's code to detect a setFrame on the 
horizontal scroller and mark the scrollview as being legacy style. I'm pretty 
sure one of the Lion WWDC sessions advised against doing this in the future.

I have a custom scroll view and it has two tile methods: one for 
NSScrollerStyleLegacy/10.6 and earlier, and one for overlay style; only the 
legacyTile one adjusts the horizontal scroller frame. It adds a secondary 
subview to the scrollview itself, if you're interested - it might work for your 
UI to have the extra widgets in their own view instead of sharing space with 
the scroller.

NSScroller is set up to be subclassed and tell OSX it knows how to handle new 
scrollbars - see [NSScroller isCompatibleWithOverlayScrollers] - so there's 
another way to add things to the scroller area.

----- Original Message -----
From: "Sanjay Arora" <saar...@quark.com>
To: cocoa-dev@lists.apple.com
Sent: Wednesday, July 4, 2012 12:45:01 AM
Subject: NSScrollView does not honor system preferences for scroll bars ("when 
scrolling"), when I override the -tile method.

Below is my code that overlays a control on the horizontal scrollbar.

(void)tile { 
        [super tile];
        if (subControl) { 
                NSRect subControlFrame = [subControl frame];
                NSScroller *horizontalScroller = [self
horizontalScroller];

                NSRect scrollerFrame = [horizontalScroller frame];
                // adjust control position here in the scrollview
coordinate space
                subControlFrame.origin.x = scrollerFrame.origin.x;
                subControlFrame.origin.y = scrollerFrame.origin.y;
                subControlFrame.size.height = scrollerFrame.size.height;
                // move controls
                [subControl setFrame:subControlFrame];

                NSRect subControlFrame2 = [subControl frame];

                scrollerFrame.origin.x += subControlFrame2.size.width;
                scrollerFrame.size.width -= subControlFrame2.size.width;

                 [horizontalScroller setFrame:scrollerFrame]; 
                } 
        }

 
After the line
    [subControl setFrame:subControlFrame];

 it stops responding to system preferences??

Regards
Sanjay

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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:
https://lists.apple.com/mailman/options/cocoa-dev/lrucker%40vmware.com

This email sent to lruc...@vmware.com
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to