Commit in reactos/lib/comctl32 on MAIN
comctl_Uk.rc+88added 1.1
comboex.c+4-41.4 -> 1.5
comctl32undoc.c+2-21.7 -> 1.8
datetime.c+35-91.3 -> 1.4
header.c+1-21.4 -> 1.5
ipaddress.c+5-31.4 -> 1.5
listview.c+9-131.9 -> 1.10
monthcal.c+26-181.3 -> 1.4
propsheet.c+1-11.6 -> 1.7
rsrc.rc+11.3 -> 1.4
toolbar.c+74-531.13 -> 1.14
trackbar.c+2-11.4 -> 1.5
treeview.c+5-51.8 -> 1.9
winehq2ros.patch+78-231.6 -> 1.7
+331-134
1 added + 13 modified, total 14 files
Sync to Wine-20040505:
Ilya Korniyko <k_ilya@ukr.net>
- Added Ukrainian translations.
Francois Gouget <fgouget@free.fr>
- Make Unicode strings static const.
- Make our ascii strings static const.
- Remove a couple string variables that were used only once and use the
  string literal directly.
Krzysztof Foltman <kfoltman@portal.onet.pl>
- make monthcal a child of datetime (it was a sibling before, causing
  completely incorrect message flow)
- update monthcal after date change in datetime
- choose different coordinates when DTS_SHOWNONE is not used
- embedded monthcal is now 200 pixels wide
- selecting a day in embedded monthcal updates the datetime and hides
  the monthcal
- changing months/years by clicking month name/year in title bar works
- embedded month calendar is correctly destroyed (it used to stick on
  the screen long after the datetime's container was closed)
- next/prev month don't stick anymore
- min/max ranges initialized to some reasonable values
- fixed some bugs caused by reversed order of arguments of MONTHCAL_CopyTime
- update current month/year after setting current date
- changing months etc doesn't send MCN_SELECT (which could be sent
  only after a particular day was clicked)
- changed (hit && MCHT_CALENDARDATE) to (hit == MCHT_CALENDARDATE)
Huw Davies <huw@codeweavers.com>
- Deleting column zero should only delete the column and not the item
  data.
- Implemented TVS_NOSCROLL.
Maxime Bellenge <maxime.bellenge@laposte.net>
- Add NM_RCLICK notification support for toolbars.
- Fix the size of the listview items in the customize dialog.
- Fix TB_GETSTYLE message to return the style of the toolbar and not the
  style of a button.
Robert Shearman <R.J.Shearman@warwick.ac.uk>
- Optimise accessing toolbar style by storing it in the TOOLBAR_INFO
  structure.
- Replace {Get,Set}WindowLong by {Get,Set}WindowLongPtr where
  appropriate.

reactos/lib/comctl32
comctl_Uk.rc added at 1.1
diff -N comctl_Uk.rc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ comctl_Uk.rc	8 May 2004 11:41:04 -0000	1.1
@@ -0,0 +1,88 @@
+/*
+ * comctl (Ukrainian resources)
+ *
+ * Copyright 2004 Ilya Korniyko
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
+
+IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+CAPTION "����������&#1110; ��� "
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "OK",     IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP
+  PUSHBUTTON    "&�&#1110;��&#1110;��", IDCANCEL,58,122,50,14
+  PUSHBUTTON    "&�����������", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED
+  PUSHBUTTON    "&���&#1110;���",   IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP
+  CONTROL       "Tab",    IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP|TCS_MULTILINE,4,4,212,114
+END
+
+
+IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+CAPTION "������"
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "&���������",  IDC_FINISH_BUTTON,121,138,50,14
+  DEFPUSHBUTTON "&���&#1110; >", IDC_NEXT_BUTTON,121,138,50,14
+  PUSHBUTTON    "< &�����", IDC_BACK_BUTTON,71,138,50,14
+  PUSHBUTTON    "&�&#1110;��&#1110;��",  IDCANCEL,178,138,50,14
+  PUSHBUTTON    "&���&#1110;���",    IDHELP,235,138,50,14,WS_GROUP
+  LTEXT         "",        IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN
+  CONTROL       "Tab",     IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5
+END
+
+
+IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "��������� �����&#1110; &#1110;���������&#1110;�"
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "&�������",     IDCANCEL,308,6,44,14
+  PUSHBUTTON    "&�������",     IDC_RESET_BTN,308,23,44,14
+  PUSHBUTTON    "&���&#1110;���",      IDC_HELP_BTN,308,40,44,14
+  PUSHBUTTON    "���������� �&����",   IDC_MOVEUP_BTN,308,74,44,14
+  PUSHBUTTON    "���������� ��&����", IDC_MOVEDN_BTN,308,91,44,14
+  LTEXT         "��&���&#1110; ������:", -1,4,5,84,10
+  LISTBOX       IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
+  PUSHBUTTON    "&������ ->",    IDOK, 131, 42, 44, 14
+  PUSHBUTTON    "<- &��������", IDC_REMOVE_BTN,131,62,44,14
+  LTEXT         "&������ �����&#1110; &#1110;���������&#1110;�:", -1,182,5,78,10
+  LISTBOX       IDC_TOOLBARBTN_LBOX, 182,17,120,100,LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
+END
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_CLOSE    "�������"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDM_TODAY    "�������&#1110;:"
+    IDM_GOTODAY  "������� ����"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_SEPARATOR "����&#1110;�����"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    HKY_NONE "����"
+}

reactos/lib/comctl32
comboex.c 1.4 -> 1.5
diff -u -r1.4 -r1.5
--- comboex.c	15 Apr 2004 08:29:56 -0000	1.4
+++ comboex.c	8 May 2004 11:41:04 -0000	1.5
@@ -915,9 +915,9 @@
 
 static LRESULT COMBOEX_Create (HWND hwnd, LPCREATESTRUCTA cs)
 {
-    WCHAR COMBOBOX[] = { 'C', 'o', 'm', 'b', 'o', 'B', 'o', 'x', 0 };
-    WCHAR EDIT[] = { 'E', 'D', 'I', 'T', 0 };
-    WCHAR NIL[] = { 0 };
+    static const WCHAR COMBOBOX[] = { 'C', 'o', 'm', 'b', 'o', 'B', 'o', 'x', 0 };
+    static const WCHAR EDIT[] = { 'E', 'D', 'I', 'T', 0 };
+    static const WCHAR NIL[] = { 0 };
     COMBOEX_INFO *infoPtr;
     LOGFONTW mylogfont;
     RECT wnrc1, clrc1, cmbwrc;
@@ -1281,7 +1281,7 @@
 
 static LRESULT COMBOEX_DrawItem (COMBOEX_INFO *infoPtr, DRAWITEMSTRUCT *dis)
 {
-    WCHAR nil[] = { 0 };
+    static const WCHAR nil[] = { 0 };
     CBE_ITEMDATA *item = 0;
     SIZE txtsize;
     RECT rect;

reactos/lib/comctl32
comctl32undoc.c 1.7 -> 1.8
diff -u -r1.7 -r1.8
--- comctl32undoc.c	11 Mar 2004 11:13:28 -0000	1.7
+++ comctl32undoc.c	8 May 2004 11:41:04 -0000	1.8
@@ -523,7 +523,7 @@
     HKEY newkey;
     WCHAR realname[2];
     LPWINEMRUITEM witem;
-    WCHAR emptyW[] = {'\0'};
+    static const WCHAR emptyW[] = {'\0'};
 
     /* or should we do the following instead of RegOpenKeyEx:
      */
