macosx: Add ability to hide knob to VLCSlider
[vlc.git] / modules / gui / macosx / VLCSliderCell.m
index 4c005f9..51cee0e 100644 (file)
@@ -184,6 +184,9 @@ static CVReturn DisplayLinkCallback(CVDisplayLinkRef displayLink, const CVTimeSt
 
 - (void)drawKnob:(NSRect)knobRect
 {
+    if (_isKnobHidden)
+        return;
+
     // Draw knob
     NSBezierPath* knobPath = [NSBezierPath bezierPathWithOvalInRect:NSInsetRect(knobRect, 2.0, 2.0)];
     if (self.isHighlighted) {
@@ -218,6 +221,13 @@ static CVReturn DisplayLinkCallback(CVDisplayLinkRef displayLink, const CVTimeSt
     NSBezierPath* emptyTrackPath = [NSBezierPath bezierPathWithRoundedRect:rect xRadius:3 yRadius:3];
     [_trackGradient drawInBezierPath:emptyTrackPath angle:-90];
 
+    if (_isKnobHidden) {
+        [_trackStrokeColor setStroke];
+        emptyTrackPath.lineWidth = 1;
+        [emptyTrackPath stroke];
+        return;
+    }
+
     // Calculate filled track
     NSRect filledTrackRect = rect;
     NSRect knobRect = [self knobRectFlipped:NO];
@@ -324,5 +334,11 @@ static CVReturn DisplayLinkCallback(CVDisplayLinkRef displayLink, const CVTimeSt
     _indefinite = indefinite;
 }
 
+- (void)setKnobHidden:(BOOL)isKnobHidden
+{
+    _isKnobHidden = isKnobHidden;
+    [self.controlView setNeedsDisplay:YES];
+}
+
 
 @end