<p>Have you ever been in a situation where a menu function you really really want to use but can't cause it's disabled or worse gone all together?</p>

<p>There is an argument for always leaving menus enabled and then display a message to a user explaining why a menu function can not be activated when they click on it. I think there is merit in this but maybe there is a cleverer way of addressing this issue. </p>

<p>I would be interested to hear what others think.</p>

[{'answer_id': 79052, 'author': 'Ana Betts', 'author_id': 5728, 'author_profile': 'https://Stackoverflow.com/users/5728', 'pm_score': 2, 'selected': False, 'text': "<p>Make it disabled but have the tooltip explain why it's disabled</p>\n"}, {'answer_id': 79062, 'author': 'Mikey', 'author_id': 13347, 'author_profile': 'https://Stackoverflow.com/users/13347', 'pm_score': 0, 'selected': False, 'text': "<p>I've always believed that you should hide as much as you can.  (Your application shouldn't be any more complex than what the user can/should do.)</p>\n\n<p>If you display a menu option that a user shouldn't be using, they may click on it, but think your application is broken because nothing happens.</p>\n\n<p>That's what I think at least...</p>\n"}, {'answer_id': 79068, 'author': 'Josh', 'author_id': 257, 'author_profile': 'https://Stackoverflow.com/users/257', 'pm_score': 3, 'selected': False, 'text': '<p>If you\'re refering to Joel\'s post <a href="http://www.joelonsoftware.com/items/2008/07/01.html" rel="noreferrer">Don\'t hide or disable menu items</a>, he <a href="https://stackoverflow.fogbugz.com/default.asp?W13086" rel="noreferrer">clarified in the StackOverflow podcast</a> that he intended that there be information - not a dialog - telling you why a menu item wouldn\'t do anything:</p>\n\n<blockquote>\n  <p>So, the use-case I was thinking of was, you had mentioned that in the Windows Media Player, you can play things faster when you\'re listening to podcasts and so forth, and it\'ll speed them up.  And when I looked in there, that was disabled.  And I couldn\'t figure out how to enable it.  And obviously the help file is no help--not that anybody reads help files, but even if you did you couldn\'t find the answer to that.  And that was kind of frustrating, and I\'d rather have that menu item be enabled and have it just tell me "I\'m not going to do this right now because of the following reason.  I refuse to do this."  </p>\n</blockquote>\n'}, {'answer_id': 79073, 'author': 'Joe Skora', 'author_id': 14057, 'author_profile': 'https://Stackoverflow.com/users/14057', 'pm_score': 0, 'selected': False, 'text': "<p>It depends on the situation.  If the menu item has applies in the current context but isn't available because of state, it should be disabled.  If the context has changed so it no longer applies, it should be removed.</p>\n"}, {'answer_id': 79086, 'author': 'jtimberman', 'author_id': 7672, 'author_profile': 'https://Stackoverflow.com/users/7672', 'pm_score': 0, 'selected': False, 'text': "<p>I've never really understood this myself (I don't program GUIs). Why even have menu items hidden or disabled in the first place? It is non-intuitive for most users who are looking for a particular menu option to find it disabled, or not even present.</p>\n\n<p>Tooltips are also non-intuitive. If I'm moving my mouse across menu items, I'm not going to pause long enough to get a tooltip explanation. I'm more likely to become frustrated that something I expected to be accessible through the menu isn't there, or is disabled. </p>\n\n<p>That said, I actually don't use GUI menus very often. I find the options available are often not useful, or are accessible in some more intuitive way, such as common keyboard shortcuts.</p>\n"}, {'answer_id': 79091, 'author': 'Bryan Oakley', 'author_id': 7432, 'author_profile': 'https://Stackoverflow.com/users/7432', 'pm_score': 2, 'selected': False, 'text': '<p>As with most questions about usability, the answer is "it depends". It depends on the problem domain, the type of user, how critical the function is and so on. There is no single answer to your question.</p>\n\n<p>I think the general consensus is, never ever totally remove items from a menu. Menus allow the user to freely discover what functions are available, but if those items are hidden or move around it does nothing to help the user. Also, moving them around makes it impossible to become proficient with the application since you have to constantly scan the menus for the item you want to select.</p>\n\n<p>As for disabling versus enabling an item and displaying a dialog or message explaining why it\'s not something you can do, I generally prefer the former. However, if there\'s a function that a user can\'t reasonably be expected to intuit from the display, leaving it enabled is a good choice. </p>\n\n<p>For example, if "Paste" is disabled it\'s reasonably obvious to most computer users that there\'s nothing to paste. However, if you have a "Frizzle the Bonfraz" menu item and the user may not know what a Bonfraz is or why they might want to enable it but can\'t, it\'s a good idea to leave it enabled at least for a while.</p>\n\n<p>So again, it depends. If at all possible, do what you think is best and then ask your users. </p>\n'}, {'answer_id': 79161, 'author': 'Swati', 'author_id': 12682, 'author_profile': 'https://Stackoverflow.com/users/12682', 'pm_score': 2, 'selected': False, 'text': '<p>To generalize it a bit (perhaps incorrectly...), which of these situations would you prefer:</p>\n\n<ol>\n<li>To find yourself on an island with no boat or bridge in site. Of course, you could talk to the villager in town and he would tell you the magical word to make a bridge appear...but you had no idea that magic existed.</li>\n<li>You see that there is a bridge; however, when you get to it, there is a sign telling you that the bridge is not open to use.</li>\n<li>You see that there is a bridge and celebrate! When you get to the end of the bridge, it tells you that the exit is not open. They must go back.</li>\n</ol>\n\n<p>Maybe I am biased, but I don\'t believe that leaving the menu options enabled and allowing the user to click on it is the best of idea. That\'s just wasting someone\'s time. There is no way for them to distinguish that the item is available or not until they click on the item. (Scenario #3)</p>\n\n<p>Hiding the item all together has its pros and cons. Completely hidden and you run the risk of the user never discovering all these features; however, at the same time, you are presented with the opportunity of making your application \'fun\' and \'discoverable.\' I\'ve always thought the visibility of actions is more suited to items like toolbars. A good example of that is in when in some applications the picture toolbar pops up when you click on an image...and disappears when you click on text. In general, I would say that something like this is best if the overall experience of your application lends towards a "discovering" and "exploring" attitude from the user. (Scenario #1)</p>\n\n<p>I would generally recommend disabling the items and providing a tooltip to the user informing them how to enable it (or even a link to Help?); however, this cannot be overdone. This must be done in moderation. (Scenario #2)</p>\n\n<p>In general, when it\'s a context-related action (i.e. picture toolbar) that the user can easily discover, hide the items. If the user won\'t easily find it, have it disabled. </p>\n'}, {'answer_id': 79475, 'author': 'Milan Babuškov', 'author_id': 14690, 'author_profile': 'https://Stackoverflow.com/users/14690', 'pm_score': 0, 'selected': False, 'text': "<p>You can display the 'reason' in the status bar. Or even better, use a text that describes the action and contains information when such action is possible. For example, for 'Copy' menu item, the text in status bar would be: Copy the selected text. Note the 'selected' part, which tells the user that he needs to select the text to enable the menu item.</p>\n\n<p>Another example in a tool I'm making, we have 'Drop database' menu item, but this action is only possible when you're connected to it. So, the text in status bar goes something like: 'Drop the database (only when connected)'.</p>\n"}]
['https://Stackoverflow.com/questions/79033', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/9810/']