Seite 1 von 1

GetToolBarButtonState bei MacOSx verdreht ?

Verfasst: 21.05.2014 00:46
von Simon74
Hallo,

in meinem Sourcecode der unter Linux und Windows funktioniert, habe ich beim MAC in der Procedur ein Problem,
MAC liefert mir genau dem umgekehrten Wert bei "GetToolBarButtonState".

Code: Alles auswählen

Procedure ButtonState(ButtonID.i)
  If GetToolBarButtonState(0, ButtonID.i)
    SetToolBarButtonState(0, ButtonID.i, 1)
  Else
    SetToolBarButtonState(0, ButtonID.i, 0)    
  EndIf 
EndProcedure
Ist das normal ? :freak:

Re: GetToolBarButtonState bei MacOSx verdreht ?

Verfasst: 21.05.2014 06:22
von Danilo
Funktioniert bei mir so wie in der Dokumentation beschrieben.

Code: Alles auswählen

Procedure ButtonState(ButtonID.i)
    If GetToolBarButtonState(0, ButtonID.i)
        SetToolBarButtonState(0, ButtonID.i, 0)
    Else
        SetToolBarButtonState(0, ButtonID.i, 1)    
    EndIf
    Debug GetToolBarButtonState(0,ButtonID)
EndProcedure

If OpenWindow(0, 100, 200, 195, 260, "ToolBar example", #PB_Window_SystemMenu | #PB_Window_SizeGadget)
    
    If CreateToolBar(0, WindowID(0))
        ToolBarImageButton(1, CreateImage(0,16,16), #PB_ToolBar_Toggle)
    EndIf
    
    Repeat
        Select WaitWindowEvent()
            Case #PB_Event_Menu        : If EventMenu() = 1 : ButtonState(1) : EndIf
            Case #PB_Event_CloseWindow : End
        EndSelect
    ForEver
EndIf
In der von Dir gezeigten Procedure waren aber die States 0 und 1 vertauscht.

Re: GetToolBarButtonState bei MacOSx verdreht ?

Verfasst: 21.05.2014 08:52
von Simon74
Genau, und dieser von dir gepostete Code funktioniert so NUR auf dem MAC, unter Windows und Linux muss der State vertauscht werden ! Sollte das unter Bug geschrieben werden ?

Re: GetToolBarButtonState bei MacOSx verdreht ?

Verfasst: 21.05.2014 09:07
von Danilo
Auf Mac OS X funktioniert der Code korrekt, dass heisst er wechselt den Status.
Auf Windows brauchst Du den Code nicht, da der Toggle-Button automatisch
den Status wechselt.

Dein Windows-Code sieht schon komischer aus, denn Du sagst:

Code: Alles auswählen

Wenn Status
    setze Status
Andernfalls
    Lösche Status
WennEnde
Es funktioniert auf jeden Fall auf Windows und Mac OS X unterschiedlich,
weil der Button auf Windows automatisch umschaltet, auf Mac OS X nicht.

EDIT:
Kleiner Workaround, dann ist es auf beiden OS gleich:

Code: Alles auswählen

Procedure ButtonState(ButtonID.i)
    CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
        ; on Mac OS X we need to switch the state manually
        If GetToolBarButtonState(0, ButtonID.i)
            SetToolBarButtonState(0, ButtonID.i, 0)
        Else
            SetToolBarButtonState(0, ButtonID.i, 1)    
        EndIf
    CompilerEndIf
    Debug GetToolBarButtonState(0,ButtonID)
EndProcedure

If OpenWindow(0, 100, 200, 195, 260, "ToolBar example", #PB_Window_SystemMenu | #PB_Window_SizeGadget)
    
    If CreateToolBar(0, WindowID(0))
        ToolBarImageButton(1, CreateImage(0,16,16), #PB_ToolBar_Toggle)
    EndIf
    
    Repeat
        Select WaitWindowEvent()
            Case #PB_Event_Menu        : If EventMenu() = 1 : ButtonState(1) : EndIf
            Case #PB_Event_CloseWindow : End
        EndSelect
    ForEver
EndIf
Auf Mac OS X muss man den Status also selbst updaten. Auf Windows lässt man das einfach weg.
Könnte man ruhig mal als Bug melden.

Re: GetToolBarButtonState bei MacOSx verdreht ?

Verfasst: 21.05.2014 09:29
von Simon74
Danilo hat geschrieben:Auf Mac OS X muss man den Status also selbst updaten. Auf Windows lässt man das einfach weg.
Könnte man ruhig mal als Bug melden.
Achso, erklärt einiges <)
Hm, selbes verhalten wäre schön.
Danke

Re: GetToolBarButtonState bei MacOSx verdreht ?

Verfasst: 21.05.2014 09:47
von Danilo
Habe es mal gemeldet: ToolbarImageButton toggle state not updated automatically

EDIT: war schon gemeldet als 'Toolbar et toggle'