[REBAR] Add Chevron Support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

This patch adds support for chevrons in the Rebar common control. The chevron 
doesn't actually look like a chevron at the moment (it is a copy of the 
toolbar drop-down arrow) due to my lack of drawing skills.
In order for the chevron to show up the child control has to be wider than 
the rebar itself. The child control is usually a toolbar with 
TBSTYLE_EX_HIDECLIPPEDBUTTONS enabled (patch coming for this).

Changelog:
- Add chevron support
Index: wine/dlls/comctl32/rebar.c
===================================================================
RCS file: /home/wine/wine/dlls/comctl32/rebar.c,v
retrieving revision 1.79
diff -u -r1.79 rebar.c
--- wine/dlls/comctl32/rebar.c	24 Oct 2003 04:18:42 -0000	1.79
+++ wine/dlls/comctl32/rebar.c	5 Nov 2003 19:42:35 -0000
@@ -119,7 +119,7 @@
  *
  *    Still to do:
  *  2. Following still not handled: RBBS_FIXEDBMP,
- *            RBBS_USECHEVRON, CCS_NORESIZE,
+ *            CCS_NORESIZE,
  *            CCS_NOMOVEX, CCS_NOMOVEY
  *  3. Following are only partially handled:
  *            RBS_AUTOSIZE, RBBS_VARIABLEHEIGHT
@@ -136,7 +136,7 @@
  *        WM_SYSCOLORCHANGE, WM_VKEYTOITEM, WM_WININICHANGE
  *  7. The following notifications are not implemented:
  *        NM_CUSTOMDRAW, NM_RELEASEDCAPTURE
- *        RB_CHEVRONPUSHED, RBN_MINMAX
+ *        RBN_MINMAX
  */
 
 #include <stdarg.h>
@@ -194,6 +194,7 @@
     RECT    rcCapImage;     /* calculated caption image rectangle */
     RECT    rcCapText;      /* calculated caption text rectangle */
     RECT    rcChild;        /* calculated child rectangle */
+    RECT    rcChevron;      /* calculated chevron rectangle */
 
     LPWSTR    lpText;
     HWND    hwndPrevParent;
@@ -210,6 +211,8 @@
 #define DRAW_TEXT       0x00000004
 #define DRAW_RIGHTSEP   0x00000010
 #define DRAW_BOTTOMSEP  0x00000020
+#define DRAW_CHEVRONHOT 0x00000040
+#define DRAW_CHEVRONPUSHED 0x00000080
 #define NTF_INVALIDATE  0x01000000
 
 typedef struct
@@ -248,9 +251,11 @@
     INT      iVersion;    /* version number */
     POINTS   dragStart;   /* x,y of button down */
     POINTS   dragNow;     /* x,y of this MouseMove */
-    INT      ihitBand;    /* band number of band whose gripper was grabbed */
+    INT      iOldBand;    /* last band that had the mouse cursor over it */
     INT      ihitoffset;  /* offset of hotspot from gripper.left */
     POINT    origin;      /* left/upper corner of client */
+    INT      ichevronhotBand; /* last band that had a hot chevron */
+    INT      iGrabbedBand;/* band number of band whose gripper was grabbed */
 
     REBAR_ROW  *rows;       /* pointer to row indexes              */
     REBAR_BAND *bands;      /* pointer to the array of rebar bands */
@@ -293,6 +298,9 @@
 /* if present.                                                     */
 #define GRIPPER_WIDTH  3
 
+/* Width of the chevron button if present */
+#define CHEVRON_WIDTH  10
+
 /* Height of divider for Rebar if not disabled (CCS_NODIVIDER)     */
 /* either top or bottom                                            */
 #define REBAR_DIVIDER  2
@@ -437,10 +445,10 @@
     TRACE("hwnd=%p: color=%08lx/%08lx, bands=%u, rows=%u, cSize=%ld,%ld\n",
 	  iP->hwndSelf, iP->clrText, iP->clrBk, iP->uNumBands, iP->uNumRows,
 	  iP->calcSize.cx, iP->calcSize.cy);
