Ignore:
Timestamp:
Mar 31, 2001, 3:25:59 PM (25 years ago)
Author:
sandervl
Message:

Resync with Wine + previous merge fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/comctl32/monthcal.c

    r4627 r5416  
    55 * Copyright 1999 Alex Priem (alexp@sci.kun.nl)
    66 * Copyright 1999 Chris Morgan <cmorgan@wpi.edu> and
    7  *        James Abbatiello <abbeyj@wpi.edu>
     7 *                James Abbatiello <abbeyj@wpi.edu>
    88 * Copyright 2000 Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>
    99 *
     
    1313 *
    1414 *  FIXME: handle resources better (doesn't work now); also take care
    15            of internationalization.
     15           of internationalization. 
    1616 *  FIXME: keyboard handling.
    1717 */
     
    2626#include <stdio.h>
    2727#include <stdlib.h>
     28#include <string.h>
    2829
    2930#include "winbase.h"
     
    3132#include "wingdi.h"
    3233#include "winuser.h"
    33 #include "win.h"
    3434#include "winnls.h"
    3535#include "commctrl.h"
     
    3737#include "debugtools.h"
    3838
     39#ifdef __WIN32OS2__
     40#include "ccbase.h"
     41#endif
     42
    3943DEFAULT_DEBUG_CHANNEL(monthcal);
    4044
    41 #define MC_SEL_LBUTUP       1   /* Left button released */
    42 #define MC_SEL_LBUTDOWN     2   /* Left button pressed in calendar */
     45#define MC_SEL_LBUTUP       1   /* Left button released */
     46#define MC_SEL_LBUTDOWN     2   /* Left button pressed in calendar */
    4347#define MC_PREVPRESSED      4   /* Prev month button pressed */
    4448#define MC_NEXTPRESSED      8   /* Next month button pressed */
    45 #define MC_NEXTMONTHDELAY   350 /* when continuously pressing `next */
    46                                         /* month', wait 500 ms before going */
    47                                         /* to the next month */
    48 #define MC_NEXTMONTHTIMER   1           /* Timer ID's */
    49 #define MC_PREVMONTHTIMER   2
     49#define MC_NEXTMONTHDELAY   350 /* when continuously pressing `next */
     50                                                                                /* month', wait 500 ms before going */
     51                                                                                /* to the next month */
     52#define MC_NEXTMONTHTIMER   1                   /* Timer ID's */
     53#define MC_PREVMONTHTIMER   2                   
    5054
    5155typedef struct
    5256{
    53     COLORREF    bk;
    54     COLORREF    txt;
    55     COLORREF    titlebk;
    56     COLORREF    titletxt;
    57     COLORREF    monthbk;
    58     COLORREF    trailingtxt;
    59     HFONT   hFont;
    60     HFONT   hBoldFont;
    61     int     textHeight;
    62     int     textWidth;
    63     int     height_increment;
    64     int     width_increment;
    65     int     left_offset;
    66     int     top_offset;
    67     int     firstDayplace; /* place of the first day of the current month */
    68     int     delta;  /* scroll rate; # of months that the */
     57#ifdef __WIN32OS2__
     58    COMCTL32_HEADER header;
     59#endif
     60    COLORREF    bk;
     61    COLORREF    txt;
     62    COLORREF    titlebk;
     63    COLORREF    titletxt;
     64    COLORREF    monthbk;
     65    COLORREF    trailingtxt;
     66    HFONT       hFont;
     67    HFONT       hBoldFont;
     68    int         textHeight;
     69    int         textWidth;
     70    int         height_increment;
     71    int         width_increment;
     72    int         left_offset;
     73    int         top_offset;
     74    int         firstDayplace; /* place of the first day of the current month */
     75    int         delta;  /* scroll rate; # of months that the */
    6976                        /* control moves when user clicks a scroll button */
    70     int     visible;    /* # of months visible */
    71     int     firstDay;   /* Start month calendar with firstDay's day */
    72     int     monthRange;
     77    int         visible;        /* # of months visible */
     78    int         firstDay;       /* Start month calendar with firstDay's day */
     79    int         monthRange;
    7380    MONTHDAYSTATE *monthdayState;
    74     SYSTEMTIME  todaysDate;
    75     DWORD   currentMonth;
    76     DWORD   currentYear;
    77     int     status;     /* See MC_SEL flags */
    78     int     curSelDay;  /* current selected day */
    79     int     firstSelDay;    /* first selected day */
    80     int     maxSelCount;
    81     SYSTEMTIME  minSel;
    82     SYSTEMTIME  maxSel;
    83     DWORD   rangeValid;
    84     SYSTEMTIME  minDate;
    85     SYSTEMTIME  maxDate;
    86 
    87     RECT rcClient;  /* rect for whole client area */
    88     RECT rcDraw;    /* rect for drawable portion of client area */
    89     RECT title;     /* rect for the header above the calendar */
    90     RECT titlebtnnext;  /* the `next month' button in the header */
    91     RECT titlebtnprev;  /* the `prev month' button in the header */
    92     RECT titlemonth;    /* the `month name' txt in the header */
    93     RECT titleyear; /* the `year number' txt in the header */
    94     RECT wdays;     /* week days at top */
    95     RECT days;      /* calendar area */
    96     RECT weeknums;  /* week numbers at left side */
    97     RECT todayrect; /* `today: xx/xx/xx' text rect */
     81    SYSTEMTIME  todaysDate;
     82    DWORD       currentMonth;
     83    DWORD       currentYear;
     84    int         status;         /* See MC_SEL flags */
     85    int         curSelDay;      /* current selected day */
     86    int         firstSelDay;    /* first selected day */
     87    int         maxSelCount;
     88    SYSTEMTIME  minSel;
     89    SYSTEMTIME  maxSel;
     90    DWORD       rangeValid;
     91    SYSTEMTIME  minDate;
     92    SYSTEMTIME  maxDate;
     93               
     94    RECT rcClient;      /* rect for whole client area */
     95    RECT rcDraw;        /* rect for drawable portion of client area */
     96    RECT title;         /* rect for the header above the calendar */
     97    RECT titlebtnnext;  /* the `next month' button in the header */
     98    RECT titlebtnprev;  /* the `prev month' button in the header */     
     99    RECT titlemonth;    /* the `month name' txt in the header */
     100    RECT titleyear;     /* the `year number' txt in the header */
     101    RECT wdays;         /* week days at top */
     102    RECT days;          /* calendar area */
     103    RECT weeknums;      /* week numbers at left side */
     104    RECT todayrect;     /* `today: xx/xx/xx' text rect */
    98105    HWND hWndYearEdit;  /* Window Handle of edit box to handle years */
    99106    HWND hWndYearUpDown;/* Window Handle of updown box to handle years */
     
    134141
    135142/* make sure that time is valid */
    136 static int MONTHCAL_ValidateTime(SYSTEMTIME time)
     143static int MONTHCAL_ValidateTime(SYSTEMTIME time) 
    137144{
    138145  if(time.wMonth > 12) return FALSE;
    139146  if(time.wDayOfWeek > 6) return FALSE;
    140147  if(time.wDay > MONTHCAL_MonthLength(time.wMonth, time.wYear))
    141       return FALSE;
     148          return FALSE;
    142149  if(time.wHour > 23) return FALSE;
    143150  if(time.wMinute > 59) return FALSE;
     
    149156
    150157
    151 void MONTHCAL_CopyTime(const SYSTEMTIME *from, SYSTEMTIME *to)
     158void MONTHCAL_CopyTime(const SYSTEMTIME *from, SYSTEMTIME *to) 
    152159{
    153160  to->wYear = from->wYear;
     
    162169
    163170
    164 /* Note:Depending on DST, this may be offset by a day.
     171/* Note:Depending on DST, this may be offset by a day. 
    165172   Need to find out if we're on a DST place & adjust the clock accordingly.
    166173   Above function assumes we have a valid data.
     
    175182  year-=(month < 3);
    176183
    177   return((year + year/4 - year/100 + year/400 +
     184  return((year + year/4 - year/100 + year/400 + 
    178185         DayOfWeekTable[month-1] + day - 1 ) % 7);
    179186}
     
    182189   and day in the calendar. day== 0 mean the last day of tha last month
    183190*/
    184 static int MONTHCAL_CalcDayFromPos(MONTHCAL_INFO *infoPtr, int x, int y,
    185                    int *daypos,int *weekpos)
     191static int MONTHCAL_CalcDayFromPos(MONTHCAL_INFO *infoPtr, int x, int y, 
     192                                   int *daypos,int *weekpos)
    186193{
    187194  int retval, firstDay;
     
    195202  *daypos = (x - infoPtr->days.left ) / infoPtr->width_increment;
    196203  *weekpos = (y - infoPtr->days.top ) / infoPtr->height_increment;
    197 
     204   
    198205  firstDay = (MONTHCAL_CalculateDayOfWeek(1, infoPtr->currentMonth, infoPtr->currentYear)+6 - infoPtr->firstDay)%7;
    199206  retval = *daypos + (7 * *weekpos) - firstDay;
     
    204211/* sets x and y to be the position of the day */
    205212/* x == day, y == week where(0,0) == firstDay, 1st week */
    206 static void MONTHCAL_CalcDayXY(MONTHCAL_INFO *infoPtr, int day, int month,
     213static void MONTHCAL_CalcDayXY(MONTHCAL_INFO *infoPtr, int day, int month, 
    207214                                 int *x, int *y)
    208215{
     
    220227    if(prevMonth==0)
    221228       prevMonth = 12;
    222 
     229   
    223230    *x = (MONTHCAL_MonthLength(prevMonth, infoPtr->currentYear) - firstDay) % 7;
    224231    *y = 0;
     
    233240
    234241/* x: column(day), y: row(week) */
    235 static void MONTHCAL_CalcDayRect(MONTHCAL_INFO *infoPtr, RECT *r, int x, int y)
     242static void MONTHCAL_CalcDayRect(MONTHCAL_INFO *infoPtr, RECT *r, int x, int y) 
    236243{
    237244  r->left = infoPtr->days.left + x * infoPtr->width_increment;
     
    245252/* day is the day value of the month(1 == 1st), month is the month */
    246253/* value(january == 1, december == 12) */
    247 static inline void MONTHCAL_CalcPosFromDay(MONTHCAL_INFO *infoPtr,
     254static inline void MONTHCAL_CalcPosFromDay(MONTHCAL_INFO *infoPtr, 
    248255                                            int day, int month, RECT *r)
    249256{
     
    271278  x = day_rect.left;
    272279  y = day_rect.top;
    273 
     280       
    274281  points[0].x = x;
    275282  points[0].y = y - 1;
     
    280287  points[3].x = x + infoPtr->width_increment;
    281288  points[3].y = y + 0.5 * infoPtr->height_increment;
    282 
     289       
    283290  points[4].x = x + infoPtr->width_increment;
    284291  points[4].y = y + 0.9 * infoPtr->height_increment;
     
    287294  points[6].x = x + 0.5 * infoPtr->width_increment;
    288295  points[6].y = y + 0.9 * infoPtr->height_increment; /* bring the bottom up just
    289                 a hair to fit inside the day rectangle */
    290 
     296                                a hair to fit inside the day rectangle */
     297       
    291298  points[7].x = x + 0.2 * infoPtr->width_increment;
    292299  points[7].y = y + 0.8 * infoPtr->height_increment;
     
    302309  points[12].x = x + 0.4 * infoPtr->width_increment;
    303310  points[12].y = y + 0.2 * infoPtr->height_increment;
    304 
     311 
    305312  PolyBezier(hdc, points, 13);
    306313  DeleteObject(hRedPen);
     
    322329  sprintf(buf, "%d", day);
    323330
    324 /* No need to check styles: when selection is not valid, it is set to zero.
     331/* No need to check styles: when selection is not valid, it is set to zero. 
    325332 * 1<day<31, so evertyhing's OK.
    326333 */
     
    342349
    343350    /* FIXME: this may need to be changed now b/c of the other
    344     drawing changes 11/3/99 CMM */
     351        drawing changes 11/3/99 CMM */
    345352    r2.left   = r.left - 0.25 * infoPtr->textWidth;
    346353    r2.top    = r.top;
     
    383390
    384391/* CHECKME: For `todays date', do we need to check the locale?*/
    385 static void MONTHCAL_Refresh(HWND hwnd, HDC hdc, PAINTSTRUCT* ps)
     392static void MONTHCAL_Refresh(HWND hwnd, HDC hdc, PAINTSTRUCT* ps) 
    386393{
    387394  MONTHCAL_INFO *infoPtr=MONTHCAL_GetInfoPtr(hwnd);
     
    418425  hbr = CreateSolidBrush (infoPtr->bk);
    419426  FillRect(hdc, rcClient, hbr);
    420   DeleteObject(hbr);
     427  DeleteObject(hbr);       
    421428
    422429  /* draw header */
     
    427434    DeleteObject(hbr);
    428435  }
    429 
     436       
    430437  /* if the previous button is pressed draw it depressed */
    431438  if(IntersectRect(&rcTemp, &(ps->rcPaint), prev))
    432   {
     439  { 
    433440    if((infoPtr->status & MC_PREVPRESSED))
    434441        DrawFrameControl(hdc, prev, DFC_SCROLL,
    435        DFCS_SCROLLLEFT | DFCS_PUSHED |
     442           DFCS_SCROLLLEFT | DFCS_PUSHED |
    436443          (dwStyle & WS_DISABLED ? DFCS_INACTIVE : 0));
    437444    else /* if the previous button is pressed draw it depressed */
    438445      DrawFrameControl(hdc, prev, DFC_SCROLL,
    439        DFCS_SCROLLLEFT |(dwStyle & WS_DISABLED ? DFCS_INACTIVE : 0));
    440   }
    441 
    442   /* if next button is depressed draw it depressed */
     446           DFCS_SCROLLLEFT |(dwStyle & WS_DISABLED ? DFCS_INACTIVE : 0));
     447  }
     448
     449  /* if next button is depressed draw it depressed */   
    443450  if(IntersectRect(&rcTemp, &(ps->rcPaint), next))
    444451  {
    445452    if((infoPtr->status & MC_NEXTPRESSED))
    446453      DrawFrameControl(hdc, next, DFC_SCROLL,
    447            DFCS_SCROLLRIGHT | DFCS_PUSHED |
     454           DFCS_SCROLLRIGHT | DFCS_PUSHED |
    448455           (dwStyle & WS_DISABLED ? DFCS_INACTIVE : 0));
    449456    else /* if the next button is pressed draw it depressed */
     
    459466  titlemonth->left   = title->left;
    460467  titlemonth->right  = title->right;
    461 
     468 
    462469  GetLocaleInfoA( LOCALE_USER_DEFAULT,LOCALE_SMONTHNAME1+infoPtr->currentMonth -1,
    463           buf1,sizeof(buf1));
     470                  buf1,sizeof(buf1));
    464471  sprintf(buf, "%s %ld", buf1, infoPtr->currentYear);
    465 
     472 
    466473  if(IntersectRect(&rcTemp, &(ps->rcPaint), titlemonth))
    467474  {
    468     DrawTextA(hdc, buf, strlen(buf), titlemonth,
     475    DrawTextA(hdc, buf, strlen(buf), titlemonth, 
    469476                        DT_CENTER | DT_VCENTER | DT_SINGLELINE);
    470477  }
     
    474481/* titlemonth left/right contained rect for whole titletxt('June  1999')
    475482  * MCM_HitTestInfo wants month & year rects, so prepare these now.
    476   *(no, we can't draw them separately; the whole text is centered)
     483  *(no, we can't draw them separately; the whole text is centered) 
    477484  */
    478485  GetTextExtentPoint32A(hdc, buf, strlen(buf), &size);
     
    482489  titlemonth->right = titlemonth->left + size.cx;
    483490  titleyear->left = titlemonth->right;
    484 
     491 
    485492  /* draw month area */
    486493  rcTemp.top=infoPtr->wdays.top;
     
    494501    DeleteObject(hbr);
    495502  }
    496 
     503       
    497504/* draw line under day abbreviatons */
    498505
    499506  MoveToEx(hdc, infoPtr->days.left + 3, title->bottom + textHeight + 1, NULL);
    500 
     507     
    501508  LineTo(hdc, rcDraw->right - 3, title->bottom + textHeight + 1);
    502 
     509 
    503510  prevMonth = infoPtr->currentMonth - 1;
    504511  if(prevMonth == 0) /* if currentMonth is january(1) prevMonth is */
     
    522529  for(j=0; j<7; j++) {
    523530    GetLocaleInfoA( LOCALE_USER_DEFAULT,LOCALE_SABBREVDAYNAME1 + (i +j)%7,
    524             buf,sizeof(buf));
     531                    buf,sizeof(buf));
    525532    DrawTextA(hdc, buf, strlen(buf), days,
    526533                         DT_CENTER | DT_VCENTER | DT_SINGLELINE );
     
    530537
    531538/* draw day numbers; first, the previous month */
    532 
     539 
    533540  firstDay = MONTHCAL_CalculateDayOfWeek(1, infoPtr->currentMonth, infoPtr->currentYear);
    534 
    535   day = MONTHCAL_MonthLength(prevMonth, infoPtr->currentYear)  +
     541 
     542  day = MONTHCAL_MonthLength(prevMonth, infoPtr->currentYear)  + 
    536543    (infoPtr->firstDay + 7  - firstDay)%7 + 1;
    537544  if (day > MONTHCAL_MonthLength(prevMonth, infoPtr->currentYear))
     
    546553    if(IntersectRect(&rcTemp, &(ps->rcPaint), &rcDay))
    547554    {
    548       MONTHCAL_DrawDay(hdc, infoPtr, day, prevMonth, i, 0,
     555      MONTHCAL_DrawDay(hdc, infoPtr, day, prevMonth, i, 0, 
    549556          infoPtr->monthdayState[m] & mask);
    550557    }
     
    570577    {
    571578
    572       MONTHCAL_DrawDay(hdc, infoPtr, day, infoPtr->currentMonth, i, 0,
    573     infoPtr->monthdayState[m] & mask);
     579      MONTHCAL_DrawDay(hdc, infoPtr, day, infoPtr->currentMonth, i, 0, 
     580        infoPtr->monthdayState[m] & mask);
    574581
    575582      if((infoPtr->currentMonth==infoPtr->todaysDate.wMonth) &&
    576583          (day==infoPtr->todaysDate.wDay) &&
    577       (infoPtr->currentYear == infoPtr->todaysDate.wYear)) {
     584          (infoPtr->currentYear == infoPtr->todaysDate.wYear)) {
    578585        if(!(dwStyle & MCS_NOTODAYCIRCLE))
    579       MONTHCAL_CircleDay(hdc, infoPtr, day, infoPtr->currentMonth);
     586          MONTHCAL_CircleDay(hdc, infoPtr, day, infoPtr->currentMonth);
    580587      }
    581588    }
     
    588595  j = 1; /* move to the 2nd week of the current month */
    589596  i = 0; /* move back to sunday */
    590   while(day <= MONTHCAL_MonthLength(infoPtr->currentMonth, infoPtr->currentYear)) {
     597  while(day <= MONTHCAL_MonthLength(infoPtr->currentMonth, infoPtr->currentYear)) {     
    591598    MONTHCAL_CalcDayRect(infoPtr, &rcDay, i, j);
    592599    if(IntersectRect(&rcTemp, &(ps->rcPaint), &rcDay))
     
    597604      if((infoPtr->currentMonth==infoPtr->todaysDate.wMonth) &&
    598605          (day==infoPtr->todaysDate.wDay) &&
    599           (infoPtr->currentYear == infoPtr->todaysDate.wYear))
    600         if(!(dwStyle & MCS_NOTODAYCIRCLE))
    601       MONTHCAL_CircleDay(hdc, infoPtr, day, infoPtr->currentMonth);
     606          (infoPtr->currentYear == infoPtr->todaysDate.wYear)) 
     607        if(!(dwStyle & MCS_NOTODAYCIRCLE)) 
     608          MONTHCAL_CircleDay(hdc, infoPtr, day, infoPtr->currentMonth);
    602609    }
    603610    mask<<=1;
     
    620627    MONTHCAL_CalcDayRect(infoPtr, &rcDay, i, j);
    621628    if(IntersectRect(&rcTemp, &(ps->rcPaint), &rcDay))
    622     {
     629    {   
    623630      MONTHCAL_DrawDay(hdc, infoPtr, day, infoPtr->currentMonth + 1, i, j,
    624         infoPtr->monthdayState[m] & mask);
     631                infoPtr->monthdayState[m] & mask);
    625632    }
    626633
    627634    mask<<=1;
    628635    day++;
    629     i++;
     636    i++;       
    630637    if(i==7) { /* past saturday, go to next week's sunday */
    631638      i = 0;
     
    643650    if(!(dwStyle & MCS_NOTODAYCIRCLE))  {
    644651      /*day is the number of days from nextmonth we put on the calendar */
    645       MONTHCAL_CircleDay(hdc, infoPtr,
    646              day+MONTHCAL_MonthLength(infoPtr->currentMonth,infoPtr->currentYear),
    647             infoPtr->currentMonth);
     652      MONTHCAL_CircleDay(hdc, infoPtr, 
     653                         day+MONTHCAL_MonthLength(infoPtr->currentMonth,infoPtr->currentYear),
     654                        infoPtr->currentMonth);
    648655      offset+=textWidth;
    649656    }
    650657    if (!LoadStringA(COMCTL32_hModule,IDM_TODAY,buf1,sizeof(buf1)))
    651658      {
    652     WARN("Can't load resource\n");
    653     strcpy(buf1,"Today:");
     659        WARN("Can't load resource\n");
     660        strcpy(buf1,"Today:");
    654661      }
    655662    MONTHCAL_CalcDayRect(infoPtr, &rtoday, 1, 6);
     
    667674  }
    668675
    669 /*eventually draw week numbers*/
     676/*eventually draw week numbers*/   
    670677  if(dwStyle & MCS_WEEKNUMBERS)  {
    671678    /* display weeknumbers*/
     
    675682       LOCALE_IFIRSTWEEKOFYEAR == 0 (e.g US?):
    676683       The week containing Jan 1 is the first week of year
    677        LOCALE_IFIRSTWEEKOFYEAR == 2 (e.g. Germany):
     684       LOCALE_IFIRSTWEEKOFYEAR == 2 (e.g. Germany): 
    678685       First week of year must contain 4 days of the new year
    679686       LOCALE_IFIRSTWEEKOFYEAR == 1  (what contries?)
     
    681688    */
    682689    GetLocaleInfoA(LOCALE_USER_DEFAULT, LOCALE_IFIRSTWEEKOFYEAR,
    683              buf, sizeof(buf));
     690                     buf, sizeof(buf));
    684691    sscanf(buf, "%d", &weeknum);
    685692    switch (weeknum)
    686693      {
    687694      case 1: mindays = 6;
    688     break;
     695        break;
    689696      case 2: mindays = 3;
    690     break;
     697        break;
    691698      case 0:
    692699      default:
    693     mindays = 0;
     700        mindays = 0;
    694701      }
    695702    if (infoPtr->currentMonth < 2)
    696703      {
    697     /* calculate all those exceptions for january */
    698     weeknum1=MONTHCAL_CalculateDayOfWeek(1,1,infoPtr->currentYear);
    699     if ((infoPtr->firstDay +7 - weeknum1)%7 > mindays)
    700         weeknum =1;
    701     else
    702       {
    703         weeknum = 0;
    704         for(i=0; i<11; i++)
    705           weeknum+=MONTHCAL_MonthLength(i+1, infoPtr->currentYear-1);
    706         weeknum +=startofprescal+ 7;
    707         weeknum /=7;
    708         weeknum1=MONTHCAL_CalculateDayOfWeek(1,1,infoPtr->currentYear-1);
    709         if ((infoPtr->firstDay + 7 - weeknum1)%7 > mindays)
    710           weeknum++;
    711       }
     704        /* calculate all those exceptions for january */
     705        weeknum1=MONTHCAL_CalculateDayOfWeek(1,1,infoPtr->currentYear);
     706        if ((infoPtr->firstDay +7 - weeknum1)%7 > mindays)
     707            weeknum =1;
     708        else
     709          {
     710            weeknum = 0;
     711            for(i=0; i<11; i++)
     712              weeknum+=MONTHCAL_MonthLength(i+1, infoPtr->currentYear-1);
     713            weeknum +=startofprescal+ 7;
     714            weeknum /=7;
     715            weeknum1=MONTHCAL_CalculateDayOfWeek(1,1,infoPtr->currentYear-1);
     716            if ((infoPtr->firstDay + 7 - weeknum1)%7 > mindays)
     717              weeknum++;
     718          }
    712719      }
    713720    else
    714721      {
    715     weeknum = 0;
    716     for(i=0; i<prevMonth-1; i++)
    717       weeknum+=MONTHCAL_MonthLength(i+1, infoPtr->currentYear);
    718     weeknum +=startofprescal+ 7;
    719     weeknum /=7;
    720     weeknum1=MONTHCAL_CalculateDayOfWeek(1,1,infoPtr->currentYear);
    721     if ((infoPtr->firstDay + 7 - weeknum1)%7 > mindays)
    722       weeknum++;
     722        weeknum = 0;
     723        for(i=0; i<prevMonth-1; i++)
     724          weeknum+=MONTHCAL_MonthLength(i+1, infoPtr->currentYear);
     725        weeknum +=startofprescal+ 7;
     726        weeknum /=7;
     727        weeknum1=MONTHCAL_CalculateDayOfWeek(1,1,infoPtr->currentYear);
     728        if ((infoPtr->firstDay + 7 - weeknum1)%7 > mindays)
     729          weeknum++;
    723730      }
    724731    days->left = infoPtr->weeknums.left;
     
    728735    for(i=0; i<6; i++) {
    729736      if((i==0)&&(weeknum>50))
    730     {
    731       sprintf(buf, "%d", weeknum);
    732       weeknum=0;
    733     }
     737        {
     738          sprintf(buf, "%d", weeknum);
     739          weeknum=0;
     740        }
    734741      else if((i==5)&&(weeknum>47))
    735     {
    736       sprintf(buf, "%d", 1);
    737     }
     742        {
     743          sprintf(buf, "%d", 1);
     744        }
    738745      else
    739     sprintf(buf, "%d", weeknum + i);
     746        sprintf(buf, "%d", weeknum + i);
    740747      DrawTextA(hdc, buf, -1, days, DT_CENTER | DT_VCENTER | DT_SINGLELINE );
    741748      days->top+=infoPtr->height_increment;
    742749      days->bottom+=infoPtr->height_increment;
    743750    }
    744 
     751                       
    745752    MoveToEx(hdc, infoPtr->weeknums.right, infoPtr->weeknums.top + 3 , NULL);
    746753    LineTo(hdc,   infoPtr->weeknums.right, infoPtr->weeknums.bottom );
    747 
     754               
    748755  }
    749756  /* currentFont was font at entering Refresh */
    750757
    751758  SetBkColor(hdc, oldBkColor);
    752   SelectObject(hdc, currentFont);
     759  SelectObject(hdc, currentFont);     
    753760  SetTextColor(hdc, oldTextColor);
    754761}
    755762
    756763
    757 static LRESULT
     764static LRESULT 
    758765MONTHCAL_GetMinReqRect(HWND hwnd, WPARAM wParam, LPARAM lParam)
    759766{
     
    761768  LPRECT lpRect = (LPRECT) lParam;
    762769  TRACE("%x %lx\n", wParam, lParam);
    763 
     770       
    764771  /* validate parameters */
    765772
     
    774781
    775782
    776 static LRESULT
     783static LRESULT 
    777784MONTHCAL_GetColor(HWND hwnd, WPARAM wParam, LPARAM lParam)
    778785{
     
    800807
    801808
    802 static LRESULT
     809static LRESULT 
    803810MONTHCAL_SetColor(HWND hwnd, WPARAM wParam, LPARAM lParam)
    804811{
     
    840847
    841848
    842 static LRESULT
     849static LRESULT 
    843850MONTHCAL_GetMonthDelta(HWND hwnd, WPARAM wParam, LPARAM lParam)
    844851{
     
    846853
    847854  TRACE("%x %lx\n", wParam, lParam);
    848 
     855 
    849856  if(infoPtr->delta)
    850857    return infoPtr->delta;
     
    854861
    855862
    856 static LRESULT
     863static LRESULT 
    857864MONTHCAL_SetMonthDelta(HWND hwnd, WPARAM wParam, LPARAM lParam)
    858865{
     
    861868
    862869  TRACE("%x %lx\n", wParam, lParam);
    863 
     870       
    864871  infoPtr->delta = (int)wParam;
    865872  return prev;
     
    867874
    868875
    869 static LRESULT
     876static LRESULT 
    870877MONTHCAL_GetFirstDayOfWeek(HWND hwnd, WPARAM wParam, LPARAM lParam)
    871878{
    872879  MONTHCAL_INFO *infoPtr = MONTHCAL_GetInfoPtr(hwnd);
    873 
     880       
    874881  return infoPtr->firstDay;
    875882}
     
    880887/* FIXME: this needs to be implemented properly in MONTHCAL_Refresh() */
    881888/* FIXME: we need more error checking here */
    882 static LRESULT
     889static LRESULT 
    883890MONTHCAL_SetFirstDayOfWeek(HWND hwnd, WPARAM wParam, LPARAM lParam)
    884891{
     
    896903    {
    897904      GetLocaleInfoA(LOCALE_USER_DEFAULT, LOCALE_IFIRSTDAYOFWEEK,
    898              buf, sizeof(buf));
     905                     buf, sizeof(buf));
    899906      TRACE("%s %d\n", buf, strlen(buf));
    900907      if(sscanf(buf, "%d", &day) == 1)
    901     infoPtr->firstDay = day;
     908        infoPtr->firstDay = day;
    902909      else
    903     infoPtr->firstDay = 0;
     910        infoPtr->firstDay = 0;
    904911    }
    905912  return prev;
     
    909916/* FIXME: fill this in */
    910917static LRESULT
    911 MONTHCAL_GetMonthRange(HWND hwnd, WPARAM wParam, LPARAM lParam)
     918MONTHCAL_GetMonthRange(HWND hwnd, WPARAM wParam, LPARAM lParam) 
    912919{
    913920  MONTHCAL_INFO *infoPtr = MONTHCAL_GetInfoPtr(hwnd);
     
    930937
    931938/* FIXME: are validated times taken from current date/time or simply
    932  * copied?
     939 * copied? 
    933940 * FIXME:    check whether MCM_GETMONTHRANGE shows correct result after
    934941 *            adjusting range with MCM_SETRANGE
     
    943950
    944951  TRACE("%x %lx\n", wParam, lParam);
    945 
     952 
    946953  if(wParam & GDTR_MAX) {
    947954    if(MONTHCAL_ValidateTime(lprgSysTimeArray[1])){
     
    966973  infoPtr->monthRange = infoPtr->maxDate.wMonth - infoPtr->minDate.wMonth;
    967974
    968   if(infoPtr->monthRange!=prev) {
    969     COMCTL32_ReAlloc(infoPtr->monthdayState,
    970         infoPtr->monthRange * sizeof(MONTHDAYSTATE));
     975  if(infoPtr->monthRange!=prev) { 
     976        COMCTL32_ReAlloc(infoPtr->monthdayState,
     977                infoPtr->monthRange * sizeof(MONTHDAYSTATE));
    971978  }
    972979
     
    976983
    977984/* CHECKME: At the moment, we copy ranges anyway,regardless of
    978  * infoPtr->rangeValid; a invalid range is simply filled with zeros in
     985 * infoPtr->rangeValid; a invalid range is simply filled with zeros in 
    979986 * SetRange.  Is this the right behavior?
    980987*/
     
    10081015  if(iMonths!=infoPtr->monthRange) return 0;
    10091016
    1010   for(i=0; i<iMonths; i++)
     1017  for(i=0; i<iMonths; i++) 
    10111018    infoPtr->monthdayState[i] = dayStates[i];
    10121019  return 1;
    10131020}
    10141021
    1015 static LRESULT
     1022static LRESULT 
    10161023MONTHCAL_GetCurSel(HWND hwnd, WPARAM wParam, LPARAM lParam)
    10171024{
     
    10291036/* FIXME: if the specified date is not visible, make it visible */
    10301037/* FIXME: redraw? */
    1031 static LRESULT
     1038static LRESULT 
    10321039MONTHCAL_SetCurSel(HWND hwnd, WPARAM wParam, LPARAM lParam)
    10331040{
     
    10501057
    10511058
    1052 static LRESULT
     1059static LRESULT 
    10531060MONTHCAL_GetMaxSelCount(HWND hwnd, WPARAM wParam, LPARAM lParam)
    10541061{
     
    10601067
    10611068
    1062 static LRESULT
     1069static LRESULT 
    10631070MONTHCAL_SetMaxSelCount(HWND hwnd, WPARAM wParam, LPARAM lParam)
    10641071{
     
    10741081
    10751082
    1076 static LRESULT
     1083static LRESULT 
    10771084MONTHCAL_GetSelRange(HWND hwnd, WPARAM wParam, LPARAM lParam)
    10781085{
     
    10931100    return TRUE;
    10941101  }
    1095 
     1102 
    10961103  return FALSE;
    10971104}
    10981105
    10991106
    1100 static LRESULT
     1107static LRESULT 
    11011108MONTHCAL_SetSelRange(HWND hwnd, WPARAM wParam, LPARAM lParam)
    11021109{
     
    11171124    return TRUE;
    11181125  }
    1119 
     1126 
    11201127  return FALSE;
    11211128}
    11221129
    11231130
    1124 static LRESULT
     1131static LRESULT 
    11251132MONTHCAL_GetToday(HWND hwnd, WPARAM wParam, LPARAM lParam)
    11261133{
     
    11381145
    11391146
    1140 static LRESULT
     1147static LRESULT 
    11411148MONTHCAL_SetToday(HWND hwnd, WPARAM wParam, LPARAM lParam)
    11421149{
     
    11631170  DWORD retval;
    11641171  int day,wday,wnum;
    1165 
    1166 
     1172 
     1173 
    11671174  x = lpht->pt.x;
    11681175  y = lpht->pt.y;
    11691176  retval = MCHT_NOWHERE;
    1170 
    1171 
    1172   /* Comment in for debugging...
    1173   TRACE("%d %d wd[%d %d %d %d] d[%d %d %d %d] t[%d %d %d %d] wn[%d %d %d %d]\n", x, y,
    1174     infoPtr->wdays.left, infoPtr->wdays.right,
    1175     infoPtr->wdays.top, infoPtr->wdays.bottom,
    1176     infoPtr->days.left, infoPtr->days.right,
    1177     infoPtr->days.top, infoPtr->days.bottom,
    1178     infoPtr->todayrect.left, infoPtr->todayrect.right,
    1179     infoPtr->todayrect.top, infoPtr->todayrect.bottom,
    1180     infoPtr->weeknums.left, infoPtr->weeknums.right,
    1181     infoPtr->weeknums.top, infoPtr->weeknums.bottom);
     1177 
     1178
     1179  /* Comment in for debugging... 
     1180  TRACE("%d %d wd[%d %d %d %d] d[%d %d %d %d] t[%d %d %d %d] wn[%d %d %d %d]\n", x, y, 
     1181        infoPtr->wdays.left, infoPtr->wdays.right,
     1182        infoPtr->wdays.top, infoPtr->wdays.bottom,
     1183        infoPtr->days.left, infoPtr->days.right,
     1184        infoPtr->days.top, infoPtr->days.bottom,
     1185        infoPtr->todayrect.left, infoPtr->todayrect.right,
     1186        infoPtr->todayrect.top, infoPtr->todayrect.bottom,
     1187        infoPtr->weeknums.left, infoPtr->weeknums.right,
     1188        infoPtr->weeknums.top, infoPtr->weeknums.bottom);
    11821189  */
    11831190
    11841191  /* are we in the header? */
    1185 
     1192 
    11861193  if(PtInRect(&infoPtr->title, lpht->pt)) {
    11871194    if(PtInRect(&infoPtr->titlebtnprev, lpht->pt)) {
     
    12011208      goto done;
    12021209    }
    1203 
     1210   
    12041211    retval = MCHT_TITLE;
    12051212    goto done;
    12061213  }
    1207 
     1214 
    12081215  day = MONTHCAL_CalcDayFromPos(infoPtr,x,y,&wday,&wnum);
    12091216  if(PtInRect(&infoPtr->wdays, lpht->pt)) {
     
    12111218    lpht->st.wYear  = infoPtr->currentYear;
    12121219    lpht->st.wMonth = (day < 1)? infoPtr->currentMonth -1 : infoPtr->currentMonth;
    1213     lpht->st.wDay   = (day < 1)?
     1220    lpht->st.wDay   = (day < 1)? 
    12141221      MONTHCAL_MonthLength(infoPtr->currentMonth-1,infoPtr->currentYear) -day : day;
    12151222    goto done;
    12161223  }
    1217   if(PtInRect(&infoPtr->weeknums, lpht->pt)) {
    1218     retval = MCHT_CALENDARWEEKNUM;
     1224  if(PtInRect(&infoPtr->weeknums, lpht->pt)) { 
     1225    retval = MCHT_CALENDARWEEKNUM; 
    12191226    lpht->st.wYear  = infoPtr->currentYear;
    1220     lpht->st.wMonth = (day < 1) ? infoPtr->currentMonth -1 :
    1221       (day > MONTHCAL_MonthLength(infoPtr->currentMonth,infoPtr->currentYear)) ?
     1227    lpht->st.wMonth = (day < 1) ? infoPtr->currentMonth -1 : 
     1228      (day > MONTHCAL_MonthLength(infoPtr->currentMonth,infoPtr->currentYear)) ? 
    12221229      infoPtr->currentMonth +1 :infoPtr->currentMonth;
    1223     lpht->st.wDay   = (day < 1 ) ?
    1224       MONTHCAL_MonthLength(infoPtr->currentMonth-1,infoPtr->currentYear) -day :
    1225       (day > MONTHCAL_MonthLength(infoPtr->currentMonth,infoPtr->currentYear)) ?
     1230    lpht->st.wDay   = (day < 1 ) ? 
     1231      MONTHCAL_MonthLength(infoPtr->currentMonth-1,infoPtr->currentYear) -day : 
     1232      (day > MONTHCAL_MonthLength(infoPtr->currentMonth,infoPtr->currentYear)) ? 
    12261233      day - MONTHCAL_MonthLength(infoPtr->currentMonth,infoPtr->currentYear) : day;
    1227     goto done;
    1228   }
    1229   if(PtInRect(&infoPtr->days, lpht->pt))
     1234    goto done;                             
     1235  }
     1236  if(PtInRect(&infoPtr->days, lpht->pt)) 
    12301237    {
    12311238      lpht->st.wYear  = infoPtr->currentYear;
    1232       if ( day < 1)
    1233     {
    1234       retval = MCHT_CALENDARDATEPREV;
    1235       lpht->st.wMonth = infoPtr->currentMonth - 1;
    1236       if (lpht->st.wMonth <1)
    1237         {
    1238           lpht->st.wMonth = 12;
    1239           lpht->st.wYear--;
    1240         }
    1241       lpht->st.wDay   = MONTHCAL_MonthLength(lpht->st.wMonth,lpht->st.wYear) -day;
    1242     }
     1239      if ( day < 1) 
     1240        {
     1241          retval = MCHT_CALENDARDATEPREV;
     1242          lpht->st.wMonth = infoPtr->currentMonth - 1;
     1243          if (lpht->st.wMonth <1)
     1244            {
     1245              lpht->st.wMonth = 12;
     1246              lpht->st.wYear--;
     1247            }
     1248          lpht->st.wDay   = MONTHCAL_MonthLength(lpht->st.wMonth,lpht->st.wYear) -day;
     1249        }
    12431250      else if (day > MONTHCAL_MonthLength(infoPtr->currentMonth,infoPtr->currentYear))
    1244     {
    1245       retval = MCHT_CALENDARDATENEXT;
    1246       lpht->st.wMonth = infoPtr->currentMonth + 1;
    1247       if (lpht->st.wMonth <12)
    1248         {
    1249           lpht->st.wMonth = 1;
    1250           lpht->st.wYear++;
    1251         }
    1252       lpht->st.wDay   = day - MONTHCAL_MonthLength(infoPtr->currentMonth,infoPtr->currentYear) ;
    1253     }
     1251        {
     1252          retval = MCHT_CALENDARDATENEXT;
     1253          lpht->st.wMonth = infoPtr->currentMonth + 1;
     1254          if (lpht->st.wMonth <12)
     1255            {
     1256              lpht->st.wMonth = 1;
     1257              lpht->st.wYear++;
     1258            }
     1259          lpht->st.wDay   = day - MONTHCAL_MonthLength(infoPtr->currentMonth,infoPtr->currentYear) ;
     1260        }
    12541261      else {
    1255     retval = MCHT_CALENDARDATE;
    1256     lpht->st.wMonth = infoPtr->currentMonth;
    1257     lpht->st.wDay   = day;
     1262        retval = MCHT_CALENDARDATE;
     1263        lpht->st.wMonth = infoPtr->currentMonth;
     1264        lpht->st.wDay   = day;
    12581265      }
    12591266      goto done;
    12601267    }
    12611268  if(PtInRect(&infoPtr->todayrect, lpht->pt)) {
    1262     retval = MCHT_TODAYLINK;
     1269    retval = MCHT_TODAYLINK; 
    12631270    goto done;
    12641271  }
    1265 
    1266 
     1272 
     1273 
    12671274  /* Hit nothing special? What's left must be background :-) */
    1268 
    1269   retval = MCHT_CALENDARBK;
    1270  done:
     1275 
     1276  retval = MCHT_CALENDARBK;       
     1277 done: 
    12711278  lpht->uHit = retval;
    12721279  return retval;
     
    12931300    nmds.nmhdr.idFrom   = GetWindowLongA(hwnd, GWL_ID);
    12941301    nmds.nmhdr.code     = MCN_GETDAYSTATE;
    1295     nmds.cDayState  = infoPtr->monthRange;
    1296     nmds.prgDayState    = COMCTL32_Alloc(infoPtr->monthRange * sizeof(MONTHDAYSTATE));
     1302    nmds.cDayState      = infoPtr->monthRange;
     1303    nmds.prgDayState    = COMCTL32_Alloc(infoPtr->monthRange * sizeof(MONTHDAYSTATE));
    12971304
    12981305    SendMessageA(GetParent(hwnd), WM_NOTIFY,
     
    13231330    nmds.nmhdr.idFrom   = GetWindowLongA(hwnd, GWL_ID);
    13241331    nmds.nmhdr.code     = MCN_GETDAYSTATE;
    1325     nmds.cDayState  = infoPtr->monthRange;
    1326     nmds.prgDayState    = COMCTL32_Alloc
     1332    nmds.cDayState      = infoPtr->monthRange;
     1333    nmds.prgDayState    = COMCTL32_Alloc
    13271334                        (infoPtr->monthRange * sizeof(MONTHDAYSTATE));
    13281335
     
    13411348  POINT menupoint;
    13421349  char buf[32];
    1343 
     1350 
    13441351  hMenu = CreatePopupMenu();
    13451352  if (!LoadStringA(COMCTL32_hModule,IDM_GOTODAY,buf,sizeof(buf)))
     
    13531360  ClientToScreen(hwnd, &menupoint);
    13541361  if( TrackPopupMenu(hMenu,TPM_RIGHTBUTTON| TPM_NONOTIFY|TPM_RETURNCMD,
    1355              menupoint.x,menupoint.y,0,hwnd,NULL))
     1362                     menupoint.x,menupoint.y,0,hwnd,NULL))
    13561363    {
    13571364      infoPtr->currentMonth=infoPtr->todaysDate.wMonth;
    13581365      infoPtr->currentYear=infoPtr->todaysDate.wYear;
    13591366      InvalidateRect(hwnd, NULL, FALSE);
    1360     }
     1367    }   
    13611368  return 0;
    13621369}
     
    13741381  POINT menupoint;
    13751382  TRACE("%x %lx\n", wParam, lParam);
    1376 
     1383       
    13771384  if (infoPtr->hWndYearUpDown)
    13781385    {
    13791386      infoPtr->currentYear=SendMessageA( infoPtr->hWndYearUpDown, UDM_SETPOS,   (WPARAM) 0,(LPARAM)0);
    13801387      if(!DestroyWindow(infoPtr->hWndYearUpDown))
    1381     {
    1382       FIXME("Can't destroy Updown Control\n");
    1383     }
     1388        {
     1389          FIXME("Can't destroy Updown Control\n");
     1390        }
    13841391      else
    1385     infoPtr->hWndYearUpDown=0;
     1392        infoPtr->hWndYearUpDown=0;
    13861393      if(!DestroyWindow(infoPtr->hWndYearEdit))
    1387     {
    1388       FIXME("Can't destroy Updown Control\n");
    1389     }
     1394        {
     1395          FIXME("Can't destroy Updown Control\n");
     1396        }
    13901397      else
    1391     infoPtr->hWndYearEdit=0;
     1398        infoPtr->hWndYearEdit=0;
    13921399      InvalidateRect(hwnd, NULL, FALSE);
    13931400    }
    1394 
     1401 
    13951402  ht.pt.x = (INT)LOWORD(lParam);
    13961403  ht.pt.y = (INT)HIWORD(lParam);
     
    14071414    return TRUE;
    14081415  }
    1409   if(hit == MCHT_TITLEBTNPREV){
     1416  if(hit == MCHT_TITLEBTNPREV){ 
    14101417    MONTHCAL_GoToPrevMonth(hwnd, infoPtr);
    14111418    infoPtr->status = MC_PREVPRESSED;
     
    14171424  if(hit == MCHT_TITLEMONTH) {
    14181425    hMenu = CreatePopupMenu();
    1419 
     1426   
    14201427    for (i=0; i<12;i++)
    14211428      {
    1422     GetLocaleInfoA( LOCALE_USER_DEFAULT,LOCALE_SMONTHNAME1+i,
    1423           buf,sizeof(buf));
    1424     AppendMenuA(hMenu, MF_STRING|MF_ENABLED,i+1, buf);
     1429        GetLocaleInfoA( LOCALE_USER_DEFAULT,LOCALE_SMONTHNAME1+i,
     1430                  buf,sizeof(buf));
     1431        AppendMenuA(hMenu, MF_STRING|MF_ENABLED,i+1, buf);
    14251432      }
    14261433    menupoint.x=infoPtr->titlemonth.right;
     
    14281435    ClientToScreen(hwnd, &menupoint);
    14291436    i= TrackPopupMenu(hMenu,TPM_LEFTALIGN | TPM_NONOTIFY | TPM_RIGHTBUTTON | TPM_RETURNCMD,
    1430               menupoint.x,menupoint.y,0,hwnd,NULL);
     1437                      menupoint.x,menupoint.y,0,hwnd,NULL);
    14311438    if ((i>0) && (i<13))
    14321439      {
    1433     infoPtr->currentMonth=i;
    1434     InvalidateRect(hwnd, NULL, FALSE);
     1440        infoPtr->currentMonth=i;
     1441        InvalidateRect(hwnd, NULL, FALSE);
    14351442      }
    14361443  }
    14371444  if(hit == MCHT_TITLEYEAR) {
    14381445    infoPtr->hWndYearEdit=CreateWindowExA(0,
    1439             "EDIT",
    1440                0,
    1441             WS_VISIBLE | WS_CHILD |UDS_SETBUDDYINT,
    1442             infoPtr->titleyear.left+3,infoPtr->titlebtnnext.top,
    1443             infoPtr->titleyear.right-infoPtr->titleyear.left,
    1444             infoPtr->textHeight,
    1445             hwnd,
    1446              (HMENU)NULL,
    1447              (HINSTANCE)NULL,
    1448             NULL);
     1446                        "EDIT",
     1447                           0,
     1448                        WS_VISIBLE | WS_CHILD |UDS_SETBUDDYINT,
     1449                        infoPtr->titleyear.left+3,infoPtr->titlebtnnext.top,
     1450                        infoPtr->titleyear.right-infoPtr->titleyear.left,
     1451                        infoPtr->textHeight,
     1452                        hwnd,
     1453                         (HMENU)NULL,
     1454                         (HINSTANCE)NULL,
     1455                        NULL);
    14491456    infoPtr->hWndYearUpDown=CreateWindowExA(0,
    1450             UPDOWN_CLASSA,
    1451                0,
    1452             WS_VISIBLE | WS_CHILD |UDS_SETBUDDYINT|UDS_NOTHOUSANDS|UDS_ARROWKEYS,
    1453             infoPtr->titleyear.right+6,infoPtr->titlebtnnext.top,
    1454             20,
    1455             infoPtr->textHeight,
    1456             hwnd,
    1457              (HMENU)NULL,
    1458              (HINSTANCE)NULL,
    1459             NULL);
     1457                        UPDOWN_CLASSA,
     1458                           0,
     1459                        WS_VISIBLE | WS_CHILD |UDS_SETBUDDYINT|UDS_NOTHOUSANDS|UDS_ARROWKEYS,
     1460                        infoPtr->titleyear.right+6,infoPtr->titlebtnnext.top,
     1461                        20,
     1462                        infoPtr->textHeight,
     1463                        hwnd,
     1464                         (HMENU)NULL,
     1465                         (HINSTANCE)NULL,
     1466                        NULL);
    14601467    SendMessageA( infoPtr->hWndYearUpDown, UDM_SETRANGE, (WPARAM) 0, MAKELONG (9999, 1753));
    14611468    SendMessageA( infoPtr->hWndYearUpDown, UDM_SETBUDDY, (WPARAM) infoPtr->hWndYearEdit, (LPARAM)0 );
    14621469    SendMessageA( infoPtr->hWndYearUpDown, UDM_SETPOS,   (WPARAM) 0,(LPARAM)infoPtr->currentYear );
    14631470    return TRUE;
    1464 
     1471         
    14651472  }
    14661473  if(hit == MCHT_TODAYLINK) {
     
    14801487    MONTHCAL_CopyTime(&nmsc.stSelStart, &infoPtr->minSel);
    14811488    MONTHCAL_CopyTime(&nmsc.stSelEnd, &infoPtr->maxSel);
    1482 
     1489       
    14831490    SendMessageA(GetParent(hwnd), WM_NOTIFY,
    14841491           (WPARAM)nmsc.nmhdr.idFrom,(LPARAM)&nmsc);
     
    14861493    MONTHCAL_CopyTime(&ht.st, &selArray[0]);
    14871494    MONTHCAL_CopyTime(&ht.st, &selArray[1]);
    1488     MONTHCAL_SetSelRange(hwnd,0,(LPARAM) &selArray);
     1495    MONTHCAL_SetSelRange(hwnd,0,(LPARAM) &selArray); 
    14891496
    14901497    /* redraw both old and new days if the selected day changed */
     
    15391546    return TRUE;
    15401547  }
    1541   if(hit == MCHT_CALENDARDATEPREV){
     1548  if(hit == MCHT_CALENDARDATEPREV){ 
    15421549    MONTHCAL_GoToPrevMonth(hwnd, infoPtr);
    15431550    InvalidateRect(hwnd, NULL, FALSE);
     
    15571564  MONTHCAL_CopyTime(&nmsc.stSelStart, &infoPtr->minSel);
    15581565  MONTHCAL_CopyTime(&nmsc.stSelEnd, &infoPtr->maxSel);
    1559 
     1566       
    15601567  SendMessageA(GetParent(hwnd), WM_NOTIFY,
    15611568           (WPARAM)nmsc.nmhdr.idFrom, (LPARAM)&nmsc);
    1562 
     1569 
    15631570  /* redraw if necessary */
    15641571  if(redraw)
    15651572    InvalidateRect(hwnd, NULL, FALSE);
    1566 
     1573       
    15671574  return 0;
    15681575}
     
    15791586
    15801587  switch(wParam) {
    1581   case MC_NEXTMONTHTIMER:
     1588  case MC_NEXTMONTHTIMER: 
    15821589    redraw = TRUE;
    15831590    MONTHCAL_GoToNextMonth(hwnd, infoPtr);
     
    16111618  ht.pt.x = LOWORD(lParam);
    16121619  ht.pt.y = HIWORD(lParam);
    1613 
     1620       
    16141621  hit = MONTHCAL_HitTest(hwnd, (LPARAM)&ht);
    1615 
     1622 
    16161623  /* not on the calendar date numbers? bail out */
    16171624  TRACE("hit:%x\n",hit);
     
    16311638    if(infoPtr->firstSelDay==selArray[0].wDay) i=1;
    16321639    TRACE("oldRange:%d %d %d %d\n", infoPtr->firstSelDay, selArray[0].wDay, selArray[1].wDay, i);
    1633     if(infoPtr->firstSelDay==selArray[1].wDay) {
     1640    if(infoPtr->firstSelDay==selArray[1].wDay) { 
    16341641      /* 1st time we get here: selArray[0]=selArray[1])  */
    16351642      /* if we're still at the first selected date, return */
     
    16371644      if(selday<infoPtr->firstSelDay) i = 0;
    16381645    }
    1639 
     1646                       
    16401647    if(abs(infoPtr->firstSelDay - selday) >= infoPtr->maxSelCount) {
    16411648      if(selday>infoPtr->firstSelDay)
     
    16441651        selday = infoPtr->firstSelDay - infoPtr->maxSelCount;
    16451652    }
    1646 
     1653               
    16471654    if(selArray[i].wDay!=selday) {
    16481655      TRACE("newRange:%d %d %d %d\n", infoPtr->firstSelDay, selArray[0].wDay, selArray[1].wDay, i);
    1649 
     1656                       
    16501657      selArray[i].wDay = selday;
    16511658
     
    17051712{
    17061713  TRACE("\n");
    1707 
     1714 
    17081715  InvalidateRect(hwnd, NULL, FALSE);
    17091716
     
    17621769
    17631770  /* recalculate the height and width increments and offsets */
    1764   /* FIXME: We use up all available width. This will inhibit having multiple
    1765      calendars in a row, like win doesn
     1771  /* FIXME: We use up all available width. This will inhibit having multiple 
     1772     calendars in a row, like win doesn 
    17661773  */
    17671774  if(dwStyle & MCS_WEEKNUMBERS)
     
    17691776  else
    17701777    xdiv=7.0;
    1771   infoPtr->width_increment = (infoPtr->rcDraw.right - infoPtr->rcDraw.left) / xdiv;
    1772   infoPtr->height_increment = (infoPtr->rcDraw.bottom - infoPtr->rcDraw.top) / 10.0;
     1778  infoPtr->width_increment = (infoPtr->rcDraw.right - infoPtr->rcDraw.left) / xdiv; 
     1779  infoPtr->height_increment = (infoPtr->rcDraw.bottom - infoPtr->rcDraw.top) / 10.0; 
    17731780  infoPtr->left_offset = (infoPtr->rcDraw.right - infoPtr->rcDraw.left) - (infoPtr->width_increment * xdiv);
    17741781  infoPtr->top_offset = (infoPtr->rcDraw.bottom - infoPtr->rcDraw.top) - (infoPtr->height_increment * 10.0);
     
    17831790    rcDraw->bottom = rcDraw->top + 9 * infoPtr->textHeight + 5;
    17841791    }*/
    1785 
     1792   
    17861793  /* calculate title area */
    17871794  title->top    = rcClient->top;
     
    17981805  next->right  = title->right - 6;
    17991806  next->left   = next->right - (title->bottom - title->top);
    1800 
     1807 
    18011808  /* titlemonth->left and right change based upon the current month */
    18021809  /* and are recalculated in refresh as the current month may change */
     
    18041811  titlemonth->top    = titleyear->top    = title->top    + (infoPtr->height_increment)/2;
    18051812  titlemonth->bottom = titleyear->bottom = title->bottom - (infoPtr->height_increment)/2;
    1806 
     1813 
    18071814  /* setup the dimensions of the rectangle we draw the names of the */
    18081815  /* days of the week in */
    18091816  weeknumrect->left =infoPtr->left_offset;
    1810   if(dwStyle & MCS_WEEKNUMBERS)
     1817  if(dwStyle & MCS_WEEKNUMBERS) 
    18111818    weeknumrect->right=prev->right;
    18121819  else
     
    18161823  wdays->top    = title->bottom ;
    18171824  wdays->bottom = wdays->top + infoPtr->height_increment;
    1818 
     1825 
    18191826  days->top    = weeknumrect->top = wdays->bottom ;
    18201827  days->bottom = weeknumrect->bottom = days->top     + 6 * infoPtr->height_increment;
    1821 
     1828 
    18221829  todayrect->left   = rcClient->left;
    18231830  todayrect->right  = rcClient->right;
     
    18251832  todayrect->bottom = days->bottom + infoPtr->height_increment;
    18261833
    1827   /* uncomment for excessive debugging
     1834  /* uncomment for excessive debugging 
    18281835  TRACE("dx=%d dy=%d rcC[%d %d %d %d] t[%d %d %d %d] wd[%d %d %d %d] w[%d %d %d %d] t[%d %d %d %d]\n",
    1829     infoPtr->width_increment,infoPtr->height_increment,
    1830     rcClient->left, rcClient->right, rcClient->top, rcClient->bottom,
    1831         title->left,    title->right,    title->top,    title->bottom,
    1832         wdays->left,    wdays->right,    wdays->top,    wdays->bottom,
    1833          days->left,     days->right,     days->top,     days->bottom,
    1834     todayrect->left,todayrect->right,todayrect->top,todayrect->bottom);
     1836        infoPtr->width_increment,infoPtr->height_increment,
     1837        rcClient->left, rcClient->right, rcClient->top, rcClient->bottom,
     1838            title->left,    title->right,    title->top,    title->bottom,
     1839            wdays->left,    wdays->right,    wdays->top,    wdays->bottom,
     1840             days->left,     days->right,     days->top,     days->bottom,
     1841        todayrect->left,todayrect->right,todayrect->top,todayrect->bottom);
    18351842  */
    1836 
     1843 
    18371844  /* restore the originally selected font */
    1838   SelectObject(hdc, currentFont);
     1845  SelectObject(hdc, currentFont);     
    18391846
    18401847  ReleaseDC(hwnd, hdc);
     
    18581865{
    18591866  MONTHCAL_INFO *infoPtr;
    1860   LOGFONTA  logFont;
     1867  LOGFONTA      logFont;
    18611868
    18621869  /* allocate memory for info structure */
     1870#ifdef __WIN32OS2__
     1871  infoPtr =(MONTHCAL_INFO*)initControl(hwnd,sizeof(MONTHCAL_INFO));
     1872#else
    18631873  infoPtr =(MONTHCAL_INFO*)COMCTL32_Alloc(sizeof(MONTHCAL_INFO));
     1874#endif
    18641875  SetWindowLongA(hwnd, 0, (DWORD)infoPtr);
    18651876
     
    18891900  infoPtr->maxSelCount  = 7;
    18901901  infoPtr->monthRange = 3;
    1891   infoPtr->monthdayState = COMCTL32_Alloc
     1902  infoPtr->monthdayState = COMCTL32_Alloc 
    18921903                         (infoPtr->monthRange * sizeof(MONTHDAYSTATE));
    18931904  infoPtr->titlebk     = GetSysColor(COLOR_ACTIVECAPTION);
     
    18961907  infoPtr->trailingtxt = GetSysColor(COLOR_GRAYTEXT);
    18971908  infoPtr->bk          = GetSysColor(COLOR_WINDOW);
    1898   infoPtr->txt         = GetSysColor(COLOR_WINDOWTEXT);
     1909  infoPtr->txt         = GetSysColor(COLOR_WINDOWTEXT);
    18991910
    19001911  /* call MONTHCAL_UpdateSize to set all of the dimensions */
     
    20512062  wndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
    20522063  wndClass.lpszClassName = MONTHCAL_CLASSA;
    2053 
     2064 
    20542065  RegisterClassA(&wndClass);
    20552066}
Note: See TracChangeset for help on using the changeset viewer.