Toolbar Icon-Breite

MAC OSX spezifisches Forum
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
Micky91
Beiträge: 35
Registriert: 06.11.2013 19:35

Toolbar Icon-Breite

Beitrag von Micky91 »

Habe unter OSX erstmalig eine Toolbar angelegt. Wieso sind die Icons so weit voneinander entfernt? Und warum ist beim Separator 1. nichts zu sehen und 2. keine größere Lücke?
Screenshot:
Bild

So sieht das im Formulardesigner aus:
Bild
PureBasic 5.72 (x64) | Mac OSX 10.15.6
Benutzeravatar
Shardik
Beiträge: 738
Registriert: 25.01.2005 12:19

Re: Toolbar Icon-Breite

Beitrag von Shardik »

Micky91 hat geschrieben:Wieso sind die Icons so weit voneinander entfernt?
Dies ist das normale Aussehen bei OS X. Die Icons haben in der Tat einen sehr weiten Abstand, der nicht verringert werden kann. Die Ansicht im FormDesigner ist nur ein Skin, keine tatsächliche Darstellung. Deshalb sehen die Icons ja auch beim Entwurf wie in Deinem zweiten Foto und nach "Ansicht umschalten (Code/Design)" und Ausführung des generierten Codes wie im ersten Foto aus.
Micky91 hat geschrieben:Und warum ist beim Separator 1. nichts zu sehen und 2. keine größere Lücke?
Dies ist anscheinend ein Bug. Ich werde ihn gleich im englischen Bug-Forum melden.

Zum Beweis für meine Behauptungen habe ich das folgende Beispiel entwickelt: es zeigt 4 Icons aus dem Silk-Theme an und ruft mit einer Cocoa-API-Funktion von OS X ein Modifikationsfenster auf, in dem nach Belieben die Anordnung der Icons abgeändert werden kann und Trennbalken, Leerräume und Platzhalter (zum Verschieben eines Icons an den rechten Rand) eingefügt werden können:

Code: Alles auswählen

#SilkThemePath = #PB_Compiler_Home + "Themes/"
#IconNameList = "disk.png+delete.png+arrow_left.png+arrow_right.png"

UsePNGImageDecoder()
UseZipPacker()

OpenWindow(0, 270, 100, 290, 50, "Abänderbare Werkzeugleiste")
CreateToolBar(0, WindowID(0))

If OpenPack(0, #SilkThemePath + "SilkTheme.zip")
  *ImageBuffer = AllocateMemory(1024)

  If ExaminePack(0)
    For i = 0 To CountString(#IconNameList, "+")
      ImageSize = UncompressPackMemory(0, *ImageBuffer, MemorySize(*ImageBuffer),
        StringField(#IconNameList, i + 1, "+"))

      If ImageSize > 0
        If CatchImage(i, *ImageBuffer, ImageSize)
          ToolBarImageButton(i, ImageID(i))
        EndIf
      EndIf
    Next i
  EndIf

  FreeMemory(*ImageBuffer)
EndIf

; ----- Zeige ToolBar-Konfigurationsfenster an
CocoaMessage(0, ToolBarID(0), "runCustomizationPalette:", ToolBarID(0))

Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
Ergänzung: Ich habe die nicht funktionierende Anweisung ToolBarSeparator() im englischen Unterforum "Bugs Mac OSX" gemeldet und auch gleich einen Workaround gezeigt, der einen Trennstrich zwischen zwei Icons einfügt (ganz so wie es ToolBarSeparator() eigentlich machen sollte):
http://www.purebasic.fr/english/viewtop ... 24&t=57487
Antworten