-    TRACE("hwnd=%p: flags=%08x, dragStart=%d,%d, dragNow=%d,%d, ihitBand=%d\n",
+    TRACE("hwnd=%p: flags=%08x, dragStart=%d,%d, dragNow=%d,%d, iGrabbedBand=%d\n",
 	  iP->hwndSelf, iP->fStatus, iP->dragStart.x, iP->dragStart.y,
 	  iP->dragNow.x, iP->dragNow.y,
-	  iP->ihitBand);
+	  iP->iGrabbedBand);
     TRACE("hwnd=%p: style=%08lx, I'm Unicode=%s, notify in Unicode=%s, redraw=%s\n",
 	  iP->hwndSelf, iP->dwStyle, (iP->bUnicode)?"TRUE":"FALSE",
 	  (iP->NtfUnicode)?"TRUE":"FALSE", (iP->DoRedraw)?"TRUE":"FALSE");
@@ -484,6 +492,25 @@
 
 }
 
+static void
+REBAR_DrawChevron (HDC hdc, INT left, INT top, INT colorRef)
+{
+    INT x, y;
+    HPEN hPen, hOldPen;
+
+    if (!(hPen = CreatePen( PS_SOLID, 1, GetSysColor( colorRef )))) return;
+    hOldPen = SelectObject ( hdc, hPen );
+    x = left + 2;
+    y = top;
+    MoveToEx (hdc, x, y, NULL);
+    LineTo (hdc, x+5, y++); x++;
+    MoveToEx (hdc, x, y, NULL);
+    LineTo (hdc, x+3, y++); x++;
+    MoveToEx (hdc, x, y, NULL);
+    LineTo (hdc, x+1, y++);
+    SelectObject( hdc, hOldPen );
+    DeleteObject( hPen );
+}
 
 static HWND
 REBAR_GetNotifyParent (REBAR_INFO *infoPtr)
@@ -613,6 +640,22 @@
 	SelectObject (hdc, hOldFont);
     }
 
