- /* it's not set to skip the taskbar (unless it is a type that would be
- expected to set this hint, or modal) */
- ok = ok && ((ft->type == OB_CLIENT_TYPE_DOCK ||
- ft->type == OB_CLIENT_TYPE_DESKTOP ||
- ft->type == OB_CLIENT_TYPE_TOOLBAR ||
- ft->type == OB_CLIENT_TYPE_MENU ||
- ft->type == OB_CLIENT_TYPE_UTILITY) ||
- ft->modal ||
- !ft->skip_taskbar);
+ /* it's not set to skip the taskbar (but this is overridden if the
+ window is modal or if the user asked for this window to be focused,
+ or if the window is iconified (and does not have any parents with
+ which to uniconify it), and it is not used for windows which are
+ hilited, or dialog windows as these need user interaction and should
+ not be long-lasting windows */
+ ok = ok && (!ft->skip_taskbar ||
+ (ft->modal || user_request ||
+ (ft->iconic && !ft->parents) ||
+ ft->demands_attention ||
+ ft->type == OB_CLIENT_TYPE_DIALOG));