@@ -859,7 +859,7 @@
     WCHAR realname[2];
     LPWINEMRUITEM witem;
     DWORD type;
-    WCHAR emptyW[] = {'\0'};
+    static const WCHAR emptyW[] = {'\0'};
 
     /* get space to save indices that will turn into names
      * but in order of most to least recently used

reactos/lib/comctl32
datetime.c 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- datetime.c	17 Dec 2003 18:09:54 -0000	1.3
+++ datetime.c	8 May 2004 11:41:04 -0000	1.4
@@ -148,13 +148,14 @@
   TRACE("%p %04x %08lx\n",hwnd, wParam, lParam);
   if (!lParam) return 0;
 
-  TRACE("%04d/%02d/%02d %02d:%02d:%02d)\n",
+  TRACE("%04d/%02d/%02d %02d:%02d:%02d\n",
         lprgSysTimeArray->wYear, lprgSysTimeArray->wMonth, lprgSysTimeArray->wDay,
         lprgSysTimeArray->wHour, lprgSysTimeArray->wMinute, lprgSysTimeArray->wSecond);
 
   if (wParam==GDT_VALID) {
       infoPtr->dateValid = TRUE;
       MONTHCAL_CopyTime (lprgSysTimeArray, &infoPtr->date);
+	SendMessageA(infoPtr->hMonthCal, MCM_SETCURSEL, 0, (LPARAM)(&infoPtr->date));
       SendMessageA (infoPtr->hwndCheckbut, BM_SETCHECK, BST_CHECKED, 0);
   } else if (wParam==GDT_NONE) {
       infoPtr->dateValid = FALSE;
@@ -784,8 +785,10 @@
     GetTextExtentPoint32A (hdc, txt, strlen (txt), &size);
     rcDraw->bottom = size.cy+2;
 
-    if (dwStyle & DTS_SHOWNONE) checkbox->right = 18;
-
+    if (dwStyle & DTS_SHOWNONE)
+      checkbox->right = 18;
+    else
+      checkbox->right = 2;	 
     prevright = checkbox->right;
 
     for (i=0; i<infoPtr->nrFields; i++) {
@@ -882,19 +885,25 @@
     /* recalculate the position of the monthcal popup */
     if(dwStyle & DTS_RIGHTALIGN)
       infoPtr->monthcal_pos.x = infoPtr->rcClient.right - ((infoPtr->calbutton.right -
-                                infoPtr->calbutton.left) + 145);
+                                infoPtr->calbutton.left) + 200);
     else
       infoPtr->monthcal_pos.x = 8;
 
     infoPtr->monthcal_pos.y = infoPtr->rcClient.bottom;
     ClientToScreen (hwnd, &(infoPtr->monthcal_pos));
+    /* FIXME My Windoze has cx=about 200, but it probably depends on font size etc */
     SetWindowPos(infoPtr->hMonthCal, 0, infoPtr->monthcal_pos.x,
-        infoPtr->monthcal_pos.y, 145, 150, 0);
+        infoPtr->monthcal_pos.y, 200, 150, 0);
 
     if(IsWindowVisible(infoPtr->hMonthCal))
         ShowWindow(infoPtr->hMonthCal, SW_HIDE);
-    else
-        ShowWindow(infoPtr->hMonthCal, SW_SHOW);
+    else {
+      SYSTEMTIME *lprgSysTimeArray = &infoPtr->date;
+      TRACE("update calendar %04d/%02d/%02d\n", 
+        lprgSysTimeArray->wYear, lprgSysTimeArray->wMonth, lprgSysTimeArray->wDay);
+      SendMessageA(infoPtr->hMonthCal, MCM_SETCURSEL, 0, (LPARAM)(&infoPtr->date));
+      ShowWindow(infoPtr->hMonthCal, SW_SHOW);
+    }
 
     TRACE ("dt:%p mc:%p mc parent:%p, desktop:%p\n",
            hwnd, infoPtr->hMonthCal, infoPtr->hwndNotify, GetDesktopWindow ());
@@ -995,6 +1004,17 @@
  TRACE ("%x,%lx\n",wParam, lParam);
  TRACE ("Got notification %x from %p\n", lpnmh->code, lpnmh->hwndFrom);
  TRACE ("info: %p %p %p\n",hwnd,infoPtr->hMonthCal,infoPtr->hUpdown);
+
+ if (lpnmh->code==MCN_SELECT) {
+   ShowWindow(infoPtr->hMonthCal, SW_HIDE);
+   infoPtr->dateValid = TRUE;
+   SendMessageA (infoPtr->hMonthCal, MCM_GETCURSEL, 0, (LPARAM)&infoPtr->date);
+   TRACE("got from calendar %04d/%02d/%02d\n", 
+      infoPtr->date.wYear, infoPtr->date.wMonth, infoPtr->date.wDay);
+   SendMessageA (infoPtr->hwndCheckbut, BM_SETCHECK, BST_CHECKED, 0);
+   InvalidateRect(hwnd, NULL, TRUE);
+   DATETIME_SendDateTimeChangeNotify (hwnd);
+ }
  return 0;
 }
 
@@ -1232,7 +1252,7 @@
     infoPtr->hMonthCal = CreateWindowExA (0,"SysMonthCal32", 0,
 	WS_BORDER | WS_POPUP | WS_CLIPSIBLINGS,
 	0, 0, 0, 0,
-	infoPtr->hwndNotify,
+	hwnd,
 	0, 0, 0);
 
   /* initialize info structure */
@@ -1249,8 +1269,14 @@
     DATETIME_INFO *infoPtr = DATETIME_GetInfoPtr (hwnd);
 
     TRACE("\n");
+    if (infoPtr->hMonthCal) {
+	/* FIXME I don't completely understand why doesn't it
+	 *   happen automatically, WS_POPUP maybe? */
+        DestroyWindow(infoPtr->hMonthCal);
+	infoPtr->hMonthCal = NULL;
+    }
     Free (infoPtr);
-    SetWindowLongA( hwnd, 0, 0 );
+    SetWindowLongA( hwnd, 0, 0 ); /* clear infoPtr */
     return 0;
 }
 

