[ros-diffs] [fireball] 34327: Autosyncing with Wine HEAD

fireball at svn.reactos.org fireball at svn.reactos.org
Sun Jul 6 14:41:23 CEST 2008


Author: fireball
Date: Sun Jul  6 07:41:23 2008
New Revision: 34327

URL: http://svn.reactos.org/svn/reactos?rev=34327&view=rev
Log:
Autosyncing with Wine HEAD

Modified:
    trunk/reactos/dll/win32/comctl32/comboex.c
    trunk/reactos/dll/win32/comctl32/comctl_Sv.rc
    trunk/reactos/dll/win32/comctl32/commctrl.c
    trunk/reactos/dll/win32/comctl32/header.c
    trunk/reactos/dll/win32/comctl32/ipaddress.c
    trunk/reactos/dll/win32/comctl32/listview.c
    trunk/reactos/dll/win32/comctl32/monthcal.c
    trunk/reactos/dll/win32/comctl32/pager.c
    trunk/reactos/dll/win32/comctl32/propsheet.c
    trunk/reactos/dll/win32/comctl32/rebar.c
    trunk/reactos/dll/win32/comctl32/status.c
    trunk/reactos/dll/win32/comctl32/syslink.c
    trunk/reactos/dll/win32/comctl32/tab.c
    trunk/reactos/dll/win32/comctl32/toolbar.c
    trunk/reactos/dll/win32/comctl32/tooltips.c
    trunk/reactos/dll/win32/comctl32/trackbar.c
    trunk/reactos/dll/win32/comctl32/treeview.c
    trunk/reactos/dll/win32/comctl32/updown.c

Modified: trunk/reactos/dll/win32/comctl32/comboex.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/comboex.c?rev=34327&r1=34326&r2=34327&view=diff
==============================================================================
--- trunk/reactos/dll/win32/comctl32/comboex.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/comctl32/comboex.c [iso-8859-1] Sun Jul  6 07:41:23 2008
@@ -530,13 +530,11 @@
 
 static INT COMBOEX_DeleteItem (COMBOEX_INFO *infoPtr, INT index)
 {
-    CBE_ITEMDATA const *item;
-
     TRACE("(index=%d)\n", index);
 
     /* if item number requested does not exist then return failure */
     if ((index >= infoPtr->nb_items) || (index < 0)) return CB_ERR;
-    if (!(item = COMBOEX_FindItem(infoPtr, index))) return CB_ERR;
+    if (!COMBOEX_FindItem(infoPtr, index)) return CB_ERR;
 
     /* doing this will result in WM_DELETEITEM being issued */
     SendMessageW (infoPtr->hwndCombo, CB_DELETESTRING, (WPARAM)index, 0);
@@ -1269,6 +1267,9 @@
 	InvalidateRect (infoPtr->hwndCombo, 0, 0);
 	return 0;
 
+    case CBN_SETFOCUS:
+        return SendMessageW (parent, WM_COMMAND, wParam, (LPARAM)infoPtr->hwndSelf);
+
     default:
 	/*
 	 * We have to change the handle since we are the control
@@ -1602,9 +1603,11 @@
     if (infoPtr->defaultFont)
 	DeleteObject (infoPtr->defaultFont);
 
+    SetWindowLongPtrW (infoPtr->hwndSelf, 0, 0);
+
     /* free comboex info data */
     Free (infoPtr);
-    SetWindowLongPtrW (infoPtr->hwndSelf, 0, 0);
+
     return 0;
 }
 
@@ -1635,7 +1638,7 @@
     oldstyle = (DWORD)GetWindowLongW (hwnd, GWL_STYLE);
     newstyle = oldstyle & ~(WS_VSCROLL | WS_HSCROLL | WS_BORDER);
     if (newstyle != oldstyle) {
-	TRACE("req style %08x, reseting style %08x\n",
+	TRACE("req style %08x, resetting style %08x\n",
 	      oldstyle, newstyle);
 	SetWindowLongW (hwnd, GWL_STYLE, newstyle);
     }

Modified: trunk/reactos/dll/win32/comctl32/comctl_Sv.rc
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/comctl_Sv.rc?rev=34327&r1=34326&r2=34327&view=diff
==============================================================================
--- trunk/reactos/dll/win32/comctl32/comctl_Sv.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/comctl32/comctl_Sv.rc [iso-8859-1] Sun Jul  6 07:41:23 2008
@@ -16,7 +16,7 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
-LANGUAGE LANG_SWEDISH, SUBLANG_DEFAULT
+LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
 
 IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
 STYLE DS_CONTEXTHELP | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE

Modified: trunk/reactos/dll/win32/comctl32/commctrl.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/commctrl.c?rev=34327&r1=34326&r2=34327&view=diff
==============================================================================
--- trunk/reactos/dll/win32/comctl32/commctrl.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/comctl32/commctrl.c [iso-8859-1] Sun Jul  6 07:41:23 2008
@@ -535,18 +535,27 @@
     if (text) {
         int oldbkmode = SetBkMode (hdc, TRANSPARENT);
         UINT align = DT_LEFT;
-        if (*text == '\t') {
-	    text++;
-	    align = DT_CENTER;
+        int strCnt = 0;
+
+        if (style & SBT_RTLREADING)
+            FIXME("Unsupported RTL style!\n");
+        r.left += 3;
+        do {
             if (*text == '\t') {
-	        text++;
-	        align = DT_RIGHT;
-	    }
-        }
-        r.left += 3;
-        if (style & SBT_RTLREADING)
-	    FIXME("Unsupported RTL style!\n");
-        DrawTextW (hdc, text, -1, &r, align|DT_VCENTER|DT_SINGLELINE|DT_NOPREFIX);
+                if (strCnt) {
+                    DrawTextW (hdc, text - strCnt, strCnt, &r, align|DT_VCENTER|DT_SINGLELINE|DT_NOPREFIX);
+                    strCnt = 0;
+                }
+                if (align==DT_RIGHT) {
+                    break;
+                }
+                align = (align==DT_LEFT ? DT_CENTER : DT_RIGHT);
+            } else {
+                strCnt++;
+            }
+        } while(*text++);
+
+        if (strCnt) DrawTextW (hdc, text - strCnt, -1, &r, align|DT_VCENTER|DT_SINGLELINE|DT_NOPREFIX);
 	SetBkMode(hdc, oldbkmode);
     }
 }

