There is a hierarchy of selectable items, let's say a parent and two children. All three items have checkboxes. When both children are checked, the parent's checkbox is also checked. When both children are unchecked, the parent's checkbox is also clear. When only one of the children is checked, the parent is half-checked (color fill or a diagonal inside the checkbox).

This relationship works both ways - the parent's checkbox works as a select/clear all for the children checkboxes.

What should happen when users click the half-checked parent - check or uncheck? Or rather, what factors might influence this decision?

Thanks @Peter! With #1 I tend to disagree, I think that it harms the perceived consistency of the app - for one folder all checked children will mean a checked parent, but not for another - based on whether they were checked "top-down" or "bottom-up". That logic requires quite a big mental effort and a bit of actual research work from the user to understand it. #2 is great, and #3 is very interesting - I wasn't going to let them get back to "mixed" (mx->ch->unch->ch->unch), but now I'm thinking - why not? The only problem is with the new items which didn't exist in the original mixed state.
–
Vitaly MijiritskyMar 8 '11 at 4:59

based on whether they were checked "top-down" or "bottom-up" - IMO WinZip exactly makes this distinction, so you can distinguish between "parent checked" (parent and all children will be backed up), and "children checked individually" (only known children will be backed up) - but yeah, that depends on your app. ---- going back to mixed would be enough during editing the rtee. I don't expect this to work after e.g. closing the app.
–
peterchenMar 8 '11 at 8:33

I know it isn't what you asked, but the best solution is to not do this sort of thing at all. Users do not understand the "tri-state" checkbox. It doesn't make any sense whatsoever. A checkbox should only have two states - checked and unchecked.

If you need a way to select/deselect all children, add a button or a link next to the parent item to allow that functionality. It will be much more clear that way.

@Charles, this approach might - just might - hold up on websites that are simple, intended for the masses, and can afford no learning curve. When designing systems for trained professionals, who deal with large amounts of data organized in deep hierarchies with complex relationships between them, you can't afford sticking to the simplest solution. Complicated tasks require sophisticated tools, otherwise they become still much more complicated and unclear.
–
Vitaly MijiritskyMar 7 '11 at 20:02

1

@Vitaly - I design interfaces for "trained professionals" all of the time, and they are not trained in using websites or applications; they are trained in the specifics of their profession. Unless you want to do actual training on your application for every new hire, you ALWAYS need to keep your interface simple and standard. Doing things the way you are suggesting here means that you will be dealing with more support than you would if you kept the interface simple.
–
Charles BoyungMar 7 '11 at 20:07

1

@Vitaly - "Complicated tasks require sophisticated tools" - And where is it written that sophisticated tools should be completely counterintuitive? In fact, I'm pretty sure the opposite is true. A sophisticated tool should be one that doesn't require people to be confused every time they use it. The fact that you (as a supposed UI expert by being on this site) can't seem to figure out which way makes sense for this UI element should be reason enough for you to understand that it shouldn't be used.
–
Charles BoyungMar 7 '11 at 20:10

I'm not the brightest person on earth, and I understand tri-state checkboxes, at least if they look different. Everybody who isn't a complete lernresistant moron can understand 3 states. It's not rocketscience. My Keyboard has 105 keys, alone 4 types of them influence the meaning of the others (Alt, Shift, Strg, Alt-Gr). Just use another layout/form/size/color.
–
user unknownMar 10 '11 at 2:10

If you follow the windows approach, suppose you look at the properties of a folder and click on the read-only checkbox, it goes from fully checked to partially checked to unchecked and back to fully checked. So in my opinion, it should follow the same approach. Hope this helps.