Disable/Enable Vs Show/Hide


Given the option in the UI (usually on a check box but sometimes on selection level eg editable mesh) what’s the preferred option ?

  1. Disable/Enable the UI items

pro’s can be easier/quicker to implement and the UI remains constant (in items location), it’s probably quicker
con’s the overall UI can be larger all the time , dreaded white flicker (can be coded out and seems to be fixed in newer versions)

2.Show /Hide the specific UI items usually the whole rollout.

pro’s can result in a less cluttered UI (editable poly would be huge if every option was displayed :slight_smile: )

con’s can be quite slow (see editable poly) more work to implement especially if you need to maintain order! order of rollouts can get easily jumbled confusing the user (editable poly I’m looking at you!)

so what’s your preferred method and do you have any more pro’s and cons


In general, a combination of both options would be the best choice.

Speaking specifically about modifiers or objects in the modify panel, if an action is available for the selected sub-object level, it should/could be enable/disable depending on the conditions that needs to be met for it to work.

For example, in case of Editable Poly, if the extrude action only works in face/poly mode, then it should be hidden in other modes. If you are in poly mode, then it should be enabled only if you have a valid selection to extrude, otherwise it should be disable but visible, so the user knows it is a possible action but something is missing for it to work. A tooltip can help here.

Hiding/unhiding controls within the same sub-object level could cause a massive redrawing/flickering and reorganization of the remaining controls, which would be very tedious for the user to say the least.

Pros of hiding/unhiding:
The user knows beforehand which options are available for the selected sub-object level.

Pros of enabling/disabling:
The user knows that certain action is possible for the selected sub-object level, but there are some conditions that are not met when the control is disabled, most probably a valid selection.


This is a very interesting topic… as soon as I have time, I will write a detailed post on this topic.

In the meantime, I wanted to express a couple of thoughts, starting with the words - “since I have a huge experience in creating and developing user interfaces for 3DS MAX …”, and then I decided to “calculate the size of my experience” and launched a simple “script-counter” on my archive of tools and plug-ins, created for all the time for different projects (only 3DS MAX) … And here are the numbers I got:

rollouts: ~2500
rollout controls: ~30000


90 IDD’s in my dlo
110 IDD’s in my dlm

sometimes it’s an obvious enable/disable e.g. say perturb Normals

a simple check box, which will the enable disable two spinners controls
angle and seed and perhaps a reseed btn if your feeling adventurous

I’ve been playing with show hide with rollouts with a few more controls e.g. a full noise setup (type, size, levels, phase, high, low, smooth, color1, color2, blend mode etc) it works well enough but it doesn’t feel quite right (but also doesn’t work as disable enable). I’m not keen on the Popup dialog option either (though I have used it for this before) :confused: The other option is to have it permanent with a 0-100 level (like an opacity on photoshop layer)


In a nutshell, then:

  • Enable/Disable I use constantly and very often
  • Hide/Unhide I use with a limitation
    Usually instead of hide/unhide certain controls I often use a “Tab” (page) system, overwriting a block of interface but replacing the exact whole area.

I always try to keep positions of user interface controls at the same (initial) place. So enable/disable better matches this rule.

There is also a difference between tools placed in the modifier panel (plugins, custom attributes) and standalone (popup), and which are fixed size or resizable.

I almost never use automatic rolling up/down rollouts (or other UI blocks) in modern interfaces (but used this mechanics in my old tools).

Sometimes I use changing the control’s caption, and pretty often a color of control or color frame around the control depending on the task condition.


From the user point of view, I prefer disable-enable. Because by hiding I may never have chance to see that at all.
From the developer point of view, I use WPF for entire my UI creation both (popup or modifyPanel) and Never have flicker, even in older versions. In your case for example you can create several presets. in each preset you can bind every property like position, size, content, visibility and almost ANY property to a single enum. Then by changing that enum your entire UI will be changed. If you have any example I can convert it to WPF version to demostate what I’m sayng.