reactos/lib/comctl32
header.c 1.4 -> 1.5
diff -u -r1.4 -r1.5
--- header.c	17 Dec 2003 18:09:54 -0000	1.4
+++ header.c	8 May 2004 11:41:04 -0000	1.5
@@ -924,9 +924,8 @@
 	lpItem->cxy = phdi->cxy;
 
     if (phdi->mask & HDI_TEXT) {
-	static char empty[] = "";
 	if (!phdi->pszText) /* null pointer check */
-	    phdi->pszText = empty;
+	    phdi->pszText = "";
 	if (phdi->pszText != LPSTR_TEXTCALLBACKA) {
 	    len = MultiByteToWideChar(CP_ACP, 0, phdi->pszText, -1, NULL, 0);
 	    lpItem->pszText = Alloc( len*sizeof(WCHAR) );

reactos/lib/comctl32
ipaddress.c 1.4 -> 1.5
diff -u -r1.4 -r1.5
--- ipaddress.c	15 Apr 2004 08:29:56 -0000	1.4
+++ ipaddress.c	8 May 2004 11:41:04 -0000	1.5
@@ -155,7 +155,7 @@
     IPADDRESS_INFO *infoPtr;
     RECT rcClient, edit;
     int i, fieldsize;
-    WCHAR EDIT[] = { 'E', 'd', 'i', 't', 0 };
+    static const WCHAR EDIT[] = { 'E', 'd', 'i', 't', 0 };
 
     TRACE("\n");
 
@@ -291,7 +291,8 @@
 
 static LRESULT IPADDRESS_SetAddress (IPADDRESS_INFO *infoPtr, DWORD ip_address)
 {
-    WCHAR buf[20], fmt[] = { '%', 'd', 0 };
+    WCHAR buf[20];
+    static const WCHAR fmt[] = { '%', 'd', 0 };
     int i;
 
     TRACE("\n");
@@ -328,7 +329,8 @@
 static BOOL IPADDRESS_ConstrainField (IPADDRESS_INFO *infoPtr, int currentfield)
 {
     IPPART_INFO *part = &infoPtr->Part[currentfield];
-    WCHAR field[10], fmt[] = { '%', 'd', 0 };
+    WCHAR field[10];
+    static const WCHAR fmt[] = { '%', 'd', 0 };
     int curValue, newValue;
 
     TRACE("(currentfield=%d)\n", currentfield);

reactos/lib/comctl32
listview.c 1.9 -> 1.10
diff -u -r1.9 -r1.10
--- listview.c	15 Apr 2004 08:29:56 -0000	1.9
+++ listview.c	8 May 2004 11:41:04 -0000	1.10
@@ -3553,7 +3553,7 @@
 {
     UINT uFormat, uView = infoPtr->dwStyle & LVS_TYPEMASK;
     WCHAR szDispText[DISP_TEXT_SIZE] = { '\0' };
-    WCHAR szCallback[] = { '(', 'c', 'a', 'l', 'l', 'b', 'a', 'c', 'k', ')', 0 };
+    static const WCHAR szCallback[] = { '(', 'c', 'a', 'l', 'l', 'b', 'a', 'c', 'k', ')', 0 };
     DWORD cdsubitemmode = CDRF_DODEFAULT;
     RECT* lprcFocus, rcSelect, rcBox, rcState, rcIcon, rcLabel;
     NMLVCUSTOMDRAW nmlvcd;
@@ -3576,7 +3576,7 @@
     if (!LISTVIEW_GetItemW(infoPtr, &lvItem)) return FALSE;
     if (nSubItem > 0 && (infoPtr->dwLvExStyle & LVS_EX_FULLROWSELECT)) 
 	lvItem.state = LISTVIEW_GetItemState(infoPtr, nItem, LVIS_SELECTED);
-    if (lvItem.pszText == LPSTR_TEXTCALLBACKW) lvItem.pszText = szCallback;
+    if (lvItem.pszText == LPSTR_TEXTCALLBACKW) lvItem.pszText = (LPWSTR)szCallback;
     TRACE("   lvItem=%s\n", debuglvitem_t(&lvItem, TRUE));
 
     /* now check if we need to update the focus rectangle */
@@ -4230,13 +4230,9 @@
            || nColumn >= DPA_GetPtrCount(infoPtr->hdpaColumns)) return FALSE;
 
     /* While the MSDN specifically says that column zero should not be deleted,
-       it does in fact work on WinNT, and at least one app depends on it. On
-       WinNT, deleting column zero deletes the last column of items but the
-       first header. Since no app will ever depend on that bizarre behavior, 
-       we just delete the last column including the header.
+       what actually happens is that the column itself is deleted but no items or subitems
+       are removed.
      */
-    if (nColumn == 0)
-        nColumn = DPA_GetPtrCount(infoPtr->hdpaColumns) - 1;
 
     LISTVIEW_GetHeaderRect(infoPtr, nColumn, &rcCol);
     
@@ -4246,15 +4242,12 @@
     Free(DPA_GetPtr(infoPtr->hdpaColumns, nColumn));
     DPA_DeletePtr(infoPtr->hdpaColumns, nColumn);
   
-    if (!(infoPtr->dwStyle & LVS_OWNERDATA))
+    if (!(infoPtr->dwStyle & LVS_OWNERDATA) && nColumn)
     {
 	SUBITEM_INFO *lpSubItem, *lpDelItem;
 	HDPA hdpaSubItems;
 	INT nItem, nSubItem, i;
 	
-	if (nColumn == 0)
-	    return LISTVIEW_DeleteAllItems(infoPtr);
-	    
 	for (nItem = 0; nItem < infoPtr->nItemCount; nItem++)
 	{
 	    hdpaSubItems = (HDPA)DPA_GetPtr(infoPtr->hdpaItems, nItem);
@@ -4291,7 +4284,10 @@
     }
 
     /* update the other column info */
-    LISTVIEW_ScrollColumns(infoPtr, nColumn, -(rcCol.right - rcCol.left));
+    if(DPA_GetPtrCount(infoPtr->hdpaColumns) == 0)
+        LISTVIEW_InvalidateList(infoPtr);
+    else
+        LISTVIEW_ScrollColumns(infoPtr, nColumn, -(rcCol.right - rcCol.left));
 
     return TRUE;
 }

reactos/lib/comctl32
monthcal.c 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- monthcal.c	17 Dec 2003 18:09:54 -0000	1.3
+++ monthcal.c	8 May 2004 11:41:04 -0000	1.4
@@ -948,7 +948,7 @@
 MONTHCAL_SetRange(HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
   MONTHCAL_INFO *infoPtr = MONTHCAL_GetInfoPtr(hwnd);
-  SYSTEMTIME lprgSysTimeArray[1];
+  SYSTEMTIME *lprgSysTimeArray=(SYSTEMTIME *)lParam;
   int prev;
 
   TRACE("%x %lx\n", wParam, lParam);
@@ -1033,6 +1033,7 @@
   if(GetWindowLongA(hwnd, GWL_STYLE) & MCS_MULTISELECT) return FALSE;
 
   MONTHCAL_CopyTime(&infoPtr->minSel, lpSel);
+  TRACE("%d/%d/%d\n", lpSel->wYear, lpSel->wMonth, lpSel->wDay);
   return TRUE;
 }
 
@@ -1048,7 +1049,8 @@
   if((infoPtr==NULL) ||(lpSel==NULL)) return FALSE;
   if(GetWindowLongA(hwnd, GWL_STYLE) & MCS_MULTISELECT) return FALSE;
 
-  TRACE("%d %d\n", lpSel->wMonth, lpSel->wDay);
+  infoPtr->currentMonth=lpSel->wMonth;
+  infoPtr->currentYear=lpSel->wYear;
 
   MONTHCAL_CopyTime(lpSel, &infoPtr->minSel);
   MONTHCAL_CopyTime(lpSel, &infoPtr->maxSel);
@@ -1479,23 +1481,24 @@
     InvalidateRect(hwnd, NULL, FALSE);
     return TRUE;
   }
-  if(hit && MCHT_CALENDARDATE) {
+  if(hit == MCHT_CALENDARDATE) {
     SYSTEMTIME selArray[2];
     NMSELCHANGE nmsc;
 
+    MONTHCAL_CopyTime(&ht.st, &selArray[0]);
+    MONTHCAL_CopyTime(&ht.st, &selArray[1]);
+    MONTHCAL_SetSelRange(hwnd,0,(LPARAM) &selArray);
+    MONTHCAL_SetCurSel(hwnd,0,(LPARAM) &selArray);
     TRACE("MCHT_CALENDARDATE\n");
     nmsc.nmhdr.hwndFrom = hwnd;
     nmsc.nmhdr.idFrom   = GetWindowLongA(hwnd, GWL_ID);
     nmsc.nmhdr.code     = MCN_SELCHANGE;
-    MONTHCAL_CopyTime(&nmsc.stSelStart, &infoPtr->minSel);
-    MONTHCAL_CopyTime(&nmsc.stSelEnd, &infoPtr->maxSel);
+    MONTHCAL_CopyTime(&infoPtr->minSel,&nmsc.stSelStart);
+    MONTHCAL_CopyTime(&infoPtr->maxSel,&nmsc.stSelEnd);
 
     SendMessageA(infoPtr->hwndNotify, WM_NOTIFY,
            (WPARAM)nmsc.nmhdr.idFrom,(LPARAM)&nmsc);
 
-    MONTHCAL_CopyTime(&ht.st, &selArray[0]);
-    MONTHCAL_CopyTime(&ht.st, &selArray[1]);
-    MONTHCAL_SetSelRange(hwnd,0,(LPARAM) &selArray);
 
     /* redraw both old and new days if the selected day changed */
     if(infoPtr->curSelDay != ht.st.wDay) {
@@ -1530,10 +1533,12 @@
 
   if(infoPtr->status & MC_NEXTPRESSED) {
     KillTimer(hwnd, MC_NEXTMONTHTIMER);
+    infoPtr->status &= ~MC_NEXTPRESSED;
     redraw = TRUE;
   }
   if(infoPtr->status & MC_PREVPRESSED) {
     KillTimer(hwnd, MC_PREVMONTHTIMER);
+    infoPtr->status &= ~MC_PREVPRESSED;
     redraw = TRUE;
   }
 
@@ -1560,20 +1565,21 @@
 
   SendMessageA(infoPtr->hwndNotify, WM_NOTIFY,
                                 (WPARAM)nmhdr.idFrom, (LPARAM)&nmhdr);
-
-  nmsc.nmhdr.hwndFrom = hwnd;
-  nmsc.nmhdr.idFrom   = GetWindowLongA(hwnd, GWL_ID);
-  nmsc.nmhdr.code     = MCN_SELECT;
-  MONTHCAL_CopyTime(&nmsc.stSelStart, &infoPtr->minSel);
-  MONTHCAL_CopyTime(&nmsc.stSelEnd, &infoPtr->maxSel);
-
-  SendMessageA(infoPtr->hwndNotify, WM_NOTIFY,
-           (WPARAM)nmsc.nmhdr.idFrom, (LPARAM)&nmsc);
-
   /* redraw if necessary */
   if(redraw)
     InvalidateRect(hwnd, NULL, FALSE);
+  /* only send MCN_SELECT if currently displayed month's day was selected */
+  if(hit == MCHT_CALENDARDATE) {
+    nmsc.nmhdr.hwndFrom = hwnd;
+    nmsc.nmhdr.idFrom   = GetWindowLongA(hwnd, GWL_ID);
+    nmsc.nmhdr.code     = MCN_SELECT;
+    MONTHCAL_CopyTime(&infoPtr->minSel, &nmsc.stSelStart);
+    MONTHCAL_CopyTime(&infoPtr->maxSel, &nmsc.stSelEnd);
 
+    SendMessageA(infoPtr->hwndNotify, WM_NOTIFY,
+             (WPARAM)nmsc.nmhdr.idFrom, (LPARAM)&nmsc);
+
+  }
   return 0;
 }
 
@@ -1898,6 +1904,8 @@
   infoPtr->currentYear = infoPtr->todaysDate.wYear;
   MONTHCAL_CopyTime(&infoPtr->todaysDate, &infoPtr->minDate);
   MONTHCAL_CopyTime(&infoPtr->todaysDate, &infoPtr->maxDate);
+  infoPtr->maxDate.wYear=2050;
+  infoPtr->minDate.wYear=1950;
   infoPtr->maxSelCount  = 7;
   infoPtr->monthRange = 3;
   infoPtr->monthdayState = Alloc

reactos/lib/comctl32
propsheet.c 1.6 -> 1.7
diff -u -r1.6 -r1.7
--- propsheet.c	15 Apr 2004 08:29:56 -0000	1.6
+++ propsheet.c	8 May 2004 11:41:04 -0000	1.7
@@ -524,7 +524,7 @@
   {
     WCHAR szTitle[256];
     const WCHAR *pTitle;
-    static WCHAR pszNull[] = { '(','n','u','l','l',')',0 };
+    static const WCHAR pszNull[] = { '(','n','u','l','l',')',0 };
     int len;
 
     if ( !HIWORD( lppsp->pszTitle ) )

reactos/lib/comctl32
rsrc.rc 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- rsrc.rc	15 Apr 2004 08:29:56 -0000	1.3
+++ rsrc.rc	8 May 2004 11:41:04 -0000	1.4
@@ -1128,3 +1128,4 @@
 #include "comctl_Ru.rc"
 #include "comctl_Si.rc"
 #include "comctl_Th.rc"
+#include "comctl_Uk.rc"

reactos/lib/comctl32
toolbar.c 1.13 -> 1.14
diff -u -r1.13 -r1.14
--- toolbar.c	30 Apr 2004 09:55:16 -0000	1.13
+++ toolbar.c	8 May 2004 11:41:04 -0000	1.14
@@ -52,7 +52,6 @@
  *   - Notifications:
  *     - NM_CHAR
  *     - NM_KEYDOWN
- *     - NM_RCLICK
  *     - NM_RDBLCLICK
  *     - TBN_DRAGOUT
  *     - TBN_GETOBJECT
@@ -170,6 +169,7 @@
     BOOL     bAnchor;         /* anchor highlight enabled */
     BOOL     bNtfUnicode;     /* TRUE if NOTIFYs use {W} */
     BOOL     bDoRedraw;       /* Redraw status */
+    DWORD      dwStyle;         /* regular toolbar style */
     DWORD      dwExStyle;       /* extended toolbar style */
     DWORD      dwDTFlags;       /* DrawText flags */
 
@@ -220,7 +220,7 @@
 /* how wide to treat the bitmap if it isn't present */
 #define LIST_IMAGE_ABSENT_WIDTH 2
 
-#define TOOLBAR_GetInfoPtr(hwnd) ((TOOLBAR_INFO *)GetWindowLongA(hwnd,0))
+#define TOOLBAR_GetInfoPtr(hwnd) ((TOOLBAR_INFO *)GetWindowLongPtrW(hwnd,0))
 #define TOOLBAR_HasText(x, y) (TOOLBAR_GetText(x, y) ? TRUE : FALSE)
 #define TOOLBAR_HasDropDownArrows(exStyle) ((exStyle & TBSTYLE_EX_DRAWDDARROWS) ? TRUE : FALSE)
 
@@ -290,13 +290,11 @@
 {
     if (TRACE_ON(toolbar)) {
 	INT i;
-	DWORD dwStyle;
 
-	dwStyle = GetWindowLongA (iP->hwndSelf, GWL_STYLE);
 	TRACE("toolbar %p at line %d, exStyle=%08lx, buttons=%d, bitmaps=%d, strings=%d, style=%08lx\n",
 	      iP->hwndSelf, line,
 	      iP->dwExStyle, iP->nNumButtons, iP->nNumBitmaps,
-	      iP->nNumStrings, dwStyle);
+	      iP->nNumStrings, iP->dwStyle);
 	TRACE("toolbar %p at line %d, himlInt=%p, himlDef=%p, himlHot=%p, himlDis=%p, redrawable=%s\n",
 	      iP->hwndSelf, line,
 	      iP->himlInt, iP->himlDef, iP->himlHot, iP->himlDis,
@@ -726,7 +724,7 @@
         if (!himl)
            draw_masked = TRUE;
     }
-    else if ((tbcd->nmcd.uItemState & CDIS_HOT) && (GetWindowLongW(infoPtr->hwndSelf, GWL_STYLE) & TBSTYLE_FLAT))
+    else if ((tbcd->nmcd.uItemState & CDIS_HOT) && (infoPtr->dwStyle & TBSTYLE_FLAT))
     {
         /* if hot, attempt to draw with hot image list, if fails, 
            use default image list */
@@ -830,7 +828,7 @@
 TOOLBAR_DrawButton (HWND hwnd, TBUTTON_INFO *btnPtr, HDC hdc)
 {
     TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
-    DWORD dwStyle = GetWindowLongA (hwnd, GWL_STYLE);
+    DWORD dwStyle = infoPtr->dwStyle;
     BOOL hasDropDownArrow = (TOOLBAR_HasDropDownArrows(infoPtr->dwExStyle) &&
                             (btnPtr->fsStyle & BTNS_DROPDOWN)) ||
                             (btnPtr->fsStyle & BTNS_WHOLEDROPDOWN);
@@ -1396,7 +1394,7 @@
 TOOLBAR_CalcToolbar (HWND hwnd)
 {
     TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(hwnd);
-    DWORD dwStyle = GetWindowLongA (hwnd, GWL_STYLE);
+    DWORD dwStyle = infoPtr->dwStyle;
     TBUTTON_INFO *btnPtr;
     INT i, nRows, nSepRows;
     INT x, y, cx, cy;
@@ -1760,7 +1758,7 @@
 static INT_PTR CALLBACK
 TOOLBAR_CustomizeDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
-    PCUSTDLG_INFO custInfo = (PCUSTDLG_INFO)GetWindowLongA (hwnd, DWL_USER);
+    PCUSTDLG_INFO custInfo = (PCUSTDLG_INFO)GetWindowLongPtrW (hwnd, DWLP_USER);
     PCUSTOMBUTTON btnInfo;
     NMTOOLBARA nmtb;
     TOOLBAR_INFO *infoPtr = custInfo ? custInfo->tbInfo : NULL;
@@ -1769,7 +1767,7 @@
     {
 	case WM_INITDIALOG:
 	    custInfo = (PCUSTDLG_INFO)lParam;
-	    SetWindowLongA (hwnd, DWL_USER, (DWORD)custInfo);
+	    SetWindowLongPtrW (hwnd, DWLP_USER, (LONG_PTR)custInfo);
 
 	    if (custInfo)
 	    {
@@ -1811,6 +1809,8 @@
 		    SendDlgItemMessageA (hwnd, IDC_TOOLBARBTN_LBOX, LB_SETITEMDATA, index, (LPARAM)btnInfo);
 		}
 
+		SendDlgItemMessageA (hwnd, IDC_TOOLBARBTN_LBOX, LB_SETITEMHEIGHT, 0, infoPtr->nBitmapHeight + 8);
+
 		/* insert separator button into 'available buttons' list */
 		btnInfo = (PCUSTOMBUTTON)Alloc(sizeof(CUSTOMBUTTON));
 		memset (&btnInfo->btn, 0, sizeof(TBBUTTON));
@@ -1875,6 +1875,8 @@
 		    }
 		}
 
+		SendDlgItemMessageA (hwnd, IDC_AVAILBTN_LBOX, LB_SETITEMHEIGHT, 0, infoPtr->nBitmapHeight + 8);
+
 		/* select first item in the 'available' list */
 		SendDlgItemMessageA (hwnd, IDC_AVAILBTN_LBOX, LB_SETCURSEL, 0, 0);
 
@@ -2167,7 +2169,6 @@
 	    if (wParam == IDC_AVAILBTN_LBOX || wParam == IDC_TOOLBARBTN_LBOX)
 	    {
 		LPDRAWITEMSTRUCT lpdis = (LPDRAWITEMSTRUCT)lParam;
-    	DWORD dwStyle = GetWindowLongA (infoPtr->hwndSelf, GWL_STYLE);
 		RECT rcButton;
 		RECT rcText;
 		HPEN hPen, hOldPen;
@@ -2210,7 +2211,7 @@
 		    DrawFocusRect (lpdis->hDC, &lpdis->rcItem);
 
 		/* draw button */
-		if (!(dwStyle & TBSTYLE_FLAT))
+		if (!(infoPtr->dwStyle & TBSTYLE_FLAT))
 		DrawEdge (lpdis->hDC, &rcButton, EDGE_RAISED, BF_RECT|BF_MIDDLE|BF_SOFT);
 
 		/* draw image and text */
@@ -2238,10 +2239,7 @@
 	    {
 		MEASUREITEMSTRUCT *lpmis = (MEASUREITEMSTRUCT*)lParam;
 
-		if (custInfo && custInfo->tbInfo)
-		    lpmis->itemHeight = custInfo->tbInfo->nBitmapHeight + 8;
-		else
-		    lpmis->itemHeight = 15 + 8; /* default height */
+		lpmis->itemHeight = 15 + 8; /* default height */
 
 		return TRUE;
 	    }
@@ -2794,7 +2792,6 @@
 TOOLBAR_AutoSize (HWND hwnd)
 {
     TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
-    DWORD dwStyle = GetWindowLongA (hwnd, GWL_STYLE);
     RECT parent_rect;
     RECT window_rect;
     HWND parent;
@@ -2802,7 +2799,7 @@
     INT  cx, cy;
     UINT uPosFlags = SWP_NOZORDER;
 
-    TRACE("resize forced, style=%lx!\n", dwStyle);
+    TRACE("resize forced, style=%lx!\n", infoPtr->dwStyle);
 
     parent = GetParent (hwnd);
     GetClientRect(parent, &parent_rect);
@@ -2813,7 +2810,7 @@
     /* FIXME: we should be able to early out if nothing */
     /* has changed with nWidth != parent_rect width */
 
-    if (dwStyle & CCS_NORESIZE) {
+    if (infoPtr->dwStyle & CCS_NORESIZE) {
 	uPosFlags |= (SWP_NOSIZE | SWP_NOMOVE);
 	cx = 0;
 	cy = 0;
@@ -2826,24 +2823,24 @@
 	cy = infoPtr->nHeight;
 	cx = infoPtr->nWidth;
 
-	if ((dwStyle & CCS_BOTTOM) == CCS_NOMOVEY) {
+	if ((infoPtr->dwStyle & CCS_BOTTOM) == CCS_NOMOVEY) {
 		GetWindowRect(hwnd, &window_rect);
 		ScreenToClient(parent, (LPPOINT)&window_rect.left);
 		y = window_rect.top;
 	}
-	if ((dwStyle & CCS_BOTTOM) == CCS_BOTTOM) {
+	if ((infoPtr->dwStyle & CCS_BOTTOM) == CCS_BOTTOM) {
             GetWindowRect(hwnd, &window_rect);
             y = parent_rect.bottom - ( window_rect.bottom - window_rect.top);
         }
     }
 
-    if (dwStyle & CCS_NOPARENTALIGN)
+    if (infoPtr->dwStyle & CCS_NOPARENTALIGN)
 	uPosFlags |= SWP_NOMOVE;
 
-    if (!(dwStyle & CCS_NODIVIDER))
+    if (!(infoPtr->dwStyle & CCS_NODIVIDER))
 	cy += GetSystemMetrics(SM_CYEDGE);
 
-    if (dwStyle & WS_BORDER)
+    if (infoPtr->dwStyle & WS_BORDER)
     {
         x = y = 1;
         cy += GetSystemMetrics(SM_CYEDGE);
@@ -2991,7 +2988,7 @@
     if(!(template = (LPVOID)LoadResource (COMCTL32_hModule, hRes)))
 	return FALSE;
 
-    ret = DialogBoxIndirectParamA ((HINSTANCE)GetWindowLongA(hwnd, GWL_HINSTANCE),
+    ret = DialogBoxIndirectParamA ((HINSTANCE)GetWindowLongPtrW(hwnd, GWLP_HINSTANCE),
                                    (LPDLGTEMPLATEA)template,
                                    hwnd,
                                    TOOLBAR_CustomizeDialogProc,
@@ -3349,7 +3346,7 @@
 {
     TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
 
-    if (!(GetWindowLongA (hwnd, GWL_STYLE) & TBSTYLE_FLAT))
+    if (!(infoPtr->dwStyle & TBSTYLE_FLAT))
 	return -1;
 
     if (infoPtr->nHotItem < 0)
@@ -3467,7 +3464,7 @@
 {
     TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
 
-    if (GetWindowLongA (hwnd, GWL_STYLE) & TBSTYLE_WRAPABLE)
+    if (infoPtr->dwStyle & TBSTYLE_WRAPABLE)
 	return infoPtr->nRows;
     else
 	return 1;
@@ -3491,16 +3488,7 @@
 static LRESULT
 TOOLBAR_GetStyle (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
-    INT nIndex;
-
-    if (wParam == 0) return GetWindowLongW(hwnd, GWL_STYLE);
-
-    nIndex = TOOLBAR_GetButtonIndex (infoPtr, (INT)wParam, FALSE);
-    if (nIndex == -1)
-	return -1;
-
-    return infoPtr->buttons[nIndex].fsStyle;
+    return GetWindowLongW(hwnd, GWL_STYLE);
 }
 
 
@@ -4627,7 +4615,7 @@
     if ((INT) wParam < 0 || (INT)wParam > infoPtr->nNumButtons)
         wParam = -2;
 
-    if (GetWindowLongW(hwnd, GWL_STYLE) & TBSTYLE_FLAT)
+    if (infoPtr->dwStyle & TBSTYLE_FLAT)
         TOOLBAR_SetHotItemEx(infoPtr, wParam, HICF_OTHER);
 
     if (nOldHotItem < 0)
@@ -5093,7 +5081,7 @@
 TOOLBAR_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
     TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
-    DWORD dwStyle = GetWindowLongA (hwnd, GWL_STYLE);
+    DWORD dwStyle = GetWindowLongW (hwnd, GWL_STYLE);
     LOGFONTA logFont;
 
     TRACE("hwnd = %p\n", hwnd);
@@ -5132,6 +5120,7 @@
     infoPtr->szPadding.cx = 2*(GetSystemMetrics(SM_CXEDGE)+OFFSET_X) + 1;
     infoPtr->szPadding.cy = 2*(GetSystemMetrics(SM_CYEDGE)+OFFSET_Y);
     infoPtr->iListGap = infoPtr->szPadding.cx / 2;
+    infoPtr->dwStyle = dwStyle;
     GetClientRect(hwnd, &infoPtr->client_rect);
     TOOLBAR_NotifyFormat(infoPtr, (WPARAM)hwnd, (LPARAM)NF_REQUERY);
 
@@ -5206,7 +5195,7 @@
 
     /* free toolbar info data */
     Free (infoPtr);
-    SetWindowLongA (hwnd, 0, 0);
+    SetWindowLongPtrW (hwnd, 0, 0);
 
     return 0;
 }
@@ -5216,12 +5205,11 @@
 TOOLBAR_EraseBackground (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
     TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
-    DWORD dwStyle = GetWindowLongA (hwnd, GWL_STYLE);
     NMTBCUSTOMDRAW tbcd;
     INT ret = FALSE;
     DWORD ntfret;
 
-    if (dwStyle & TBSTYLE_CUSTOMERASE) {
+    if (infoPtr->dwStyle & TBSTYLE_CUSTOMERASE) {
 	ZeroMemory (&tbcd, sizeof(NMTBCUSTOMDRAW));
 	tbcd.nmcd.dwDrawStage = CDDS_PREERASE;
 	tbcd.nmcd.hdc = (HDC)wParam;
@@ -5260,7 +5248,7 @@
     if (!ret)
 	ret = DefWindowProcA (hwnd, WM_ERASEBKGND, wParam, lParam);
 
-    if ((dwStyle & TBSTYLE_CUSTOMERASE) &&
+    if ((infoPtr->dwStyle & TBSTYLE_CUSTOMERASE) &&
 	(infoPtr->dwBaseCustDraw & CDRF_NOTIFYPOSTERASE)) {
 	ZeroMemory (&tbcd, sizeof(NMTBCUSTOMDRAW));
 	tbcd.nmcd.dwDrawStage = CDDS_POSTERASE;
@@ -5320,7 +5308,7 @@
     NMTOOLBARA nmtb;
     BOOL bDragKeyPressed;
 
-    if (GetWindowLongW(hwnd, GWL_STYLE) & TBSTYLE_ALTDRAG)
+    if (infoPtr->dwStyle & TBSTYLE_ALTDRAG)
         bDragKeyPressed = (GetKeyState(VK_MENU) < 0);
     else
         bDragKeyPressed = (wParam & MK_SHIFT);
@@ -5335,7 +5323,7 @@
 
     btnPtr = &infoPtr->buttons[nHit];
 
-    if ((nHit >= 0) && bDragKeyPressed && (GetWindowLongW(hwnd, GWL_STYLE) & CCS_ADJUSTABLE))
+    if ((nHit >= 0) && bDragKeyPressed && (infoPtr->dwStyle & CCS_ADJUSTABLE))
     {
         infoPtr->nButtonDrag = nHit;
         SetCapture (hwnd);
@@ -5589,6 +5577,34 @@
 }
 
 static LRESULT
+TOOLBAR_RButtonUp( HWND hwnd, WPARAM wParam, LPARAM lParam)
+{
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
+
+    NMMOUSE nmmouse;
+    POINT pt;
+
+    pt.x = LOWORD(lParam);
+    pt.y = HIWORD(lParam);
+    
+    nmmouse.dwHitInfo = TOOLBAR_InternalHitTest(hwnd, &pt);
+
+    if (nmmouse.dwHitInfo < 0) {
+	nmmouse.dwItemSpec = -1;
+    } else {
+	nmmouse.dwItemSpec = infoPtr->buttons[nmmouse.dwHitInfo].idCommand;
+	nmmouse.dwItemData = infoPtr->buttons[nmmouse.dwHitInfo].dwData;
+    }
+
+    ClientToScreen(hwnd, &pt); 
+    memcpy(&nmmouse.pt, &pt, sizeof(POINT));
+
+    TOOLBAR_SendNotify((LPNMHDR)&nmmouse, infoPtr, NM_RCLICK);
+
+    return 0;
+}
+
+static LRESULT
 TOOLBAR_CaptureChanged(HWND hwnd)
 {
     TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
@@ -5713,7 +5729,7 @@
 inline static LRESULT
 TOOLBAR_NCCalcSize (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    if (!(GetWindowLong(hwnd, GWL_STYLE) & CCS_NODIVIDER))
+    if (!(GetWindowLongW(hwnd, GWL_STYLE) & CCS_NODIVIDER))
 	((LPRECT)lParam)->top += GetSystemMetrics(SM_CYEDGE);
 
     return DefWindowProcA (hwnd, WM_NCCALCSIZE, wParam, lParam);
@@ -5729,16 +5745,16 @@
 
     /* allocate memory for info structure */
     infoPtr = (TOOLBAR_INFO *)Alloc (sizeof(TOOLBAR_INFO));
-    SetWindowLongA (hwnd, 0, (DWORD)infoPtr);
+    SetWindowLongPtrW (hwnd, 0, (LONG_PTR)infoPtr);
 
     /* paranoid!! */
     infoPtr->dwStructSize = sizeof(TBBUTTON);
     infoPtr->nRows = 1;
 
     /* fix instance handle, if the toolbar was created by CreateToolbarEx() */
-    if (!GetWindowLongA (hwnd, GWL_HINSTANCE)) {
-        HINSTANCE hInst = (HINSTANCE)GetWindowLongA (GetParent (hwnd), GWL_HINSTANCE);
-	SetWindowLongA (hwnd, GWL_HINSTANCE, (DWORD)hInst);
+    if (!GetWindowLongPtrW (hwnd, GWLP_HINSTANCE)) {
+        HINSTANCE hInst = (HINSTANCE)GetWindowLongPtrW (GetParent (hwnd), GWLP_HINSTANCE);
+	SetWindowLongPtrW (hwnd, GWLP_HINSTANCE, (LONG_PTR)hInst);
     }
 
     /* native control does:
@@ -5790,7 +5806,7 @@
 	styleadd |= TBSTYLE_TRANSPARENT;
     if (!(cs->style & (CCS_TOP | CCS_NOMOVEY))) {
 	styleadd |= CCS_TOP;   /* default to top */
-	SetWindowLongA (hwnd, GWL_STYLE, cs->style | styleadd);
+	SetWindowLongW (hwnd, GWL_STYLE, cs->style | styleadd);
     }
 
     return DefWindowProcA (hwnd, WM_NCCREATE, wParam, lParam);
@@ -5800,7 +5816,7 @@
 static LRESULT
 TOOLBAR_NCPaint (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    DWORD dwStyle = GetWindowLong(hwnd, GWL_STYLE);
+    DWORD dwStyle = GetWindowLongW(hwnd, GWL_STYLE);
     RECT rcWindow;
     HDC hdc;
 
@@ -6099,7 +6115,7 @@
 TOOLBAR_Size (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
     TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
-    DWORD dwStyle = GetWindowLongA (hwnd, GWL_STYLE);
+    DWORD dwStyle = infoPtr->dwStyle;
     RECT parent_rect;
     RECT window_rect;
     HWND parent;
@@ -6246,6 +6262,8 @@
 	TOOLBAR_CheckStyle (hwnd, lpStyle->styleNew);
 
         TRACE("new style 0x%08lx\n", lpStyle->styleNew);
+
+        infoPtr->dwStyle = lpStyle->styleNew;
     }
 
     TOOLBAR_CalcToolbar(hwnd);
@@ -6598,6 +6616,9 @@
 	case WM_LBUTTONUP:
 	    return TOOLBAR_LButtonUp (hwnd, wParam, lParam);
 
+	case WM_RBUTTONUP:
+	    return TOOLBAR_RButtonUp (hwnd, wParam, lParam);
+
 	case WM_MOUSEMOVE:
 	    return TOOLBAR_MouseMove (hwnd, wParam, lParam);
 

reactos/lib/comctl32
trackbar.c 1.4 -> 1.5
diff -u -r1.4 -r1.5
--- trackbar.c	2 Jan 2004 19:49:45 -0000	1.4
+++ trackbar.c	8 May 2004 11:41:04 -0000	1.5
@@ -728,7 +728,8 @@
 TRACKBAR_UpdateToolTip (TRACKBAR_INFO *infoPtr)
 {
     DWORD dwStyle = GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE);
-    WCHAR buf[80], fmt[] = { '%', 'l', 'd', 0 };
+    WCHAR buf[80];
+    static const WCHAR fmt[] = { '%', 'l', 'd', 0 };
     TTTOOLINFOW ti;
     POINT pt;
     RECT rcClient;

reactos/lib/comctl32
treeview.c 1.8 -> 1.9
diff -u -r1.8 -r1.9
--- treeview.c	13 Apr 2004 19:51:44 -0000	1.8
+++ treeview.c	8 May 2004 11:41:05 -0000	1.9
@@ -30,8 +30,8 @@
  *   missing notifications: NM_SETCURSOR, TVN_GETINFOTIP, TVN_KEYDOWN,
  *      TVN_SETDISPINFO, TVN_SINGLEEXPAND
  *
- *   missing styles: TVS_FULLROWSELECT, TVS_INFOTIP, TVS_NOSCROLL,
- *      TVS_RTLREADING, TVS_TRACKSELECT
+ *   missing styles: TVS_FULLROWSELECT, TVS_INFOTIP, TVS_RTLREADING,
+ *      TVS_TRACKSELECT
  *
  *   missing item styles: TVIS_CUT, TVIS_EXPANDPARTIAL
  *
@@ -3093,7 +3093,7 @@
     TRACE("\n");
 
     if (wineItem->state & TVIS_EXPANDED)
-	return TRUE;
+       return TRUE;
 
     TRACE("TVE_EXPAND %p %s\n", wineItem, TREEVIEW_ItemName(wineItem));
 
@@ -3467,7 +3467,7 @@
     HDC hdc;
     HFONT hOldFont=0;
     TEXTMETRICW textMetric;
-    WCHAR EditW[] = {'E','d','i','t',0};
+    static const WCHAR EditW[] = {'E','d','i','t',0};
 
     TRACE("%x %p\n", (unsigned)hwnd, hItem);
     if (!TREEVIEW_ValidItem(infoPtr, editItem))
@@ -4333,7 +4333,7 @@
     else if (visible_pos >= viscount
 	     /* Sometimes, before we are displayed, GVC is 0, causing us to
 	      * spuriously scroll up. */
-	     && visible_pos > 0)
+	     && visible_pos > 0 && !(infoPtr->dwStyle & TVS_NOSCROLL) )
     {
 	/* item is past the end of the list. */
 	int scroll = visible_pos - viscount;

reactos/lib/comctl32
winehq2ros.patch 1.6 -> 1.7
diff -u -r1.6 -r1.7
--- winehq2ros.patch	15 Apr 2004 08:29:57 -0000	1.6
+++ winehq2ros.patch	8 May 2004 11:41:05 -0000	1.7
@@ -4,7 +4,7 @@
 retrieving revision 1.43
 diff -u -r1.43 comctl32.spec
 --- comctl32.spec	20 Feb 2004 05:16:37 -0000	1.43
-+++ comctl32.spec	15 Apr 2004 08:36:51 -0000
++++ comctl32.spec	8 May 2004 11:49:39 -0000
 @@ -106,13 +106,13 @@
  412 stdcall RemoveWindowSubclass(long ptr long)
  413 stdcall DefSubclassProc(long long long long)
@@ -26,13 +26,84 @@
  
  # Functions imported by name
  
+Index: commctrl.c
+===================================================================
+RCS file: /home/wine/wine/dlls/comctl32/commctrl.c,v
+retrieving revision 1.76
+diff -u -r1.76 commctrl.c
+--- commctrl.c	11 Mar 2004 22:38:22 -0000	1.76
++++ commctrl.c	8 May 2004 11:49:41 -0000
+@@ -114,7 +114,6 @@
+ extern void UPDOWN_Register(void);
+ extern void UPDOWN_Unregister(void);
+ 
+-static LRESULT WINAPI SubclassWndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
+ 
+ LPSTR    COMCTL32_aSubclass = NULL;
+ HMODULE COMCTL32_hModule = 0;
+@@ -1109,10 +1108,10 @@
+       /* set window procedure to our own and save the current one */
+       if (IsWindowUnicode (hWnd))
+          stack->origproc = (WNDPROC)SetWindowLongW (hWnd, GWL_WNDPROC,
+-                                                   (LONG)SubclassWndProc);
++                                                   (LONG)DefSubclassProc);
+       else
+          stack->origproc = (WNDPROC)SetWindowLongA (hWnd, GWL_WNDPROC,
+-                                                   (LONG)SubclassWndProc);
++                                                   (LONG)DefSubclassProc);
+    } else {
+       WNDPROC current;
+       if (IsWindowUnicode (hWnd))
+@@ -1120,7 +1119,7 @@
+       else
+          current = (WNDPROC)GetWindowLongA (hWnd, GWL_WNDPROC);
+ 
+-      if (current != SubclassWndProc) {
++      if (current != DefSubclassProc) {
+          ERR ("Application has subclassed with our procedure, then manually, then with us again.  The current implementation can't handle this.\n");
+          return FALSE;
+       }
+@@ -1260,33 +1259,6 @@
+       }
+ 
+    return FALSE;
+-}
+-
+-
+-/***********************************************************************
+- * SubclassWndProc (internal)
+- *
+- * Window procedure for all subclassed windows. 
+- * Saves the current subclassing stack position to support nested messages
+- */
+-
+-static LRESULT WINAPI SubclassWndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+-{
+-   LPSUBCLASS_INFO stack;
+-   int stackpos;
+-   LRESULT ret;
+-
+-   /* retrieve our little stack from the Properties */
+-   stack = (LPSUBCLASS_INFO)GetPropA (hWnd, COMCTL32_aSubclass);
+-   if (!stack) {
+-      ERR ("Our sub classing stack got erased for %p!! Nothing we can do\n", hWnd);
+-      return 0;
+-   }
+-   stackpos = stack->stackpos;
+-   stack->stackpos = stack->stacknum;
+-   ret = DefSubclassProc(hWnd,uMsg,wParam,lParam);
+-   stack->stackpos = stackpos;
+-   return ret;
+ }
+ 
+ 
 Index: imagelist.c
 ===================================================================
 RCS file: /home/wine/wine/dlls/comctl32/imagelist.c,v
 retrieving revision 1.85
 diff -u -r1.85 imagelist.c
 --- imagelist.c	27 Feb 2004 04:40:08 -0000	1.85
-+++ imagelist.c	15 Apr 2004 08:36:52 -0000
++++ imagelist.c	8 May 2004 11:49:43 -0000
 @@ -1146,11 +1146,13 @@
      	PatBlt(hBlendMaskDC, 0, 0, cx, cy, PATCOPY);
      	SelectObject(hBlendMaskDC, hOldBrush);
@@ -50,10 +121,10 @@
 Index: listview.c
 ===================================================================
 RCS file: /home/wine/wine/dlls/comctl32/listview.c,v
-retrieving revision 1.385
-diff -u -r1.385 listview.c
---- listview.c	11 Mar 2004 00:39:53 -0000	1.385
-+++ listview.c	15 Apr 2004 08:36:56 -0000
+retrieving revision 1.387
+diff -u -r1.387 listview.c
+--- listview.c	21 Apr 2004 22:25:04 -0000	1.387
++++ listview.c	8 May 2004 11:49:47 -0000
 @@ -147,6 +147,7 @@
  #include <assert.h>
  #include <ctype.h>
@@ -68,7 +139,7 @@
 retrieving revision 1.3
 diff -u -r1.3 string.c
 --- string.c	20 Feb 2004 19:58:39 -0000	1.3
-+++ string.c	15 Apr 2004 08:36:56 -0000
++++ string.c	8 May 2004 11:49:52 -0000
 @@ -254,7 +254,7 @@
  {
    TRACE("(%s,%s)\n", debugstr_w(lpszStr), debugstr_w(lpszSearch));
@@ -87,19 +158,3 @@
  }
  
  /*************************************************************************
-Index: treeview.c
-===================================================================
-RCS file: /home/wine/wine/dlls/comctl32/treeview.c,v
-retrieving revision 1.145
-diff -u -r1.145 treeview.c
---- treeview.c	1 Mar 2004 23:10:52 -0000	1.145
-+++ treeview.c	15 Apr 2004 08:36:58 -0000
-@@ -3093,7 +3093,7 @@
-     TRACE("\n");
- 
-     if (wineItem->state & TVIS_EXPANDED)
--	return FALSE;
-+	return TRUE;
- 
-     TRACE("TVE_EXPAND %p %s\n", wineItem, TREEVIEW_ItemName(wineItem));
- 
CVSspam 0.2.8