NSColorPanel: Color Lists sortieren und auswählen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • NSColorPanel: Color Lists sortieren und auswählen

    Moin zusammen,

    Benutzt Ihr NSColorPanel in Euren Apps? Ich habe seit macOS 13 den Effekt, dass Farblisten, die ich aus dem App-Bundle heraus hinzufüge (attachColorList:) nicht mehr in der Reihenfolgen des Hinzufügens angezeigt werden. Bis macOS 12 war es so - in umgekehrter Reihenfolge (LIFO). Nun erscheinen die Listen ohne erkennbare Ordnung, bei zahlreichen Einträgen sehr verwirrend. Bug Report ist abgesetzt, aber ich erwarte von Apple wenig...

    Zusatzfrage - und ein schon "ewig" existierendes Problem: Kennt Ihr irgendeinen Weg, dem NSColorPanel mitzuteilen, welche Farbliste auszuwählen ist? Ich würde gerne beim Anzeigen des Panels auf eine bestimmte Liste wechseln. Bisher muss es immer der Benutzer machen, was zu Problemen führen kann. Mir ist keine entsprechende Methode bekannt, aber vielleicht wisst Ihr eine Lösung? Falls nicht, wird das kurz vor der Verlängerung des Developer-Abos ein TSR werden.

    Grüße, Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Nur zur Info: Ich habe gerade einen entsprechenden TSI investiert - meine Mitgliedschaft wird bald verlängert und ich wollte ihn nicht verfallen lassen. Mal sehen, was Apple sagt - bei der Gelegenheit habe ich das Thema auch mal im Developer-Forum gepostet.

    Zur Info (und für Google) hier die Zusammenfassung:

    TSI schrieb:

    NSColorPanel: Control selection and order of NSColorLists

    Full description
    In my macOS app I’m using NSColorPanel to present color picking options to the user. Therefore I’m attaching various custom NSColorLists before showing the color panel. The panel is always presented with the „Apple“ color list active, and I found no method to select a different color list. In my app I could determine the most relevant color list and would like to preselect it instead of relying on a manual selection by the user.

    Is there any option to control the selected / active NSColorList of an NSColorPanel?

    Additionally - but that more a minor topic and probably a candidate for a bug report: Since some major macOS versions (maybe starting with macOS 13 „Ventura“?) the order of NSColorLists in the default NSColorPanel is random. In the past color palettes were listed in reverse order of their attachments via „attachColorList:“.

    Is there any way to control the order color palettes are listed by an NSColorPanel?

    Code to instantiate the NSColorPanel and propagate custom NSColorLists:

    [NSColorPanel setPickerMode:NSColorListModeColorPanel];
    [NSColorPanel setPickerMask:(NSColorPanelColorListModeMask | NSColorPanelWheelModeMask | NSColorPanelRGBModeMask)];
    NSColorPanel *myColorPanel = [NSColorPanel sharedColorPanel];
    [myColorPanel setShowsAlpha:FALSE];
    [myColorPanel setContinuous:FALSE];
    [myColorPanel attachColorList:<color list 3]];
    [myColorPanel attachColorList:<color list 2]];
    [myColorPanel attachColorList:<color list 1]];

    Code to present the NSColorPicker

    [[NSColorPanel sharedColorPanel] setColor:[NSColor colorWithCalibratedRed:threadColor.red green:threadColor.green blue:threadColor.blue alpha:1.0f]];
    [[NSColorPanel sharedColorPanel] orderFront:nil];
    [[NSColorPanel sharedColorPanel] setDelegate:self];

    Platform
    macOS

    Hardware and software configuration
    MacBook Pro 14“, 2021
    macOS 14.2.1 (23C71)

    Steps to reproduce
    Show an NSColorPicker with multiple custom NSColorLists. Try to change the initially selected color palette and the palettes' order.
    Diese Seite bleibt aus technischen Gründen unbedruckt.