+    if (!IsRectEmpty(&lpBand->rcChevron))
+    {
+        if (lpBand->fDraw & DRAW_CHEVRONPUSHED)
+        {
+            DrawEdge(hdc, &lpBand->rcChevron, BDR_SUNKENOUTER, BF_RECT | BF_MIDDLE);
+            REBAR_DrawChevron(hdc, lpBand->rcChevron.left+1, lpBand->rcChevron.top + 11, COLOR_WINDOWFRAME);
+        }
+        else if (lpBand->fDraw & DRAW_CHEVRONHOT)
+        {
+            DrawEdge(hdc, &lpBand->rcChevron, BDR_RAISEDINNER, BF_RECT | BF_MIDDLE);
+            REBAR_DrawChevron(hdc, lpBand->rcChevron.left, lpBand->rcChevron.top + 10, COLOR_WINDOWFRAME);
+        }
+        else
+            REBAR_DrawChevron(hdc, lpBand->rcChevron.left, lpBand->rcChevron.top + 10, COLOR_WINDOWFRAME);
+    }
+
     if (lpBand->uCDret == (CDRF_NOTIFYPOSTPAINT | CDRF_NOTIFYITEMDRAW)) {
 	nmcd.dwDrawStage = CDDS_ITEMPOSTPAINT;
 	nmcd.hdc = hdc;
@@ -954,6 +997,13 @@
 	  SetRect (&lpBand->rcChild,
 		   lpBand->rcBand.left+lpBand->cxHeader, lpBand->rcBand.top+yoff,
 		   lpBand->rcBand.right-xoff, lpBand->rcBand.bottom-yoff);
+	  if ((lpBand->fStyle & RBBS_USECHEVRON) && (lpBand->rcChild.right - lpBand->rcChild.left < lpBand->cxIdeal))
+	  {
+	      lpBand->rcChild.right -= CHEVRON_WIDTH;
+	      SetRect(&lpBand->rcChevron, lpBand->rcChild.right,
+	              lpBand->rcChild.top, lpBand->rcChild.right + CHEVRON_WIDTH,
+	              lpBand->rcChild.bottom);
+	  }
       }
       else {
           SetRect (&lpBand->rcChild,
@@ -1431,6 +1481,8 @@
 	lpBand->fDraw = 0;
 	lpBand->iRow = row;
 
+	SetRectEmpty(&lpBand->rcChevron);
+
 	if (HIDDENBAND(lpBand)) continue;
 
 	lpBand->rcoldBand = lpBand->rcBand;
@@ -2207,7 +2259,7 @@
 }
 
 static void
-REBAR_InternalHitTest (REBAR_INFO *infoPtr, LPPOINT lpPt, UINT *pFlags, INT *pBand)
+REBAR_InternalHitTest (REBAR_INFO *infoPtr, const LPPOINT lpPt, UINT *pFlags, INT *pBand)
 {
     REBAR_BAND *lpBand;
     RECT rect;
@@ -2227,7 +2279,6 @@
 	}
 	else {
 	    /* somewhere inside */
-	    infoPtr->ihitBand = -1;
 	    for (iCount = 0; iCount < infoPtr->uNumBands; iCount++) {
 		lpBand = &infoPtr->bands[iCount];
 		if (HIDDENBAND(lpBand)) continue;
@@ -2236,7 +2287,6 @@
 			*pBand = iCount;
 		    if (PtInRect (&lpBand->rcGripper, *lpPt)) {
 			*pFlags = RBHT_GRABBER;
-			infoPtr->ihitBand = iCount;
 			TRACE("ON GRABBER %d\n", iCount);
 			return;
 		    }
@@ -2255,6 +2305,11 @@
 			TRACE("ON CLIENT %d\n", iCount);
 			return;
 		    }
+		    else if (PtInRect (&lpBand->rcChevron, *lpPt)) {
+			*pFlags = RBHT_CHEVRON;
+			TRACE("ON CHEVRON %d\n", iCount);
+			return;
+		    }
 		    else {
 			*pFlags = RBHT_NOWHERE;
 			TRACE("NOWHERE %d\n", iCount);
@@ -2373,14 +2428,14 @@
 	    infoPtr->dragStart.x = 0;
 	    infoPtr->dragStart.y = 0;
 	    infoPtr->dragNow = infoPtr->dragStart;
-	    infoPtr->ihitBand = -1;
+	    infoPtr->iGrabbedBand = -1;
 	    ReleaseCapture ();
 	    return ;
 	}
 	infoPtr->fStatus |= BEGIN_DRAG_ISSUED;
     }
 
-    ihitBand = infoPtr->ihitBand;
+    ihitBand = infoPtr->iGrabbedBand;
     hitBand = &infoPtr->bands[ihitBand];
     imaxdBand = ihitBand; /* to suppress warning message */
 
@@ -3727,103 +3782,219 @@
     return (LRESULT)infoPtr->hFont;
 }
 