Modified: trunk/reactos/dll/win32/comctl32/header.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/header.c?rev=34327&r1=34326&r2=34327&view=diff
==============================================================================
--- trunk/reactos/dll/win32/comctl32/header.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/comctl32/header.c [iso-8859-1] Sun Jul  6 07:41:23 2008
@@ -111,7 +111,6 @@
 static LRESULT HEADER_SendCtrlCustomDraw(HWND hwnd, DWORD dwDrawStage, HDC hdc, const RECT *rect);
 
 static const WCHAR themeClass[] = {'H','e','a','d','e','r',0};
-static WCHAR emptyString[] = {0};
 
 static void HEADER_StoreHDItemInHeader(HEADER_ITEM *lpItem, UINT mask, const HDITEMW *phdi, BOOL fUnicode)
 {
@@ -146,11 +145,13 @@
 
         if (phdi->pszText != LPSTR_TEXTCALLBACKW) /* covers != TEXTCALLBACKA too */
         {
-            LPWSTR pszText = (phdi->pszText != NULL ? phdi->pszText : emptyString);
+            static const WCHAR emptyString[] = {0};
+
+            LPCWSTR pszText = (phdi->pszText != NULL ? phdi->pszText : emptyString);
             if (fUnicode)
                 Str_SetPtrW(&lpItem->pszText, pszText);
             else
-                Str_SetPtrAtoW(&lpItem->pszText, (LPSTR)pszText);
+                Str_SetPtrAtoW(&lpItem->pszText, (LPCSTR)pszText);
             lpItem->callbackMask &= ~HDI_TEXT;
         }
         else

Modified: trunk/reactos/dll/win32/comctl32/ipaddress.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/ipaddress.c?rev=34327&r1=34326&r2=34327&view=diff
==============================================================================
--- trunk/reactos/dll/win32/comctl32/ipaddress.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/comctl32/ipaddress.c [iso-8859-1] Sun Jul  6 07:41:23 2008
@@ -170,6 +170,8 @@
     IPADDRESS_INFO *infoPtr;
     RECT rcClient, edit;
     int i, fieldsize;
+    HFONT hFont, hSysFont;
+    LOGFONTW logFont, logSysFont;
 
     TRACE("\n");
 
@@ -190,6 +192,12 @@
     infoPtr->Self = hwnd;
     infoPtr->Enabled = TRUE;
     infoPtr->Notify = lpCreate->hwndParent;
+
+    hSysFont = (HFONT) GetStockObject(ANSI_VAR_FONT);
+    GetObjectW(hSysFont, sizeof(LOGFONTW), &logSysFont);
+    SystemParametersInfoW(SPI_GETICONTITLELOGFONT, 0, &logFont, 0);
+    strcpyW(logFont.lfFaceName, logSysFont.lfFaceName);
+    hFont = CreateFontIndirectW(&logFont);
 
     for (i = 0; i < 4; i++) {
 	IPPART_INFO* part = &infoPtr->Part[i];
@@ -203,6 +211,7 @@
                                edit.left, edit.top, edit.right - edit.left,
 			       edit.bottom - edit.top, hwnd, (HMENU) 1,
 			       (HINSTANCE)GetWindowLongPtrW(hwnd, GWLP_HINSTANCE), NULL);
+        SendMessageW(part->EditHwnd, WM_SETFONT, (WPARAM) hFont, FALSE);
 	SetPropW(part->EditHwnd, IP_SUBCLASS_PROP, hwnd);
         part->OrigProc = (WNDPROC)
 		SetWindowLongPtrW (part->EditHwnd, GWLP_WNDPROC,

Modified: trunk/reactos/dll/win32/comctl32/listview.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/listview.c?rev=34327&r1=34326&r2=34327&view=diff
==============================================================================
--- trunk/reactos/dll/win32/comctl32/listview.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/comctl32/listview.c [iso-8859-1] Sun Jul  6 07:41:23 2008
@@ -91,7 +91,6 @@
  * Extended Styles
  *   -- LVS_EX_BORDERSELECT
  *   -- LVS_EX_FLATSB
- *   -- LVS_EX_GRIDLINES
  *   -- LVS_EX_HEADERDRAGDROP
  *   -- LVS_EX_INFOTIP
  *   -- LVS_EX_LABELTIP
@@ -1639,6 +1638,7 @@
 
     SetWindowPos(infoPtr->hwndHeader,0,
         point[0].x,point[0].y,point[1].x,point[1].y,
+        (infoPtr->dwStyle & LVS_NOCOLUMNHEADER) ? SWP_HIDEWINDOW : SWP_SHOWWINDOW |
         SWP_NOZORDER | SWP_NOACTIVATE);
 }
 
@@ -2495,6 +2495,8 @@
     else
     {
 	nItemHeight = infoPtr->ntmHeight; 
+        if (uView == LVS_REPORT && infoPtr->dwLvExStyle & LVS_EX_GRIDLINES)
+            nItemHeight++;
 	if (infoPtr->himlState)
 	    nItemHeight = max(nItemHeight, infoPtr->iconStateSize.cy);
 	if (infoPtr->himlSmall)
@@ -3338,26 +3340,26 @@
     else
         infoPtr->bLButtonDown = FALSE;
 
-  /* see if we are supposed to be tracking mouse hovering */
-  if(infoPtr->dwLvExStyle & LVS_EX_TRACKSELECT) {
-     /* fill in the trackinfo struct */
-     trackinfo.cbSize = sizeof(TRACKMOUSEEVENT);
-     trackinfo.dwFlags = TME_QUERY;
-     trackinfo.hwndTrack = infoPtr->hwndSelf;
-     trackinfo.dwHoverTime = infoPtr->dwHoverTime;
-
-     /* see if we are already tracking this hwnd */
-     _TrackMouseEvent(&trackinfo);
-
-     if(!(trackinfo.dwFlags & TME_HOVER)) {
-       trackinfo.dwFlags = TME_HOVER;
-
-       /* call TRACKMOUSEEVENT so we receive WM_MOUSEHOVER messages */
-       _TrackMouseEvent(&trackinfo);
-    }
-  }
-
-  return 0;
+    /* see if we are supposed to be tracking mouse hovering */
+    if(infoPtr->dwLvExStyle & LVS_EX_TRACKSELECT) {
+        /* fill in the trackinfo struct */
+        trackinfo.cbSize = sizeof(TRACKMOUSEEVENT);
+        trackinfo.dwFlags = TME_QUERY;
+        trackinfo.hwndTrack = infoPtr->hwndSelf;
+        trackinfo.dwHoverTime = infoPtr->dwHoverTime;
+
+        /* see if we are already tracking this hwnd */
+        _TrackMouseEvent(&trackinfo);
+
+        if(!(trackinfo.dwFlags & TME_HOVER)) {
+            trackinfo.dwFlags = TME_HOVER;
+
+            /* call TRACKMOUSEEVENT so we receive WM_MOUSEHOVER messages */
+            _TrackMouseEvent(&trackinfo);
+        }
+    }
+
+    return 0;
 }
 
 
@@ -3873,6 +3875,11 @@
         else rcLabel.left += LABEL_HOR_PADDING;
     }
     else if (uFormat & DT_RIGHT) rcLabel.right -= LABEL_HOR_PADDING;
