• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Preventing default drawing of slider bar in custom NSSlider class
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Preventing default drawing of slider bar in custom NSSlider class


  • Subject: Re: Preventing default drawing of slider bar in custom NSSlider class
  • From: Ken Tozier <email@hidden>
  • Date: Sun, 18 Mar 2007 00:03:38 -0400

Oy.

After 3 more hours of futzing, I can't get the knob to center on the slider bar without leaving part of itself behind when it moves. Anyone see what I'm doing wrong here?

Here's the draw knob method:

- (void) drawKnob:(NSRect) knobRect
{
float adjustedLeft = knobRect.origin.x,
knobWidth = knobRect.size.width,
knobHeight = knobRect.size.height,
maxRight = maxXOrigin - knobWidth;

if ((adjustedLeft) < 10)
adjustedLeft = 10;
else if (adjustedLeft > maxRight)
adjustedLeft = maxRight;

adjustedKnobRect = NSMakeRect(adjustedLeft, knobRect.origin.y, knobWidth, knobHeight);

// following line centers the knob correctly,
// but when you drag it, half of the pixels are
// left behind
/*if (isFlipped)
adjustedRect.origin.y += 4;*/

[gSliderKnob drawInRect: adjustedKnobRect
fromRect: NSZeroRect
operation: NSCompositeSourceOver
fraction: 1.0];
}



And here's the other draw stuff in case that sheds light on the problem

- (void) drawBarInside:(NSRect) inRect
				flipped:(BOOL) inFlipped
{
	// may need this for knob drawing
	isFlipped			= inFlipped;

	// update the rectangles for the slider rail
	[self updateGeometryWithFrame: inRect];

	// draw control images
	[gSliderBackgroundImage drawInRect: inRect
				fromRect: NSZeroRect
				operation: NSCompositeSourceOver
				fraction: 1.0];

	[gSliderTrackLeft drawInRect: leftRect
				fromRect: NSZeroRect
				operation: NSCompositeSourceOver
				fraction: 1.0];

	[gSliderTrackCenter drawInRect: middleRect
				fromRect: NSZeroRect
				operation: NSCompositeSourceOver
				fraction: 1.0];

	[gSliderTrackRight drawInRect: rightRect
				fromRect: NSZeroRect
				operation: NSCompositeSourceOver
				fraction: 1.0];

	[self drawKnob];
}

- (void) updateGeometryWithFrame:(NSRect) inFrame
{
adjustedSliderRect = NSMakeRect(inFrame.origin.x + 10, 0, inFrame.size.width - 20, inFrame.size.height);

float rectHeight = inFrame.size.height,
leftWidth = [gSliderTrackLeft size].width,
rightWidth = [gSliderTrackRight size].width,
centerWidth = adjustedSliderRect.size.width - leftWidth - rightWidth,
yOffset = (rectHeight - DefaultSliderBarHeight) / 2;

adjustedRight = adjustedSliderRect.origin.x + adjustedSliderRect.size.width;
leftRect = NSMakeRect(adjustedSliderRect.origin.x, yOffset, leftWidth, DefaultSliderBarHeight);
rightRect = NSMakeRect(adjustedRight - rightWidth, yOffset, rightWidth, DefaultSliderBarHeight);
middleRect = NSMakeRect(leftRect.origin.x + leftRect.size.width, yOffset, centerWidth, DefaultSliderBarHeight);

minXOrigin = 10;
maxXOrigin = adjustedRight;
}


- (BOOL)_usesCustomTrackImage
{
   return YES;
}

_______________________________________________

Cocoa-dev mailing list (email@hidden)

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


  • Follow-Ups:
    • Re: Preventing default drawing of slider bar in custom NSSlider class
      • From: Mikael Gransell <email@hidden>
References: 
 >Preventing default drawing of slider bar in custom NSSlider class (From: Ken Tozier <email@hidden>)
 >Re: Preventing default drawing of slider bar in custom NSSlider class (From: Mikael Gransell <email@hidden>)
 >Re: Preventing default drawing of slider bar in custom NSSlider class (From: Ken Tozier <email@hidden>)
 >Re: Preventing default drawing of slider bar in custom NSSlider class (From: Mikael Gransell <email@hidden>)

  • Prev by Date: Re: Setting the Key window after sheet ends
  • Next by Date: Re: Standby: Handling going into and coming out from standby
  • Previous by thread: Re: Preventing default drawing of slider bar in custom NSSlider class
  • Next by thread: Re: Preventing default drawing of slider bar in custom NSSlider class
  • Index(es):
    • Date
    • Thread