#include "Desk.Wimp.h"
#include "Desk.WimpSWIs.h"
#include "Desk.Icon.h"

extern void Desk_Icon_SetShade(Desk_window_handle window, Desk_icon_handle icon, int flag)
/* If flag == 0, (and the icon is currently shaded) it will be un-shaded
 * If flag == 1, (and the icon is currently not shaded) it will be shaded
 */
{
  Desk_icon_block istate;

  Desk_Wimp_eGetIconState(window, icon, &istate);
  if (flag)
  {
    if (!istate.flags.data.shaded)
      Desk_Wimp_eSetIconState(window, icon, Desk_icon_SHADED, Desk_icon_SHADED);

    Desk_Icon_LoseCaret(window, icon);    /* Lose the caret if it is in this icon */
  }
  else
  {
    if (istate.flags.data.shaded)
      Desk_Wimp_eSetIconState(window, icon, 0, Desk_icon_SHADED);
  }
}
