I manage a large Windows desktop application, which is the 'back office' of an EPOS system. There are many screens which allow the user to search through collections of objects, for example orders or customers, and these objects can be right-clicked to present a context menu with a list of possible actions.
Sometimes, it can take a short time (perhaps 50ms) to detemine whether a particular action should be available or not. I do this check when the user right-clicks to get the menu.
When there were very few options, this wasn't a huge problem. As the number of features has grown however, in some configurations it can take up to a couple of seconds to show the menu. I'd like to do something about this.
My first idea is to show the menu immediately, but with any actions we're unsure about being disabled (grayed out and un-clickable). I would check whether these actions are possible in the background, and enable them as they are confirmed possible. I've never seen this done before and I can imagine it looking a bit strange, but at least the menu can be displayed instantly.
I could just show all actions as available in the hope that they are, and actually check only when the user selects an action. If the user picks something that turns out to be unavailable, this could be extremely frustrating.
Or, just live with the pause? The delay is noticeable, but at least when the menu is finally shown, only actions which are actually possible are enabled so the available choices are much clearer.
Any suggestions on how I might improve this situation? (other than "make it faster")