+
+    /* for GRIDLINES reduce the bottom so the text formats correctly */
+    if (uView == LVS_REPORT && infoPtr->dwLvExStyle & LVS_EX_GRIDLINES)
+        rcLabel.bottom--;
+
     DrawTextW(hdc, lvItem.pszText, -1, &rcLabel, uFormat);
 
 postpaint:
@@ -4029,6 +4036,89 @@
 
 /***
  * DESCRIPTION:
+ * Draws the gridlines if necessary when in report display mode.
+ *
+ * PARAMETER(S):
+ * [I] infoPtr : valid pointer to the listview structure
+ * [I] hdc : device context handle
+ *
+ * RETURN:
+ * None
+ */
+static void LISTVIEW_RefreshReportGrid(LISTVIEW_INFO *infoPtr, HDC hdc)
+{
+    INT rgntype;
+    INT y, itemheight;
+    HPEN hPen, hOldPen;
+    RECT rcClip, rcItem;
+    POINT Origin;
+    RANGE colRange;
+    ITERATOR j;
+
+    TRACE("()\n");
+
+    /* figure out what to draw */
+    rgntype = GetClipBox(hdc, &rcClip);
+    if (rgntype == NULLREGION) return;
+
+    /* Get scroll info once before loop */
+    LISTVIEW_GetOrigin(infoPtr, &Origin);
+
+    /* narrow down the columns we need to paint */
+    for(colRange.lower = 0; colRange.lower < DPA_GetPtrCount(infoPtr->hdpaColumns); colRange.lower++)
+    {
+        LISTVIEW_GetHeaderRect(infoPtr, colRange.lower, &rcItem);
+        if (rcItem.right + Origin.x >= rcClip.left) break;
+    }
+    for(colRange.upper = DPA_GetPtrCount(infoPtr->hdpaColumns); colRange.upper > 0; colRange.upper--)
+    {
+        LISTVIEW_GetHeaderRect(infoPtr, colRange.upper - 1, &rcItem);
+        if (rcItem.left + Origin.x < rcClip.right) break;
+    }
+    iterator_rangeitems(&j, colRange);
+
+    if ((hPen = CreatePen( PS_SOLID, 1, comctl32_color.clr3dFace )))
+    {
+        hOldPen = SelectObject ( hdc, hPen );
+
+        /* draw the vertical lines for the columns */
+        iterator_rangeitems(&j, colRange);
+        while(iterator_next(&j))
+        {
+            LISTVIEW_GetHeaderRect(infoPtr, j.nItem, &rcItem);
+            if (rcItem.left == 0) continue; /* skip first column */
+            rcItem.left += Origin.x;
+            rcItem.right += Origin.x;
+            rcItem.top = infoPtr->rcList.top;
+            rcItem.bottom = infoPtr->rcList.bottom;
+            TRACE("vert col=%d, rcItem=%s\n", j.nItem, wine_dbgstr_rect(&rcItem));
+            MoveToEx (hdc, rcItem.left, rcItem.top, NULL);
+            LineTo (hdc, rcItem.left, rcItem.bottom);
+        }
+        iterator_destroy(&j);
+
+        /* draw the horizontial lines for the rows */
+        itemheight =  LISTVIEW_CalculateItemHeight(infoPtr);
+        rcItem.left = infoPtr->rcList.left + Origin.x;
+        rcItem.right = infoPtr->rcList.right + Origin.x;
+        rcItem.bottom = rcItem.top = Origin.y - 1;
+        MoveToEx(hdc, rcItem.left, rcItem.top, NULL);
+        LineTo(hdc, rcItem.right, rcItem.top);
+        for(y=itemheight-1+Origin.y; y<=infoPtr->rcList.bottom; y+=itemheight)
+        {
+            rcItem.bottom = rcItem.top = y;
+            TRACE("horz rcItem=%s\n", wine_dbgstr_rect(&rcItem));
+            MoveToEx (hdc, rcItem.left, rcItem.top, NULL);
+            LineTo (hdc, rcItem.right, rcItem.top);
+        }
+
+        SelectObject( hdc, hOldPen );
+        DeleteObject( hPen );
+    }
+}
+
+/***
+ * DESCRIPTION:
  * Draws listview items when in list display mode.
  *
  * PARAMETER(S):
@@ -4175,6 +4265,12 @@
     iterator_destroy(&i);
     
 enddraw:
+    /* For LVS_EX_GRIDLINES go and draw lines */
+    /*  This includes the case where there were *no* items */
+    if ((infoPtr->dwStyle & LVS_TYPEMASK) == LVS_REPORT &&
+        infoPtr->dwLvExStyle & LVS_EX_GRIDLINES)
+        LISTVIEW_RefreshReportGrid(infoPtr, hdc);
+
     if (cdmode & CDRF_NOTIFYPOSTPAINT)
 	notify_postpaint(infoPtr, &nmlvcd);
 
@@ -4362,7 +4458,7 @@
  *   SUCCESS : TRUE
  *   FAILURE : FALSE
  */
-static BOOL LISTVIEW_DeleteAllItems(LISTVIEW_INFO *infoPtr)
+static BOOL LISTVIEW_DeleteAllItems(LISTVIEW_INFO *infoPtr, BOOL destroy)
 {
     NMLISTVIEW nmlv;
     HDPA hdpaSubItems = NULL;
@@ -4406,8 +4502,11 @@
 	infoPtr->nItemCount --;
     }
     
-    LISTVIEW_Arrange(infoPtr, LVA_DEFAULT);
-    LISTVIEW_UpdateScroll(infoPtr);
+    if (!destroy)
+    {
+        LISTVIEW_Arrange(infoPtr, LVA_DEFAULT);
+        LISTVIEW_UpdateScroll(infoPtr);
+    }
     LISTVIEW_InvalidateList(infoPtr);
     
     return TRUE;
