Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Merged
merged 1 commit into from
Jun 26, 2019

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