I don't do much GUI design. I am working on an application and helping to define some requirements for a user preferences dialog. Some of the settings are boolean values that can be determined by a setting they are dependent on.

For example, SettingB can be true or false if SettingA is true but SettingB can only be false if SettingA is false. Note that this relationship is not symmetrical so changing SettingB has no affect on SettingA.

One proposed solution was to disable SettingB (grey out the control) and set it to False whenever SettingA is set to False.

Another solution could be to toggle SettingA to true when needed. So changing SettingB to true would also change SettingA to true if it were not true already.

I don't like the first solution because I'm not sure how to tell the user why a setting is disabled. I don't like the second solution because I don't like the idea of changing a setting on a user yet having no way of explaining why the app did it. Are either of these two solutions preferred or is there a better way that I'm not aware of? If one of these solutions work how can I address the shortcomings of that solution?

  • Is it clear from context that the settings are related? For example, if there are two checkboxes: A - Do you watch sports?, B - Do you watch football? It would be intuitive that B is set to false if A is false and I guess no explanation is needed...
    – Jaroslav M
    Oct 31, 2017 at 8:45
  • A simple logical grouping would help this. It's difficult to answer without seeing the actual data groupings.
    – Otis
    Oct 31, 2017 at 15:11

1 Answer 1


The convention I have seen in many apps is to indent dependent settings under parent ones. When the parent checkbox is unchecked, the dependent checkboxes become disabled, but they retain their checked/unchecked value.

Here’s an example from a section of the settings in WebStorm:

nested checkboxes with the parent checked nested checkboxes are disabled when the parent is unchecked

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.