@@ -5125,6 +5224,9 @@
     if (lpColumn->mask & LVCF_ORDER)
         hdi.mask |= HDI_ORDER;
 
+    if (lpColumn->mask & LVCF_SUBITEM)
+        hdi.mask |= HDI_LPARAM;
+
     if (!SendMessageW(infoPtr->hwndHeader, isW ? HDM_GETITEMW : HDM_GETITEMA, nColumn, (LPARAM)&hdi)) return FALSE;
 
     if (lpColumn->mask & LVCF_FMT)
@@ -5138,6 +5240,9 @@
 
     if (lpColumn->mask & LVCF_ORDER)
 	lpColumn->iOrder = hdi.iOrder;
+
+    if (lpColumn->mask & LVCF_SUBITEM)
+	lpColumn->iSubItem = hdi.lParam;
 
     return TRUE;
 }
@@ -7039,6 +7144,13 @@
         SetWindowLongW(infoPtr->hwndHeader, GWL_STYLE, dwStyle);
     }
 
+    /* GRIDLINES adds decoration at top so changes sizes */
+    if((infoPtr->dwLvExStyle ^ dwOldExStyle) & LVS_EX_GRIDLINES)
+    {
+        LISTVIEW_UpdateSize(infoPtr);
+    }
+
+
     LISTVIEW_InvalidateList(infoPtr);
     return dwOldExStyle;
 }
@@ -7419,10 +7531,9 @@
      */
 
     if (bResult && (lvItem.state & lvItem.stateMask & LVIS_SELECTED) &&
-        ((infoPtr->nSelectionMark == -1) || (lvItem.iItem <= infoPtr->nSelectionMark)))
+        (infoPtr->nSelectionMark == -1))
     {
         int i;
-        infoPtr->nSelectionMark = -1;
         for (i = 0; i < infoPtr->nItemCount; i++)
         {
             if (infoPtr->uCallbackMask & LVIS_SELECTED)
@@ -7888,6 +7999,7 @@
 {
   LISTVIEW_INFO *infoPtr = (LISTVIEW_INFO *)GetWindowLongPtrW(hwnd, 0);
   UINT uView = lpcs->style & LVS_TYPEMASK;
+  DWORD dFlags = WS_CHILD | HDS_HORZ | HDS_FULLDRAG | HDS_DRAGDROP;
 
   TRACE("(lpcs=%p)\n", lpcs);
 
@@ -7895,9 +8007,12 @@
   infoPtr->notifyFormat = SendMessageW(infoPtr->hwndNotify, WM_NOTIFYFORMAT,
                                        (WPARAM)infoPtr->hwndSelf, (LPARAM)NF_QUERY);
 
+  /* setup creation flags */
+  dFlags |= (LVS_NOSORTHEADER & lpcs->style) ? 0 : HDS_BUTTONS;
+  dFlags |= (LVS_NOCOLUMNHEADER & lpcs->style) ? HDS_HIDDEN : 0;
+
   /* create header */
-  infoPtr->hwndHeader =	CreateWindowW(WC_HEADERW, NULL,
-    WS_CHILD | HDS_HORZ | HDS_FULLDRAG | (DWORD)((LVS_NOSORTHEADER & lpcs->style)?0:HDS_BUTTONS),
+  infoPtr->hwndHeader = CreateWindowW(WC_HEADERW, NULL, dFlags,
     0, 0, 0, 0, hwnd, NULL,
     lpcs->hInstance, NULL);
   if (!infoPtr->hwndHeader) return -1;
@@ -7917,12 +8032,8 @@
     {
       ShowWindow(infoPtr->hwndHeader, SW_SHOWNORMAL);
     }
-    else
-    {
-      /* set HDS_HIDDEN flag to hide the header bar */
-      SetWindowLongW(infoPtr->hwndHeader, GWL_STYLE,
-                    GetWindowLongW(infoPtr->hwndHeader, GWL_STYLE) | HDS_HIDDEN);
-    }
+    LISTVIEW_UpdateSize(infoPtr);
+    LISTVIEW_UpdateScroll(infoPtr);
   }
 
   OpenThemeData(hwnd, themeClass);
@@ -8404,7 +8515,7 @@
     /* set window focus flag */
     infoPtr->bFocus = FALSE;
 
-    /* invalidate the selected items before reseting focus flag */
+    /* invalidate the selected items before resetting focus flag */
     LISTVIEW_InvalidateSelectedItems(infoPtr);
     
     return 0;
@@ -8628,7 +8739,7 @@
   TRACE("()\n");
 
   /* delete all items */
-  LISTVIEW_DeleteAllItems(infoPtr);
+  LISTVIEW_DeleteAllItems(infoPtr, TRUE);
 
   /* destroy data structure */
   DPA_Destroy(infoPtr->hdpaItems);
@@ -8870,11 +8981,10 @@
 {
     TRACE("(hwndFrom=%p, nCommand=%d)\n", hwndFrom, nCommand);
 
-    if (nCommand != NF_REQUERY) return 0;
-    
-    infoPtr->notifyFormat = SendMessageW(hwndFrom, WM_NOTIFYFORMAT, (WPARAM)infoPtr->hwndSelf, NF_QUERY);
-    
-    return 0;
+    if (nCommand == NF_REQUERY)
+        infoPtr->notifyFormat = SendMessageW(hwndFrom, WM_NOTIFYFORMAT, (WPARAM)infoPtr->hwndSelf, NF_QUERY);
+
+    return infoPtr->notifyFormat;
 }
 
 /***
@@ -9157,7 +9267,11 @@
     LISTVIEW_SaveTextMetrics(infoPtr);
 
     if ((infoPtr->dwStyle & LVS_TYPEMASK) == LVS_REPORT)
+    {
 	SendMessageW(infoPtr->hwndHeader, WM_SETFONT, (WPARAM)hFont, MAKELPARAM(fRedraw, 0));
+        LISTVIEW_UpdateSize(infoPtr);
+        LISTVIEW_UpdateScroll(infoPtr);
+    }
 
     if (fRedraw) LISTVIEW_InvalidateList(infoPtr);
 
@@ -9268,7 +9382,7 @@
 	    infoPtr->rcList.bottom -= GetSystemMetrics(SM_CYHSCROLL);
         infoPtr->rcList.bottom = max (infoPtr->rcList.bottom - 2, 0);
     }
-    else if (uView == LVS_REPORT && !(infoPtr->dwStyle & LVS_NOCOLUMNHEADER))
+    else if (uView == LVS_REPORT)
     {
 	HDLAYOUT hl;
 	WINDOWPOS wp;
@@ -9276,10 +9390,14 @@
 	hl.prc = &infoPtr->rcList;
 	hl.pwpos = &wp;
 	SendMessageW( infoPtr->hwndHeader, HDM_LAYOUT, 0, (LPARAM)&hl );
-
-	SetWindowPos(wp.hwnd, wp.hwndInsertAfter, wp.x, wp.y, wp.cx, wp.cy, wp.flags);
+        TRACE("  wp.flags=0x%08x, wp=%d,%d (%dx%d)\n", wp.flags, wp.x, wp.y, wp.cx, wp.cy);
+	SetWindowPos(wp.hwnd, wp.hwndInsertAfter, wp.x, wp.y, wp.cx, wp.cy,
+                    wp.flags | ((infoPtr->dwStyle & LVS_NOCOLUMNHEADER)
+                        ? SWP_HIDEWINDOW : SWP_SHOWWINDOW));
+        TRACE("  after SWP wp=%d,%d (%dx%d)\n", wp.x, wp.y, wp.cx, wp.cy);
 
 	infoPtr->rcList.top = max(wp.cy, 0);
+        infoPtr->rcList.top += (infoPtr->dwLvExStyle & LVS_EX_GRIDLINES) ? 2 : 0;
     }
 
     TRACE("  rcList=%s\n", wine_dbgstr_rect(&infoPtr->rcList));
@@ -9302,6 +9420,7 @@
 {
     UINT uNewView = lpss->styleNew & LVS_TYPEMASK;
     UINT uOldView = lpss->styleOld & LVS_TYPEMASK;
+    UINT style;
 
     TRACE("(styletype=%lx, styleOld=0x%08x, styleNew=0x%08x)\n",
           wStyleType, lpss->styleOld, lpss->styleNew);
@@ -9354,15 +9473,35 @@
             hl.prc = &infoPtr->rcList;
             hl.pwpos = &wp;
             SendMessageW( infoPtr->hwndHeader, HDM_LAYOUT, 0, (LPARAM)&hl );
-            SetWindowPos(infoPtr->hwndHeader, infoPtr->hwndSelf, wp.x, wp.y, wp.cx, wp.cy, wp.flags);
+            SetWindowPos(infoPtr->hwndHeader, infoPtr->hwndSelf, wp.x, wp.y, wp.cx, wp.cy,
+                    wp.flags | ((infoPtr->dwStyle & LVS_NOCOLUMNHEADER)
+                        ? SWP_HIDEWINDOW : SWP_SHOWWINDOW));
         }
 
 	LISTVIEW_UpdateItemSize(infoPtr);
     }
 
     if (uNewView == LVS_REPORT)
-	ShowWindow(infoPtr->hwndHeader, (lpss->styleNew & LVS_NOCOLUMNHEADER) ? SW_HIDE : SW_SHOWNORMAL);
-     
+    {
+        if ((lpss->styleOld ^ lpss->styleNew) & LVS_NOCOLUMNHEADER)
+        {
+            if (lpss->styleNew & LVS_NOCOLUMNHEADER)
+            {
+                /* Turn off the header control */
+                style = GetWindowLongW(infoPtr->hwndHeader, GWL_STYLE);
+                TRACE("Hide header control, was 0x%08x\n", style);
+                SetWindowLongW(infoPtr->hwndHeader, GWL_STYLE, style | HDS_HIDDEN);
+            } else {
+                /* Turn on the header control */
+                if ((style = GetWindowLongW(infoPtr->hwndHeader, GWL_STYLE)) & HDS_HIDDEN)
+                {
+                    TRACE("Show header control, was 0x%08x\n", style);
+                    SetWindowLongW(infoPtr->hwndHeader, GWL_STYLE, (style & ~HDS_HIDDEN) | WS_VISIBLE);
+                }
+            }
+        }
+    }
+
     if ( (uNewView == LVS_ICON || uNewView == LVS_SMALLICON) &&
 	 (uNewView != uOldView || ((lpss->styleNew ^ lpss->styleOld) & LVS_ALIGNMASK)) )
 	 LISTVIEW_Arrange(infoPtr, LVA_DEFAULT);
