@@ -515,7 +515,6 @@ - (NSTouchBarItem*)makeScrubberForID:(NSString*)id
515515 scrubber.delegate = self;
516516 scrubber.dataSource = self;
517517 scrubber.identifier = id ;
518- scrubber.mode = NSScrubberModeFree;
519518
520519 [item setView: scrubber];
521520 [self updateScrubber: item withSettings: settings];
@@ -526,6 +525,44 @@ - (NSTouchBarItem*)makeScrubberForID:(NSString*)id
526525- (void )updateScrubber : (NSCustomTouchBarItem *)item
527526 withSettings : (const mate::PersistentDictionary&)settings {
528527 NSScrubber * scrubber = item.view ;
528+
529+ bool showsArrowButtons = false ;
530+ settings.Get (" showArrowButtons" , &showsArrowButtons);
531+ scrubber.showsArrowButtons = showsArrowButtons;
532+
533+ std::string selectedStyle;
534+ std::string overlayStyle;
535+ settings.Get (" selectedStyle" , &selectedStyle);
536+ settings.Get (" overlayStyle" , &overlayStyle);
537+
538+ if (selectedStyle == " outline" ) {
539+ scrubber.selectionBackgroundStyle = [NSScrubberSelectionStyle outlineOverlayStyle ];
540+ } else if (selectedStyle == " background" ) {
541+ scrubber.selectionBackgroundStyle = [NSScrubberSelectionStyle roundedBackgroundStyle ];
542+ } else {
543+ scrubber.selectionBackgroundStyle = nil ;
544+ }
545+
546+ if (overlayStyle == " outline" ) {
547+ scrubber.selectionOverlayStyle = [NSScrubberSelectionStyle outlineOverlayStyle ];
548+ } else if (overlayStyle == " background" ) {
549+ scrubber.selectionOverlayStyle = [NSScrubberSelectionStyle roundedBackgroundStyle ];
550+ } else {
551+ scrubber.selectionOverlayStyle = nil ;
552+ }
553+
554+ std::string mode;
555+ settings.Get (" mode" , &mode);
556+ if (mode == " fixed" ) {
557+ scrubber.mode = NSScrubberModeFixed;
558+ } else {
559+ scrubber.mode = NSScrubberModeFree;
560+ }
561+
562+ bool continuous = true ;
563+ settings.Get (" continuous" , &continuous);
564+ scrubber.continuous = continuous;
565+
529566 [scrubber reloadData ];
530567}
531568
@@ -546,7 +583,10 @@ - (NSScrubberItemView*)scrubber:(NSScrubber*)scrubber
546583
547584 mate::PersistentDictionary settings = settings_[s_id];
548585 std::vector<mate::PersistentDictionary> items;
549- settings.Get (" items" , &items);
586+ if (!settings.Get (" items" , &items)) return nil ;
587+
588+ if ((long )index >= (long )items.size ()) return nil ;
589+
550590 mate::PersistentDictionary item = items[index];
551591
552592 NSScrubberItemView * itemView;
0 commit comments