Acknowledged
CIQQA-3580

CIQ docs do not make it clear some new devices (e.g. Vivoactive 6) do not support onMenu(), and do require the use of View.setActionMenuIndicator(), in order to implement equivalent functionality (e.g. context-sensitive menu)

Newer touch-first devices - Vivoactive 6, Venu 4 and Venu X1 - no longer have a dedicated menu button/touchscreen shortcut which triggers the onMenu behavior. In the past, *every* CIQ watch supported onMenu, whether by button short/long-press or a long-press of the touchscreen (Vivoactive 3). As such, devs have become accustomed to using onMenu() to implement context-sensitive/universal menus for their apps.

This has come up more than once, and in fact it has been assumed to be a bug more than once, rather than an intentional design decision. Given that (I assume) every new touch-first device (Venu/Vivoactive) watch will lack onMenu, I'm not sure why there's no push to have this new pattern documented for CIQ devs. There have already been 3 releases of watches without onMenu(), and devs have been asking "where's onMenu???" for months.

The only reference I've seen in the CIQ docs is an announcement for Vivoactive 6, which states that the "action view pattern" has changed from Vivoactive 5: here's how you can display the action menu indicator in your CIQ app and how you can take action when the user swipes left on it, by pushing an action menu. Crucially, it does not explicitly state that onMenu is gone from VA6. It does not even mention onMenu at all.

https://forums.garmin.com/developer/connect-iq/b/news-announcements/posts/vivoactive-6-now-available-in-the-connect-iq-sdk-manager 

I noticed that the Input Handling core topic makes no mention of View.setActionMenuIndicator or BehaviorDelegate.onActionMenu(), even though it covers BehaviorDelegate.onMenu(): 

https://developer.garmin.com/connect-iq/core-topics/input-handling/  

There's nothing on that page about action menus at all.

Not to state the obvious, but if a significant change is made for newer devices where more than one dev believes there's a bug or something is missing from the device/docs, and they invariably report it as a bug or create a topic in the forums asking for help, there's a good chance that the change was not communicated properly.

Suggestion:

- make it clear in the device reference (somehow) that these devices don't support onMenu, but they do require apps to display an action menu indicator if the app needs to offer a context-sensitive / universally accessible menu

- add a note to the onMenu CIQ API docs that some newer devices don't support this functionality anymore, since it has been a staple of Garmin CIQ devices since the beginning

- update the Input Handling core topic with information about View.setActionMenuIndicator() and BehaviorDelegate.onActionMenu(), especially how some new devices no longer support onMenu() and require the use of View.setActionMenuIndicator() to implement the equivalent functionality

References: 

https://forums.garmin.com/developer/connect-iq/f/discussion/423197/venu-x1-application-menu-controls/1979182#1979182 

https://forums.garmin.com/developer/connect-iq/i/bug-reports/ciq-device-reference-shows-supported-buttons-for-each-device-but-not-touchscreen-gestures 

https://forums.garmin.com/developer/connect-iq/f/discussion/416008/behaviordelegate-onmenu-on-vivoactive-6-and-venu-x1 

https://forums.garmin.com/developer/connect-iq/i/bug-reports/vivoactive-6-simulator-problems 

Notes:

I think this bug is compounded by the fact that there's no supported devices section for onMenu in the Connect IQ API docs, whereas there is a supported device section for onActionMenu.

Even if these new devices technically support onMenu (meaning the symbol is defined), it will never be called for those devices, but the dev wouldn't know that by looking at the docs.

Maybe there needs to be a Supported Devices section with an asterisk for onMenu: e.g. "all devices have the onMenu symbol, but only the following devices actually support the onMenu behavior, meaning that onMenu will never be called for other devices". Or: "onMenu will never be called for the following devices. Use View.setActionMenuIndicator and onActionMenu instead"

  • It seems to me that the onMenu behavior was removed from newer touch-first devices because it's not intuitive to the end-user to have a hidden, non-discoverable universal shortcut to open a menu. It seems that displaying an on-screen indicator is much more user friendly.

    I can attest that I know a lot of users of 5-button Forerunners who have no idea that you hold UP to open a menu.

    Having said that, since it was obviously a major design change to remove onMenu and to use the action menu indicator for equivalent functionality, and it was obviously deemed necessary to expose the action menu indicator in CIQ, why is there no information about this except for an oblique reference in the announcement for VA6?

    I can only conclude that Garmin doesn't really care about CIQ. I'm sure all the individual team members are passionate, but Garmin (as a whole) shows us over and over again that CIQ is not important.

    Just look at all the bugs that remain unfixed for years, especially anything to do with the interaction between product/firmware and CIQ. Like the bug where, if you have the max number of CIQ fields installed in an activity (in most cases, 2), you won't be able to change 1 of the 2 data fields to a *different* CIQ field, unless you remove the other field first. This bug has such an obvious provenance - it's obviously due to a check which prevents the user from adding a *3rd* unique field. The fix is equally obvious: the check shouldn't apply when you are editing a data field which *already* has a CIQ field assigned to it.