@@ -9408,7 +9547,7 @@
     return (LRESULT)LISTVIEW_CreateDragImage(infoPtr, (INT)wParam, (LPPOINT)lParam);
 
   case LVM_DELETEALLITEMS:
-    return LISTVIEW_DeleteAllItems(infoPtr);
+    return LISTVIEW_DeleteAllItems(infoPtr, FALSE);
 
   case LVM_DELETECOLUMN:
     return LISTVIEW_DeleteColumn(infoPtr, (INT)wParam);
@@ -9528,6 +9667,8 @@
 
   case LVM_GETORIGIN:
     if (!lParam) return FALSE;
+    if ((infoPtr->dwStyle & LVS_TYPEMASK) == LVS_REPORT ||
+        (infoPtr->dwStyle & LVS_TYPEMASK) == LVS_LIST) return FALSE;
     LISTVIEW_GetOrigin(infoPtr, (LPPOINT)lParam);
     return TRUE;
 
@@ -9968,10 +10109,9 @@
             HFONT         hFont, hOldFont = 0;
 	    RECT	  rect;
 	    SIZE	  sz;
-	    int		  len;
 
 	    if (!infoPtr->hwndEdit || !hdc) return 0;
-	    len = GetWindowTextW(infoPtr->hwndEdit, buffer, sizeof(buffer)/sizeof(buffer[0]));
+	    GetWindowTextW(infoPtr->hwndEdit, buffer, sizeof(buffer)/sizeof(buffer[0]));
 	    GetWindowRect(infoPtr->hwndEdit, &rect);
 
             /* Select font to get the right dimension of the string */

Modified: trunk/reactos/dll/win32/comctl32/monthcal.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/monthcal.c?rev=34327&r1=34326&r2=34327&view=diff
==============================================================================
--- trunk/reactos/dll/win32/comctl32/monthcal.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/comctl32/monthcal.c [iso-8859-1] Sun Jul  6 07:41:23 2008
@@ -442,7 +442,7 @@
   RECT *days=&dayrect;
   RECT rtoday;
   int i, j, m, mask, day, firstDay, weeknum, weeknum1,prevMonth;
