/*
 *   Windows Calendar
 *   Copyright (c) 1985 by Microsoft Corporation, all rights reserved.
 *   Written by Mark L. Chamberlin, consultant to Microsoft.
 *
*/

/*
 *****
 ***** calmark.c
 *****
*/

#include "cal.h"


/**** CmdMark - mark or unmark the selected day. */

VOID APIENTRY CmdMark ()

     {

     register DT   dt;
     INT  itdd;
     RECT rect;
     register DD *pdd;

     /* Note that the Mark command only operates on the selected date,
        and this must be in the tdd, so there is no need to check the
        return result of FSearchTdd.
     */
     dt = DtFromPd3 (&vd3Sel);
     FSearchTdd (dt, &itdd);

     /* Mark or unmark the DD (toggle its state). */
     pdd = TddLock () + itdd;

     /* Update the month array by toggling the marked bit for the current
        day.
     */
     /* clear old marked bits on day */
     vrgbMonth [vwWeekdayFirst + vd3Sel.wDay] &= CLEARMARKEDBITS;

     /* set new marked bits */
     vrgbMonth [vwWeekdayFirst + vd3Sel.wDay] |= viMarkSymbol;
     pdd -> fMarked = (SINT)viMarkSymbol;

     TddUnlock();
     /* If in month mode, cause the marking box to be drawn or erased. */
     if (!vfDayMode)
          {
          MapDayToRect (vd3Sel.wDay, &rect);
          InvalidateRect (vhwnd2B, (LPRECT)&rect, TRUE);
          }


     /* Marking a date makes the file dirty. */
     vfDirty = TRUE;
     }