+static LRESULT
+REBAR_PushChevron(REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
+{
+    if (wParam >= 0 && (UINT)wParam < infoPtr->uNumBands)
+    {
+        NMREBARCHEVRON nmrbc;
+        REBAR_BAND *lpBand = &infoPtr->bands[wParam];
+
+        TRACE("Pressed chevron on band %d\n", wParam);
+
+        /* redraw chevron in pushed state */
+        lpBand->fDraw |= DRAW_CHEVRONPUSHED;
+        RedrawWindow(infoPtr->hwndSelf, &lpBand->rcChevron,0,
+          RDW_ERASE|RDW_INVALIDATE|RDW_UPDATENOW);
+
+        /* notify app so it can display a popup menu or whatever */
+        nmrbc.uBand = wParam;
+        nmrbc.wID = lpBand->wID;
+        nmrbc.lParam = lpBand->lParam;
+        nmrbc.rc = lpBand->rcChevron;
+        nmrbc.lParamNM = lParam;
+        REBAR_Notify((NMHDR*)&nmrbc, infoPtr, RBN_CHEVRONPUSHED);
+
+        /* redraw chevron in previous state */
+        lpBand->fDraw &= ~DRAW_CHEVRONPUSHED;
+        InvalidateRect(infoPtr->hwndSelf, &lpBand->rcChevron, TRUE);
+
+        return TRUE;
+    }
+    return FALSE;
+}
 
 static LRESULT
 REBAR_LButtonDown (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
 {
     REBAR_BAND *lpBand;
+    UINT htFlags;
+    UINT iHitBand;
+    POINT ptMouseDown;
+    ptMouseDown.x = (INT)LOWORD(lParam);
+    ptMouseDown.y = (INT)HIWORD(lParam);
 
-    /* If InternalHitTest did not find a hit on the Gripper, */
-    /* then ignore the button click.                         */
-    if (infoPtr->ihitBand == -1) return 0;
-
-    SetCapture (infoPtr->hwndSelf);
-
-    /* save off the LOWORD and HIWORD of lParam as initial x,y */
-    lpBand = &infoPtr->bands[infoPtr->ihitBand];
-    infoPtr->dragStart = MAKEPOINTS(lParam);
-    infoPtr->dragNow = infoPtr->dragStart;
-    if (infoPtr->dwStyle & CCS_VERT)
-        infoPtr->ihitoffset = infoPtr->dragStart.y - (lpBand->rcBand.top+REBAR_PRE_GRIPPER);
-    else
-        infoPtr->ihitoffset = infoPtr->dragStart.x - (lpBand->rcBand.left+REBAR_PRE_GRIPPER);
+    REBAR_InternalHitTest(infoPtr, &ptMouseDown, &htFlags, &iHitBand);
+    lpBand = &infoPtr->bands[iHitBand];
 
+    if (htFlags == RBHT_CHEVRON)
+    {
+        REBAR_PushChevron(infoPtr, iHitBand, 0);
+    }
+    else if (htFlags == RBHT_GRABBER || htFlags == RBHT_CAPTION)
+    {
+        TRACE("Starting drag\n");
+
+        SetCapture (infoPtr->hwndSelf);
+        infoPtr->iGrabbedBand = iHitBand;
+
+        /* save off the LOWORD and HIWORD of lParam as initial x,y */
+        infoPtr->dragStart = MAKEPOINTS(lParam);
+        infoPtr->dragNow = infoPtr->dragStart;
+        if (infoPtr->dwStyle & CCS_VERT)
+            infoPtr->ihitoffset = infoPtr->dragStart.y - (lpBand->rcBand.top+REBAR_PRE_GRIPPER);
+        else
+            infoPtr->ihitoffset = infoPtr->dragStart.x - (lpBand->rcBand.left+REBAR_PRE_GRIPPER);
+    }
     return 0;
 }
 
-
 static LRESULT
 REBAR_LButtonUp (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
 {
-    NMHDR layout;
-    RECT rect;
-    INT ihitBand;
-
-    /* If InternalHitTest did not find a hit on the Gripper, */
-    /* then ignore the button click.                         */
-    if (infoPtr->ihitBand == -1) return 0;
+    if (infoPtr->iGrabbedBand >= 0)
+    {
+        NMHDR layout;
+        RECT rect;
 
-    ihitBand = infoPtr->ihitBand;
-    infoPtr->dragStart.x = 0;
-    infoPtr->dragStart.y = 0;
-    infoPtr->dragNow = infoPtr->dragStart;
-    infoPtr->ihitBand = -1;
+        infoPtr->dragStart.x = 0;
+        infoPtr->dragStart.y = 0;
+        infoPtr->dragNow = infoPtr->dragStart;
+
+        ReleaseCapture ();
+
+        if (infoPtr->fStatus & BEGIN_DRAG_ISSUED) {
+            REBAR_Notify(&layout, infoPtr, RBN_LAYOUTCHANGED);
+            REBAR_Notify_NMREBAR (infoPtr, infoPtr->iGrabbedBand, RBN_ENDDRAG);
+            infoPtr->fStatus &= ~BEGIN_DRAG_ISSUED;
+        }
 
-    ReleaseCapture ();
+        infoPtr->iGrabbedBand = -1;
 
-    if (infoPtr->fStatus & BEGIN_DRAG_ISSUED) {
-        REBAR_Notify((NMHDR *) &layout, infoPtr, RBN_LAYOUTCHANGED);
-	REBAR_Notify_NMREBAR (infoPtr, ihitBand, RBN_ENDDRAG);
-	infoPtr->fStatus &= ~BEGIN_DRAG_ISSUED;
+        GetClientRect(infoPtr->hwndSelf, &rect);
+        InvalidateRect(infoPtr->hwndSelf, NULL, TRUE);
     }
 
-    GetClientRect(infoPtr->hwndSelf, &rect);
-    InvalidateRect(infoPtr->hwndSelf, NULL, TRUE);
-
     return 0;
 }
 
+static LRESULT
+REBAR_MouseLeave (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
+{
+    if (infoPtr->ichevronhotBand >= 0)
+    {
+        REBAR_BAND *lpChevronBand = &infoPtr->bands[infoPtr->ichevronhotBand];
+        if (lpChevronBand->fDraw & DRAW_CHEVRONHOT)
+        {
+            lpChevronBand->fDraw &= ~DRAW_CHEVRONHOT;
+            InvalidateRect(infoPtr->hwndSelf, &lpChevronBand->rcChevron, TRUE);
+        }
+    }
+    infoPtr->iOldBand = -1;
+    infoPtr->ichevronhotBand = -2;
+
+    return TRUE;
+}
 
 static LRESULT
 REBAR_MouseMove (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
 {
-    REBAR_BAND *band1, *band2;
+    REBAR_BAND *lpChevronBand;
     POINTS ptsmove;
 
-    /* Validate entry as hit on Gripper has occurred */
-    if (GetCapture() != infoPtr->hwndSelf) return 0;
-    if (infoPtr->ihitBand == -1) return 0;
-
     ptsmove = MAKEPOINTS(lParam);
 
-    /* if mouse did not move much, exit */
-    if ((abs(ptsmove.x - infoPtr->dragNow.x) <= mindragx) &&
-	(abs(ptsmove.y - infoPtr->dragNow.y) <= mindragy)) return 0;
-
-    band1 = &infoPtr->bands[infoPtr->ihitBand-1];
-    band2 = &infoPtr->bands[infoPtr->ihitBand];
+    /* if we are currently dragging a band */
+    if (infoPtr->iGrabbedBand >= 0)
+    {
+        REBAR_BAND *band1, *band2;
+    
+        if (GetCapture() != infoPtr->hwndSelf)
+            ERR("We are dragging but haven't got capture?!?\n");
+
+        band1 = &infoPtr->bands[infoPtr->iGrabbedBand-1];
+        band2 = &infoPtr->bands[infoPtr->iGrabbedBand];
+
+        /* if mouse did not move much, exit */
+        if ((abs(ptsmove.x - infoPtr->dragNow.x) <= mindragx) &&
+            (abs(ptsmove.y - infoPtr->dragNow.y) <= mindragy)) return 0;
 
-    /* Test for valid drag case - must not be first band in row */
-    if (infoPtr->dwStyle & CCS_VERT) {
-	if ((ptsmove.x < band2->rcBand.left) ||
-	    (ptsmove.x > band2->rcBand.right) ||
-	    ((infoPtr->ihitBand > 0) && (band1->iRow != band2->iRow))) {
-	    FIXME("Cannot drag to other rows yet!!\n");
-	}
-	else {
-	    REBAR_HandleLRDrag (infoPtr, &ptsmove);
-	}
+        /* Test for valid drag case - must not be first band in row */
+        if (infoPtr->dwStyle & CCS_VERT) {
+            if ((ptsmove.x < band2->rcBand.left) ||
+	      (ptsmove.x > band2->rcBand.right) ||
+              ((infoPtr->iGrabbedBand > 0) && (band1->iRow != band2->iRow))) {
+                FIXME("Cannot drag to other rows yet!!\n");
+            }
+            else {
+                REBAR_HandleLRDrag (infoPtr, &ptsmove);
+            }
+        }
+        else {
+            if ((ptsmove.y < band2->rcBand.top) ||
+              (ptsmove.y > band2->rcBand.bottom) ||
+              ((infoPtr->iGrabbedBand > 0) && (band1->iRow != band2->iRow))) {
+                FIXME("Cannot drag to other rows yet!!\n");
+            }
+            else {
+                REBAR_HandleLRDrag (infoPtr, &ptsmove);
+            }
+        }
     }
-    else {
-	if ((ptsmove.y < band2->rcBand.top) ||
-	    (ptsmove.y > band2->rcBand.bottom) ||
-	    ((infoPtr->ihitBand > 0) && (band1->iRow != band2->iRow))) {
-	    FIXME("Cannot drag to other rows yet!!\n");
-	}
-	else {
-	    REBAR_HandleLRDrag (infoPtr, &ptsmove);
-	}
+    else
+    {
+        POINT ptMove;
+        INT iHitBand;
+        UINT htFlags;
+        TRACKMOUSEEVENT trackinfo;
+
+        ptMove.x = (INT)ptsmove.x;
+        ptMove.y = (INT)ptsmove.y;
+        REBAR_InternalHitTest(infoPtr, &ptMove, &htFlags, &iHitBand);
+
+        if (infoPtr->iOldBand >= 0 && infoPtr->iOldBand == infoPtr->ichevronhotBand)
+        {
+            lpChevronBand = &infoPtr->bands[infoPtr->ichevronhotBand];
+            if (lpChevronBand->fDraw & DRAW_CHEVRONHOT)
+            {
+                lpChevronBand->fDraw &= ~DRAW_CHEVRONHOT;
+                InvalidateRect(infoPtr->hwndSelf, &lpChevronBand->rcChevron, TRUE);
+            }
+            infoPtr->ichevronhotBand = -2;
+        }
+
+        if (htFlags == RBHT_CHEVRON)
+        {
+            /* fill in the TRACKMOUSEEVENT struct */
+            trackinfo.cbSize = sizeof(TRACKMOUSEEVENT);
+            trackinfo.dwFlags = TME_QUERY;
+            trackinfo.hwndTrack = infoPtr->hwndSelf;
+            trackinfo.dwHoverTime = 0;
+
+            /* call _TrackMouseEvent to see if we are currently tracking for this hwnd */
+            _TrackMouseEvent(&trackinfo);
+
+            /* Make sure tracking is enabled so we receive a WM_MOUSELEAVE message */
+            if(!(trackinfo.dwFlags & TME_LEAVE))
+            {
+                trackinfo.dwFlags = TME_LEAVE; /* notify upon leaving */
+
+                /* call TRACKMOUSEEVENT so we receive a WM_MOUSELEAVE message */
+                /* and can properly deactivate the hot chevron */
+                _TrackMouseEvent(&trackinfo);
+            }
+
+            lpChevronBand = &infoPtr->bands[iHitBand];
+            if (!(lpChevronBand->fDraw & DRAW_CHEVRONHOT))
+            {
+                lpChevronBand->fDraw |= DRAW_CHEVRONHOT;
+                InvalidateRect(infoPtr->hwndSelf, &lpChevronBand->rcChevron, TRUE);
+                infoPtr->ichevronhotBand = iHitBand;
+            }
+        }
+        infoPtr->iOldBand = iHitBand;
     }
+
     return 0;
 }
 
@@ -3875,7 +4046,9 @@
     infoPtr->clrText = CLR_NONE;
     infoPtr->clrBtnText = GetSysColor (COLOR_BTNTEXT);
     infoPtr->clrBtnFace = GetSysColor (COLOR_BTNFACE);
-    infoPtr->ihitBand = -1;
+    infoPtr->iOldBand = -1;
+    infoPtr->ichevronhotBand = -2;
+    infoPtr->iGrabbedBand = -1;
     infoPtr->hwndSelf = hwnd;
     infoPtr->DoRedraw = TRUE;
     infoPtr->hcurArrow = LoadCursorA (0, (LPSTR)IDC_ARROW);
@@ -4355,6 +4528,9 @@
 	case RB_MOVEBAND:
 	    return REBAR_MoveBand (infoPtr, wParam, lParam);
 
+	case RB_PUSHCHEVRON:
+	    return REBAR_PushChevron (infoPtr, wParam, lParam);
+
 	case RB_SETBANDINFOA:
 	    return REBAR_SetBandInfoA (infoPtr, wParam, lParam);
 
@@ -4430,6 +4606,9 @@
 
 	case WM_MOUSEMOVE:
 	    return REBAR_MouseMove (infoPtr, wParam, lParam);
+
+	case WM_MOUSELEAVE:
+	    return REBAR_MouseLeave (infoPtr, wParam, lParam);
 
 	case WM_NCCALCSIZE:
 	    return REBAR_NCCalcSize (infoPtr, wParam, lParam);
Index: wine/include/commctrl.h
===================================================================
RCS file: /home/wine/wine/include/commctrl.h,v
retrieving revision 1.121
diff -u -r1.121 commctrl.h
--- wine/include/commctrl.h	14 Oct 2003 20:13:42 -0000	1.121
+++ wine/include/commctrl.h	5 Nov 2003 19:42:49 -0000
@@ -1678,6 +1678,9 @@
 #define RBBS_VARIABLEHEIGHT     0x00000040
 #define RBBS_GRIPPERALWAYS      0x00000080
 #define RBBS_NOGRIPPER          0x00000100
+#define RBBS_USECHEVRON         0x00000200
+#define RBBS_HIDETITLE          0x00000400
+#define RBBS_TOPALIGN           0x00000800
 
 #define RBNM_ID                 0x00000001
 #define RBNM_STYLE              0x00000002
@@ -1687,6 +1690,7 @@
 #define RBHT_CAPTION            0x0002
 #define RBHT_CLIENT             0x0003
 #define RBHT_GRABBER            0x0004
+#define RBHT_CHEVRON            0x0008
 
 #define RB_INSERTBANDA          (WM_USER+1)
 #define RB_INSERTBANDW          (WM_USER+10)
@@ -1726,6 +1730,8 @@
 #define RB_SETPALETTE           (WM_USER+37)
 #define RB_GETPALETTE           (WM_USER+38)
 #define RB_MOVEBAND             (WM_USER+39)
+#define RB_GETBANDMARGINS       (WM_USER+40)
+#define RB_PUSHCHEVRON          (WM_USER+43)
 #define RB_GETDROPTARGET        CCM_GETDROPTARGET
 #define RB_SETCOLORSCHEME       CCM_SETCOLORSCHEME
 #define RB_GETCOLORSCHEME       CCM_GETCOLORSCHEME
@@ -1743,6 +1749,9 @@
 #define RBN_DELETINGBAND        (RBN_FIRST-6)
 #define RBN_DELETEDBAND         (RBN_FIRST-7)
 #define RBN_CHILDSIZE           (RBN_FIRST-8)
+#define RBN_CHEVRONPUSHED       (RBN_FIRST-10)
+#define RBN_MINMAX              (RBN_FIRST-21)
+#define RBN_AUTOBREAK           (RBN_FIRST-22)
 
 typedef struct tagREBARINFO
 {
@@ -1837,6 +1846,16 @@
     RECT rcTarget;
     RECT rcActual;
 } NMRBAUTOSIZE, *LPNMRBAUTOSIZE;
+
+typedef struct tagNMREBARCHEVRON
+{
+    NMHDR hdr;
+    UINT uBand;
+    UINT wID;
+    LPARAM lParam;
+    RECT rc;
+    LPARAM lParamNM;
+} NMREBARCHEVRON, *LPNMREBARCHEVRON;
 
 typedef struct _RB_HITTESTINFO
 {

[Index of Archives]     [Gimp for Windows]     [Red Hat]     [Samba]     [Yosemite Camping]     [Graphics Cards]     [Wine Home]

  Powered by Linux