-  int textHeight = infoPtr->textHeight, textWidth = infoPtr->textWidth;
+  int textHeight = infoPtr->textHeight;
   SIZE size;
   HBRUSH hbr;
   HFONT currentFont;
@@ -659,13 +659,11 @@
  * date if necessary */
 
   if(!(dwStyle & MCS_NOTODAY))  {
-    int offset = 0;
     if(!(dwStyle & MCS_NOTODAYCIRCLE))  {
       /*day is the number of days from nextmonth we put on the calendar */
       MONTHCAL_CircleDay(infoPtr, hdc,
 			 day+MONTHCAL_MonthLength(infoPtr->currentMonth,infoPtr->currentYear),
 			 infoPtr->currentMonth);
-      offset+=textWidth;
     }
     if (!LoadStringW(COMCTL32_hModule,IDM_TODAY,buf1,countof(buf1)))
       {

Modified: trunk/reactos/dll/win32/comctl32/pager.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/pager.c?rev=34327&r1=34326&r2=34327&view=diff
==============================================================================
--- trunk/reactos/dll/win32/comctl32/pager.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/comctl32/pager.c [iso-8859-1] Sun Jul  6 07:41:23 2008
@@ -555,8 +555,8 @@
 PAGER_SetFixedWidth(PAGER_INFO* infoPtr)
 {
   /* Must set the non-scrollable dimension to be less than the full height/width
-   * so that NCCalcSize is called.  The Msoft docs mention 3/4 factor for button
-   * size, and experimentation shows that affect is almost right. */
+   * so that NCCalcSize is called.  The Microsoft docs mention 3/4 factor for button
+   * size, and experimentation shows that the effect is almost right. */
 
     RECT wndRect;
     INT delta, h;
@@ -586,8 +586,8 @@
 PAGER_SetFixedHeight(PAGER_INFO* infoPtr)
 {
   /* Must set the non-scrollable dimension to be less than the full height/width
-   * so that NCCalcSize is called.  The Msoft docs mention 3/4 factor for button
-   * size, and experimentation shows that affect is almost right. */
+   * so that NCCalcSize is called.  The Microsoft docs mention 3/4 factor for button
+   * size, and experimentation shows that the effect is almost right. */
 
     RECT wndRect;
     INT delta, w;

Modified: trunk/reactos/dll/win32/comctl32/propsheet.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/propsheet.c?rev=34327&r1=34326&r2=34327&view=diff
==============================================================================
--- trunk/reactos/dll/win32/comctl32/propsheet.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/comctl32/propsheet.c [iso-8859-1] Sun Jul  6 07:41:23 2008
@@ -3449,7 +3449,6 @@
       PropSheetInfo* psInfo = (PropSheetInfo*) lParam;
       WCHAR* strCaption = (WCHAR*)Alloc(MAX_CAPTION_LENGTH*sizeof(WCHAR));
       HWND hwndTabCtrl = GetDlgItem(hwnd, IDC_TABCONTROL);
-      LPCPROPSHEETPAGEW ppshpage;
       int idx;
       LOGFONTW logFont;
 
@@ -3545,7 +3544,6 @@
 					      PSCB_INITIALIZED, (LPARAM)0);
 
       idx = psInfo->active_page;
-      ppshpage = (LPCPROPSHEETPAGEW)psInfo->proppage[idx].hpage;
       psInfo->active_page = -1;
 
       PROPSHEET_SetCurSel(hwnd, idx, 1, psInfo->proppage[idx].hpage);

Modified: trunk/reactos/dll/win32/comctl32/rebar.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/rebar.c?rev=34327&r1=34326&r2=34327&view=diff
==============================================================================
--- trunk/reactos/dll/win32/comctl32/rebar.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/comctl32/rebar.c [iso-8859-1] Sun Jul  6 07:41:23 2008
@@ -2848,7 +2848,6 @@
 {
     LPCREATESTRUCTW cs = (LPCREATESTRUCTW) lParam;
     RECT wnrc1, clrc1;
-    HTHEME theme;
 
     if (TRACE_ON(rebar)) {
 	GetWindowRect(infoPtr->hwndSelf, &wnrc1);
@@ -2859,8 +2858,8 @@
     }
 
     TRACE("created!\n");
-    
-    if ((theme = OpenThemeData (infoPtr->hwndSelf, themeClass)))
+
+    if (OpenThemeData (infoPtr->hwndSelf, themeClass))
     {
         /* native seems to clear WS_BORDER when themed */
         infoPtr->dwStyle &= ~WS_BORDER;

Modified: trunk/reactos/dll/win32/comctl32/status.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/status.c?rev=34327&r1=34326&r2=34327&view=diff
==============================================================================
--- trunk/reactos/dll/win32/comctl32/status.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/comctl32/status.c [iso-8859-1] Sun Jul  6 07:41:23 2008
@@ -984,12 +984,6 @@
     dwStyle = GetWindowLongW (hwnd, GWL_STYLE);
     /* native seems to clear WS_BORDER, too */
     dwStyle &= ~WS_BORDER;
-
-    /* statusbars on managed windows should not have SIZEGRIP style */
-    if ((dwStyle & SBARS_SIZEGRIP) && lpCreate->hwndParent &&
-        GetPropA( lpCreate->hwndParent, "__wine_x11_managed" ))
-        dwStyle &= ~SBARS_SIZEGRIP;
-
     SetWindowLongW (hwnd, GWL_STYLE, dwStyle);
 
     if ((hdc = GetDC (hwnd))) {

Modified: trunk/reactos/dll/win32/comctl32/syslink.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/syslink.c?rev=34327&r1=34326&r2=34327&view=diff
==============================================================================
--- trunk/reactos/dll/win32/comctl32/syslink.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/comctl32/syslink.c [iso-8859-1] Sun Jul  6 07:41:23 2008
@@ -967,16 +967,14 @@
  */
 static LRESULT SYSLINK_SetText (SYSLINK_INFO *infoPtr, LPCWSTR Text)
 {
-    int textlen;
-
     /* clear the document */
     SYSLINK_ClearDoc(infoPtr);
-    
-    if(Text == NULL || (textlen = lstrlenW(Text)) == 0)
+
+    if(Text == NULL || *Text == 0)
     {
         return TRUE;
     }
-    
+
     /* let's parse the string and create a document */
     if(SYSLINK_ParseText(infoPtr, Text) > 0)
     {

Modified: trunk/reactos/dll/win32/comctl32/tab.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/tab.c?rev=34327&r1=34326&r2=34327&view=diff
==============================================================================
--- trunk/reactos/dll/win32/comctl32/tab.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/comctl32/tab.c [iso-8859-1] Sun Jul  6 07:41:23 2008
@@ -1715,12 +1715,12 @@
       if(lStyle & TCS_VERTICAL)
       {
         center_offset_h = ((drawRect->bottom - drawRect->top) - (cy + infoPtr->uHItemPadding + (rcText.right  - rcText.left))) / 2;
-        center_offset_v = (drawRect->left + (drawRect->right - drawRect->left) - cx) / 2;
+        center_offset_v = ((drawRect->right - drawRect->left) - cx) / 2;
       }
       else
       {
         center_offset_h = ((drawRect->right - drawRect->left) - (cx + infoPtr->uHItemPadding + (rcText.right  - rcText.left))) / 2;
-        center_offset_v = (drawRect->top + (drawRect->bottom - drawRect->top) - cy) / 2;
+        center_offset_v = ((drawRect->bottom - drawRect->top) - cy) / 2;
       }
 
       /* if an item is selected, the icon is shifted up instead of down */

Modified: trunk/reactos/dll/win32/comctl32/toolbar.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/toolbar.c?rev=34327&r1=34326&r2=34327&view=diff
==============================================================================
--- trunk/reactos/dll/win32/comctl32/toolbar.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/comctl32/toolbar.c [iso-8859-1] Sun Jul  6 07:41:23 2008
@@ -1280,7 +1280,7 @@
     TBUTTON_INFO *btnPtr;
     INT x, cx, i, j;
     RECT rc;
-    BOOL bWrap, bButtonWrap;
+    BOOL bButtonWrap;
 
     /* 	When the toolbar window style is not TBSTYLE_WRAPABLE,	*/
     /*	no layout is necessary. Applications may use this style */
@@ -1314,7 +1314,6 @@
 
     for (i = 0; i < infoPtr->nNumButtons; i++ )
     {
-	bWrap = FALSE;
 	btnPtr[i].fsState &= ~TBSTATE_WRAP;
 
 	if (btnPtr[i].fsState & TBSTATE_HIDDEN)
@@ -2406,8 +2405,8 @@
 		SendDlgItemMessageW (hwnd, IDC_TOOLBARBTN_LBOX, LB_SETCURSEL, index, 0);
 		SendDlgItemMessageW (hwnd, IDC_TOOLBARBTN_LBOX, LB_SETTOPINDEX, index, 0);
 
-        MakeDragList(GetDlgItem(hwnd, IDC_TOOLBARBTN_LBOX));
-        MakeDragList(GetDlgItem(hwnd, IDC_AVAILBTN_LBOX));
+		MakeDragList(GetDlgItem(hwnd, IDC_TOOLBARBTN_LBOX));
+		MakeDragList(GetDlgItem(hwnd, IDC_AVAILBTN_LBOX));
 
 		/* set focus and disable buttons */
 		PostMessageW (hwnd, WM_USER, 0, 0);
@@ -4762,7 +4761,7 @@
 
     TRACE("hwnd = %p, nHit = %d\n", hwnd, (INT)wParam);
 
-    if ((INT)wParam > infoPtr->nNumButtons)
+    if ((INT)wParam >= infoPtr->nNumButtons)
         return infoPtr->nHotItem;
     
     if ((INT)wParam < 0)
@@ -4985,7 +4984,7 @@
         /* FIXME: Separators make this quite complex */
         if (seps) FIXME("Separators unhandled\n");
 
-        /* Round up so more per line, ie less rows */
+        /* Round up so more per line, i.e., less rows */
         idealWrap = (infoPtr->nNumButtons - hidden + (rows-1)) / rows;
 
         /* Calculate ideal wrap point if we are allowed to grow, but cannot
@@ -5779,7 +5778,6 @@
     POINT pt;
     INT   nHit;
     INT   nOldIndex = -1;
-    BOOL  bSendMessage = TRUE;
     NMHDR hdr;
     NMMOUSE nmmouse;
     NMTOOLBARA nmtb;
@@ -5866,8 +5864,6 @@
 		if (btnPtr->fsStyle & BTNS_GROUP) {
 		    nOldIndex = TOOLBAR_GetCheckedGroupButtonIndex (infoPtr,
 			nHit);
-		    if (nOldIndex == nHit)
-			bSendMessage = FALSE;
 		    if ((nOldIndex != nHit) &&
 			(nOldIndex != -1))
 			infoPtr->buttons[nOldIndex].fsState &= ~TBSTATE_CHECKED;
@@ -6075,7 +6071,7 @@
             /* call TRACKMOUSEEVENT so we receive a WM_MOUSELEAVE message */
             /* and can properly deactivate the hot toolbar button */
             _TrackMouseEvent(&trackinfo);
-       }
+        }
     }
 
     if (infoPtr->hwndToolTip)

Modified: trunk/reactos/dll/win32/comctl32/tooltips.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/tooltips.c?rev=34327&r1=34326&r2=34327&view=diff
==============================================================================
--- trunk/reactos/dll/win32/comctl32/tooltips.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/comctl32/tooltips.c [iso-8859-1] Sun Jul  6 07:41:23 2008
@@ -883,7 +883,7 @@
 TOOLTIPS_GetToolFromInfoA (const TOOLTIPS_INFO *infoPtr, const TTTOOLINFOA *lpToolInfo)
 {
     TTTOOL_INFO *toolPtr;
-    INT nTool;
+    UINT nTool;
 
     for (nTool = 0; nTool < infoPtr->uNumTools; nTool++) {
 	toolPtr = &infoPtr->tools[nTool];
@@ -910,7 +910,7 @@
 TOOLTIPS_GetToolFromInfoW (const TOOLTIPS_INFO *infoPtr, const TTTOOLINFOW *lpToolInfo)
 {
     TTTOOL_INFO *toolPtr;
-    INT nTool;
+    UINT nTool;
 
     for (nTool = 0; nTool < infoPtr->uNumTools; nTool++) {
 	toolPtr = &infoPtr->tools[nTool];
@@ -937,7 +937,7 @@
 TOOLTIPS_GetToolFromPoint (const TOOLTIPS_INFO *infoPtr, HWND hwnd, const POINT *lpPt)
 {
     TTTOOL_INFO *toolPtr;
-    INT  nTool;
+    UINT nTool;
 
     for (nTool = 0; nTool < infoPtr->uNumTools; nTool++) {
 	toolPtr = &infoPtr->tools[nTool];

Modified: trunk/reactos/dll/win32/comctl32/trackbar.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/trackbar.c?rev=34327&r1=34326&r2=34327&view=diff
==============================================================================
--- trunk/reactos/dll/win32/comctl32/trackbar.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/comctl32/trackbar.c [iso-8859-1] Sun Jul  6 07:41:23 2008
@@ -822,7 +822,6 @@
     HBITMAP hOldBmp = 0, hOffScreenBmp = 0;
     NMCUSTOMDRAW nmcd;
     int gcdrf, icdrf;
-    HTHEME theme;
 
     if (infoPtr->flags & TB_THUMBCHANGED) {
         TRACKBAR_UpdateThumb (infoPtr);
@@ -867,7 +866,7 @@
     /* Erase background */
     if (gcdrf == CDRF_DODEFAULT ||
         notify_customdraw(infoPtr, &nmcd, CDDS_PREERASE) != CDRF_SKIPDEFAULT) {
-        if ((theme = GetWindowTheme (infoPtr->hwndSelf))) {
+        if (GetWindowTheme (infoPtr->hwndSelf)) {
             DrawThemeParentBackground (infoPtr->hwndSelf, hdc, 0);
         }
         else
@@ -1453,9 +1452,10 @@
     if (infoPtr->hwndToolTip)
     	DestroyWindow (infoPtr->hwndToolTip);
 
-    Free (infoPtr);
     SetWindowLongPtrW (infoPtr->hwndSelf, 0, 0);
     CloseThemeData (GetWindowTheme (infoPtr->hwndSelf));
+    Free (infoPtr);
+
     return 0;
 }
 

Modified: trunk/reactos/dll/win32/comctl32/treeview.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/treeview.c?rev=34327&r1=34326&r2=34327&view=diff
==============================================================================
--- trunk/reactos/dll/win32/comctl32/treeview.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/comctl32/treeview.c [iso-8859-1] Sun Jul  6 07:41:23 2008
@@ -1019,7 +1019,6 @@
 TREEVIEW_FreeItem(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *item)
 {
     DPA_DeletePtr(infoPtr->items, DPA_GetPtrIndex(infoPtr->items, item));
-    Free(item);
     if (infoPtr->selectedItem == item)
         infoPtr->selectedItem = NULL;
     if (infoPtr->hotItem == item)
@@ -1032,6 +1031,7 @@
         infoPtr->dropItem = NULL;
     if (infoPtr->insertMarkItem == item)
         infoPtr->insertMarkItem = NULL;
+    Free(item);
 }
 
 
@@ -3292,7 +3292,7 @@
         scrollDist = nextItem->rect.top - orgNextTop;
         scrollRect.top = orgNextTop;
 
-        ScrollWindowEx (infoPtr->hwnd, 0, scrollDist, &scrollRect, NULL,
+        ScrollWindowEx (infoPtr->hwnd, 0, scrollDist, &scrollRect, &scrollRect,
                        NULL, NULL, SW_ERASE | SW_INVALIDATE);
         TREEVIEW_Invalidate (infoPtr, wineItem);
     } else {
@@ -3573,12 +3573,11 @@
 	    TREEVIEW_ITEM *editItem = infoPtr->selectedItem;
 	    HDC hdc = GetDC(infoPtr->hwndEdit);
 	    SIZE sz;
-	    int len;
 	    HFONT hFont, hOldFont = 0;
 
 	    infoPtr->bLabelChanged = TRUE;
 
-	    len = GetWindowTextW(infoPtr->hwndEdit, buffer, sizeof(buffer)/sizeof(buffer[0]));
+	    GetWindowTextW(infoPtr->hwndEdit, buffer, sizeof(buffer)/sizeof(buffer[0]));
 
 	    /* Select font to get the right dimension of the string */
 	    hFont = (HFONT)SendMessageW(infoPtr->hwndEdit, WM_GETFONT, 0, 0);

Modified: trunk/reactos/dll/win32/comctl32/updown.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/updown.c?rev=34327&r1=34326&r2=34327&view=diff
==============================================================================
--- trunk/reactos/dll/win32/comctl32/updown.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/comctl32/updown.c [iso-8859-1] Sun Jul  6 07:41:23 2008
@@ -470,6 +470,28 @@
 }
 
 /***********************************************************************
+ * UPDOWN_MouseWheel
+ *
+ * Handle mouse wheel scrolling
+ */
+static LRESULT UPDOWN_MouseWheel(UPDOWN_INFO *infoPtr, WPARAM wParam)
+{
+    int iWheelDelta = GET_WHEEL_DELTA_WPARAM(wParam) / WHEEL_DELTA;
+
+    if (wParam & (MK_SHIFT | MK_CONTROL))
+        return 0;
+
+    if (iWheelDelta != 0)
+    {
+        UPDOWN_GetBuddyInt(infoPtr);
+        UPDOWN_DoAction(infoPtr, abs(iWheelDelta), iWheelDelta > 0 ? FLAG_INCR : FLAG_DECR);
+    }
+
+    return 1;
+}
+
+
+/***********************************************************************
  * UPDOWN_Buddy_SubclassProc used to handle messages sent to the buddy
  *                           control.
  */
@@ -485,6 +507,11 @@
         HWND upDownHwnd = GetPropW(hwnd, BUDDY_UPDOWN_HWND);
 
 	UPDOWN_KeyPressed(UPDOWN_GetInfoPtr(upDownHwnd), (int)wParam);
+    }
+    else if (uMsg == WM_MOUSEWHEEL) {
+        HWND upDownHwnd = GetPropW(hwnd, BUDDY_UPDOWN_HWND);
+
+       UPDOWN_MouseWheel(UPDOWN_GetInfoPtr(upDownHwnd), (int)wParam);
     }
 
     return CallWindowProcW( superClassWndProc, hwnd, uMsg, wParam, lParam);
@@ -929,6 +956,10 @@
 		UPDOWN_HandleMouseEvent (infoPtr, message, (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam));
 	    break;
 
+        case WM_MOUSEWHEEL:
+            UPDOWN_MouseWheel(infoPtr, wParam);
+            break;
+
 	case WM_KEYDOWN:
 	    if((infoPtr->dwStyle & UDS_ARROWKEYS) && UPDOWN_IsEnabled(infoPtr))
 		return UPDOWN_KeyPressed(infoPtr, (int)wParam);



More information about the Ros-diffs mailing list