Skip to content

Attempt to fix https://github.com/getlantern/systray/issues/75#92

Merged
joesis merged 1 commit intogetlantern:masterfrom
gearboxworks:osx-mojave-fix
Jun 26, 2019
Merged

Attempt to fix https://github.com/getlantern/systray/issues/75#92
joesis merged 1 commit intogetlantern:masterfrom
gearboxworks:osx-mojave-fix

Conversation

@mikeschinkel
Copy link
Contributor

I think I may have solved issue #75 with a simply macro by updating systray_darwin.m to this:

#if __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_14
    #ifndef NSControlStateValueOff
      #define NSControlStateValueOff NSOffState
    #endif
    #ifndef NSControlStateValueOn
      #define NSControlStateValueOn NSOnState
    #endif
#endif

As I am not an objective C programmer so I am not certain this is a proper fix, but it seems to be working on my end thus far. Let me know if this works for you?

@joesis joesis merged commit f2fa635 into getlantern:master Jun 26, 2019
teddywing added a commit to teddywing/systray that referenced this pull request Jul 26, 2019
I was getting this error building on Mac OS X 10.12:

    $ pwd
    <$GOPATH>/src/github.com/getlantern/systray/example
    $ go run .
    # github.com/getlantern/systray
    systray_darwin.m:132:22: error: use of undeclared identifier 'NSControlStateValueOn'
    systray_darwin.m:134:22: error: use of undeclared identifier 'NSControlStateValueOff'

The `NSControlStateValueOn` and `NSControlStateValueOff` were not
defined because Mac OS versions prior to 10.14 don't define
`__MAC_10_14`.

From `/usr/include/Availability.h`:

> It is also possible to use the *_VERSION_MIN_REQUIRED in source code to make one
> source base that can be compiled to target a range of OS versions.  It is best
> to not use the _MAC_* and __IPHONE_* macros for comparisons, but rather their values.
> That is because you might get compiled on an old OS that does not define a later
> OS version macro, and in the C preprocessor undefined values evaluate to zero
> in expresssions, which could cause the #if expression to evaluate in an unexpected
> way.
>
>     #ifdef __MAC_OS_X_VERSION_MIN_REQUIRED
>         // code only compiled when targeting Mac OS X and not iPhone
>         // note use of 1050 instead of __MAC_10_5
>         #if __MAC_OS_X_VERSION_MIN_REQUIRED < 1050
>             // code in here might run on pre-Leopard OS
>         #else
>             // code here can assume Leopard or later
>         #endif
>     #endif

See getlantern#75, getlantern#92.
@getlantern getlantern deleted a comment from joesis Mar 1, 2021
ropog3ovomou pushed a commit to ropog3ovomou/systray that referenced this pull request Jul 13, 2022
ropog3ovomou pushed a commit to ropog3ovomou/systray that referenced this pull request Jul 13, 2022
I was getting this error building on Mac OS X 10.12:

    $ pwd
    <$GOPATH>/src/github.com/getlantern/systray/example
    $ go run .
    # github.com/getlantern/systray
    systray_darwin.m:132:22: error: use of undeclared identifier 'NSControlStateValueOn'
    systray_darwin.m:134:22: error: use of undeclared identifier 'NSControlStateValueOff'

The `NSControlStateValueOn` and `NSControlStateValueOff` were not
defined because Mac OS versions prior to 10.14 don't define
`__MAC_10_14`.

From `/usr/include/Availability.h`:

> It is also possible to use the *_VERSION_MIN_REQUIRED in source code to make one
> source base that can be compiled to target a range of OS versions.  It is best
> to not use the _MAC_* and __IPHONE_* macros for comparisons, but rather their values.
> That is because you might get compiled on an old OS that does not define a later
> OS version macro, and in the C preprocessor undefined values evaluate to zero
> in expresssions, which could cause the #if expression to evaluate in an unexpected
> way.
>
>     #ifdef __MAC_OS_X_VERSION_MIN_REQUIRED
>         // code only compiled when targeting Mac OS X and not iPhone
>         // note use of 1050 instead of __MAC_10_5
>         #if __MAC_OS_X_VERSION_MIN_REQUIRED < 1050
>             // code in here might run on pre-Leopard OS
>         #else
>             // code here can assume Leopard or later
>         #endif
>     #endif

See getlantern#75, getlantern#92.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants