- Updated comctl32.dll to latest WineHQ release.
authorFilip Navara <filip.navara@gmail.com>
Fri, 21 Nov 2003 21:16:28 +0000 (21:16 +0000)
committerFilip Navara <filip.navara@gmail.com>
Fri, 21 Nov 2003 21:16:28 +0000 (21:16 +0000)
svn path=/trunk/; revision=6742

26 files changed:
reactos/lib/comctl32/.cvsignore
reactos/lib/comctl32/comctl32.h
reactos/lib/comctl32/comctl32.rc
reactos/lib/comctl32/flatsb.c
reactos/lib/comctl32/header.c
reactos/lib/comctl32/imagelist.c
reactos/lib/comctl32/listview.c
reactos/lib/comctl32/propsheet.c
reactos/lib/comctl32/rebar.c
reactos/lib/comctl32/res/comctl_Cn.rc
reactos/lib/comctl32/res/comctl_De.rc
reactos/lib/comctl32/res/comctl_En.rc
reactos/lib/comctl32/res/comctl_Es.rc
reactos/lib/comctl32/res/comctl_Fr.rc
reactos/lib/comctl32/res/comctl_It.rc [new file with mode: 0644]
reactos/lib/comctl32/res/comctl_Ko.rc
reactos/lib/comctl32/res/comctl_Nl.rc [new file with mode: 0644]
reactos/lib/comctl32/res/comctl_Pl.rc
reactos/lib/comctl32/res/comctl_Pt.rc
reactos/lib/comctl32/res/comctl_Ru.rc
reactos/lib/comctl32/res/comctl_Si.rc
reactos/lib/comctl32/status.c
reactos/lib/comctl32/tab.c
reactos/lib/comctl32/toolbar.c
reactos/lib/comctl32/trackbar.c
reactos/lib/comctl32/treeview.c

index f21d2d6..9103a52 100644 (file)
@@ -1,8 +1,8 @@
-*.coff\r
-*.dll\r
-*.d\r
-*.a\r
-*.o\r
-*.sym\r
-*.map\r
-*.tmp\r
+*.coff
+*.dll
+*.d
+*.a
+*.o
+*.sym
+*.map
+*.tmp
index 3d7f5c2..363fedb 100644 (file)
@@ -191,6 +191,12 @@ BOOL WINAPI DPA_Merge (const HDPA, const HDPA, DWORD, PFNDPACOMPARE, PFNDPAMERGE
 #define TB_UNKWN463    (WM_USER+99)
 #define TB_UNKWN464    (WM_USER+100)
 
+#define FLATSB_CLASSA "flatsb_class32"
+
+/* FIXME: Rebar definition hack, should be patched in Wine */
+#undef RB_GETBANDINFO
+#define RB_GETBANDINFO (WM_USER+5)   /* just for compatibility */
+
 #define Header_GetItemA(w,i,d) (BOOL)SendMessageA((w),HDM_GETITEMA,(WPARAM)(i),(LPARAM)(HDITEMA*)(d))
 #define Header_GetItemW(w,i,d) (BOOL)SendMessageW((w),HDM_GETITEMW,(WPARAM)(i),(LPARAM)(HDITEMW*)(d))
 #define Header_SetItemA(w,i,d) (BOOL)SendMessageA((w),HDM_SETITEMA,(WPARAM)(i),(LPARAM)(const HDITEMA*)(d))
@@ -198,15 +204,30 @@ BOOL WINAPI DPA_Merge (const HDPA, const HDPA, DWORD, PFNDPACOMPARE, PFNDPAMERGE
 #define ListView_FindItemA(w,p,i) (INT)SendMessageA((w),LVM_FINDITEMA,(WPARAM)(p),(LPARAM)(LVFINDINFOA*)(i))
 #define ListView_FindItemW(w,p,i) (INT)SendMessageW((w),LVM_FINDITEMW,(WPARAM)(p),(LPARAM)(LVFINDINFOW*)(i))
 
-#define FLATSB_CLASSA "flatsb_class32"
-
-/* FIXME: Rebar definition hack, should be patched in Wine */
-#undef RB_GETBANDINFO
-#define RB_GETBANDINFO (WM_USER+5)   /* just for compatibility */
-
 /* Property sheet Wizard 97 styles */
 #define        PSH_WIZARD97_OLD 0x2000
 #define        PSH_WIZARD97_NEW 0x1000000
+
+/* FIXME: Submit to W32API */
+#ifndef HDM_SETBITMAPMARGIN
+#define HDM_SETBITMAPMARGIN    (HDM_FIRST+20)
+#endif
+#ifndef HDM_GETBITMAPMARGIN
+#define HDM_GETBITMAPMARGIN    (HDM_FIRST+21)
+#endif
+#ifndef RBBS_USECHEVRON
+#define RBBS_USECHEVRON        0x00000200
 #endif
+#ifndef RBHT_CHEVRON
+#define RBHT_CHEVRON   0x0008
+#endif
+#ifndef RB_PUSHCHEVRON
+#define RB_PUSHCHEVRON (WM_USER+43)
+#endif
+#ifndef RBN_CHEVRONPUSHED
+#define RBN_CHEVRONPUSHED      (RBN_FIRST-10)
+#endif
+
+#endif /* __REACTOS__ */
 
 #endif  /* __WINE_COMCTL32_H */
index 7be0f09..45bb826 100644 (file)
@@ -32,9 +32,11 @@ IDI_DRAGARROW ICON "res/idi_dragarrow.ico"
 #include "res/comctl_En.rc"
 #include "res/comctl_Cn.rc"
 #include "res/comctl_De.rc"
-#include "res/comctl_Fr.rc"
 #include "res/comctl_Es.rc"
+#include "res/comctl_Fr.rc"
+#include "res/comctl_It.rc"
 #include "res/comctl_Ko.rc"
+#include "res/comctl_Nl.rc"
 #include "res/comctl_Pl.rc"
 #include "res/comctl_Pt.rc"
 #include "res/comctl_Ru.rc"
index 8959746..74e8340 100644 (file)
@@ -38,8 +38,8 @@
 #include "winuser.h"
 #include "winnls.h"
 #include "commctrl.h"
-#include "comctl32.h"
 #include "wine/debug.h"
+#include "comctl32.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(commctrl);
 
index 278e773..08b1f78 100644 (file)
@@ -3,6 +3,7 @@
  *
  *  Copyright 1998 Eric Kohl
  *  Copyright 2000 Eric Kohl for CodeWeavers
+ *  Copyright 2003 Maxime Bellenge
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -28,8 +29,6 @@
  *   - Use notification format
  *   - Correct the order maintenance code to preserve valid order
  *
- *  FIXME:
- *   - Little flaw when drawing a bitmap on the right side of the text.
  */
 
 #include <stdarg.h>
@@ -82,6 +81,7 @@ typedef struct
     INT       xOldTrack;       /* track offset (see above) after the last WM_MOUSEMOVE */
     INT       nOldWidth;       /* width of a sizing item after the last WM_MOUSEMOVE */
     INT       iHotItem;                /* index of hot item (cursor is over this item) */
+    INT       iMargin;          /* width of the margin that surrounds a bitmap */
 
     HIMAGELIST  himl;          /* handle to a image list (may be 0) */
     HEADER_ITEM *items;                /* pointer to array of HEADER_ITEM's */
@@ -234,19 +234,19 @@ HEADER_DrawItem (HWND hwnd, HDC hdc, INT iItem, BOOL bHotTrack)
 
            }
 
-           if (rx >= bmp.bmWidth + 6) {
+           if (rx >= bmp.bmWidth + infoPtr->iMargin) {
                cx = bmp.bmWidth;
            }
            else {
-               cx = rx - 6;
+               cx = rx - infoPtr->iMargin;
            }
 
            hdcBitmap = CreateCompatibleDC (hdc);
            SelectObject (hdcBitmap, phdi->hbm);
-           BitBlt (hdc, r.left + 3, yD, cx, cy, hdcBitmap, 0, yS, SRCCOPY);
+           BitBlt (hdc, r.left + infoPtr->iMargin, yD, cx, cy, hdcBitmap, 0, yS, SRCCOPY);
            DeleteDC (hdcBitmap);
 
-           r.left += (bmp.bmWidth + 3);
+           r.left += (bmp.bmWidth + infoPtr->iMargin);
        }
 
 
@@ -259,9 +259,13 @@ HEADER_DrawItem (HWND hwnd, HDC hdc, INT iItem, BOOL bHotTrack)
            GetObjectA (phdi->hbm, sizeof(BITMAP), (LPVOID)&bmp);
 
            textRect = r;
-           DrawTextW (hdc, phdi->pszText, -1,
-                      &textRect, DT_LEFT|DT_VCENTER|DT_SINGLELINE|DT_CALCRECT);
-           tx = textRect.right - textRect.left;
+           if (phdi->fmt & HDF_STRING) {
+               DrawTextW (hdc, phdi->pszText, -1,
+                          &textRect, DT_LEFT|DT_VCENTER|DT_SINGLELINE|DT_CALCRECT);
+               tx = textRect.right - textRect.left;
+           }
+           else
+               tx = 0;
            ry = r.bottom - r.top;
            rx = r.right - r.left;
 
@@ -277,18 +281,18 @@ HEADER_DrawItem (HWND hwnd, HDC hdc, INT iItem, BOOL bHotTrack)
 
            }
 
-           if (r.left + tx + bmp.bmWidth + 9 <= r.right) {
+           if (r.left + tx + bmp.bmWidth + 2*infoPtr->iMargin <= r.right) {
                cx = bmp.bmWidth;
-               xD = r.left + tx + 6;
+               xD = r.left + tx + infoPtr->iMargin;
            }
            else {
-               if (rx >= bmp.bmWidth + 6) {
+               if (rx >= bmp.bmWidth + infoPtr->iMargin ) {
                    cx = bmp.bmWidth;
-                   xD = r.right - bmp.bmWidth - 3;
-                   r.right = xD - 3;
+                   xD = r.right - bmp.bmWidth - infoPtr->iMargin;
+                   r.right = xD - infoPtr->iMargin;
                }
                else {
-                   cx = rx - 3;
+                   cx = rx - infoPtr->iMargin;
                    xD = r.left;
                    r.right = r.left;
                }
@@ -300,21 +304,37 @@ HEADER_DrawItem (HWND hwnd, HDC hdc, INT iItem, BOOL bHotTrack)
            DeleteDC (hdcBitmap);
        }
 
-       if ((phdi->fmt & HDF_IMAGE) && (infoPtr->himl)) {
-         r.left +=3;
-         /* FIXME: (r.bottom- (infoPtr->himl->cy))/2 should horicontal center the image
-            It looks like it doesn't work as expected*/
-         ImageList_Draw (infoPtr->himl, phdi->iImage,hdc,r.left, (r.bottom- (infoPtr->himl->cy))/2,0);
-         r.left += infoPtr->himl->cx;
+       if ((phdi->fmt & HDF_IMAGE) && !(phdi->fmt & HDF_BITMAP_ON_RIGHT) && (infoPtr->himl)) {
+           r.left += infoPtr->iMargin;
+           ImageList_DrawEx(infoPtr->himl, phdi->iImage, hdc, r.left, r.top + (r.bottom-r.top- infoPtr->himl->cy)/2,
+                            infoPtr->himl->cx, r.bottom-r.top, CLR_DEFAULT, CLR_DEFAULT, 0); 
+           r.left += infoPtr->himl->cx;
        }
 
+       if ((phdi->fmt & HDF_IMAGE) && (phdi->fmt & HDF_BITMAP_ON_RIGHT) && (infoPtr->himl)) {
+           RECT textRect;
+           INT  tx;    
+
+           textRect = r;
+           if (phdi->fmt & HDF_STRING) {
+               DrawTextW (hdc, phdi->pszText, -1,
+                          &textRect, DT_LEFT|DT_VCENTER|DT_SINGLELINE|DT_CALCRECT);
+               tx = textRect.right - textRect.left;
+           } 
+           else
+               tx = 0;
+           ImageList_DrawEx(infoPtr->himl, phdi->iImage, hdc, r.left + tx + 2*infoPtr->iMargin,
+                            r.top + (r.bottom-r.top-infoPtr->himl->cy)/2, infoPtr->himl->cx, r.bottom-r.top, 
+                            CLR_DEFAULT, CLR_DEFAULT, 0);
+       }       
+
         if (((phdi->fmt & HDF_STRING)
                || (!(phdi->fmt & (HDF_OWNERDRAW|HDF_STRING|HDF_BITMAP|
                                   HDF_BITMAP_ON_RIGHT|HDF_IMAGE)))) /* no explicit format specified? */
            && (phdi->pszText)) {
             oldBkMode = SetBkMode(hdc, TRANSPARENT);
-            r.left += 3 ;
-           r.right -= 3;
+           r.left += infoPtr->iMargin;
+           r.right -= infoPtr->iMargin;
            SetTextColor (hdc, (bHotTrack) ? COLOR_HIGHLIGHT : COLOR_BTNTEXT);
            DrawTextW (hdc, phdi->pszText, -1,
                       &r, uTextJustify|DT_END_ELLIPSIS|DT_VCENTER|DT_SINGLELINE);
@@ -904,8 +924,9 @@ HEADER_InsertItemA (HWND hwnd, WPARAM wParam, LPARAM lParam)
        lpItem->cxy = phdi->cxy;
 
     if (phdi->mask & HDI_TEXT) {
+       static char empty[] = "";
        if (!phdi->pszText) /* null pointer check */
-           phdi->pszText = "";
+           phdi->pszText = empty;
        if (phdi->pszText != LPSTR_TEXTCALLBACKA) {
            len = MultiByteToWideChar(CP_ACP, 0, phdi->pszText, -1, NULL, 0);
            lpItem->pszText = Alloc( len*sizeof(WCHAR) );
@@ -1091,6 +1112,25 @@ HEADER_SetImageList (HWND hwnd, HIMAGELIST himl)
 }
 
 
+static LRESULT
+HEADER_GetBitmapMargin(HWND hwnd)
+{
+    HEADER_INFO *infoPtr = HEADER_GetInfoPtr(hwnd);
+    
+    return infoPtr->iMargin;
+}
+
+static LRESULT
+HEADER_SetBitmapMargin(HWND hwnd, WPARAM wParam)
+{
+    HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
+    INT oldMargin = infoPtr->iMargin;
+
+    infoPtr->iMargin = (INT)wParam;
+
+    return oldMargin;
+}
+
 static LRESULT
 HEADER_SetItemA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
@@ -1261,6 +1301,7 @@ HEADER_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
     infoPtr->himl = 0;
     infoPtr->iHotItem = -1;
     infoPtr->bUnicode = IsWindowUnicode (hwnd);
+    infoPtr->iMargin = 3*GetSystemMetrics(SM_CXEDGE);
     infoPtr->nNotifyFormat =
        SendMessageA (infoPtr->hwndNotify, WM_NOTIFYFORMAT, (WPARAM)hwnd, NF_QUERY);
 
@@ -1675,7 +1716,8 @@ HEADER_WindowProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
 
 /*     case HDM_EDITFILTER: */
 
-/*     case HDM_GETBITMAPMARGIN: */
+       case HDM_GETBITMAPMARGIN:
+           return HEADER_GetBitmapMargin(hwnd);
 
        case HDM_GETIMAGELIST:
            return HEADER_GetImageList (hwnd);
@@ -1713,7 +1755,8 @@ HEADER_WindowProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
        case HDM_ORDERTOINDEX:
            return HEADER_OrderToIndex(hwnd, wParam);
 
-/*     case HDM_SETBITMAPMARGIN: */
+       case HDM_SETBITMAPMARGIN:
+           return HEADER_SetBitmapMargin(hwnd, wParam);
 
 /*     case HDM_SETFILTERCHANGETIMEOUT: */
 
index d6ffc5b..78d33ab 100644 (file)
@@ -450,7 +450,7 @@ BOOL WINAPI
 ImageList_Copy (HIMAGELIST himlDst, INT iDst,  HIMAGELIST himlSrc,
                INT iSrc, UINT uFlags)
 {
-    TRACE("iDst=%d  iSrc=%d\n", iDst, iSrc);
+    TRACE("himlDst=%p iDst=%d himlSrc=%p iSrc=%d\n", himlDst, iDst, himlSrc, iSrc);
 
     if (!is_valid(himlSrc) || !is_valid(himlDst))
        return FALSE;
@@ -1165,7 +1165,7 @@ ImageList_DrawIndirect (IMAGELISTDRAWPARAMS *pimldp)
     if (fState & ILS_SATURATE) FIXME("ILS_SATURATE: unimplemented!\n");
     if (fState & ILS_GLOW) FIXME("ILS_GLOW: unimplemented!\n");
     if (fState & ILS_SHADOW) FIXME("ILS_SHADOW: unimplemented!\n");
-    if (fState & ILS_ALPHA) FIXME("ILS_SHADOW: unimplemented!\n");
+    if (fState & ILS_ALPHA) FIXME("ILS_ALPHA: unimplemented!\n");
 
     if (fStyle & ILD_PRESERVEALPHA) FIXME("ILD_PRESERVEALPHA: unimplemented!\n");
     if (fStyle & ILD_SCALE) FIXME("ILD_SCALE: unimplemented!\n");
@@ -2650,8 +2650,8 @@ _write_bitmap(HBITMAP hBitmap, LPSTREAM pstm, int cx, int cy)
 
     /* XXX is this always correct? */
     icount = bm.bmWidth / cx;
-    nwidth = cx << 2;
-    nheight = cy * ((icount+3)>>2);
+    nwidth = cx;
+    nheight = cy * icount;
 
     bitCount = bm.bmBitsPixel == 1 ? 1 : 24;
     sizeImage = ((((bm.bmWidth * bitCount)+31) & ~31) >> 3) * bm.bmHeight;
@@ -2682,13 +2682,13 @@ _write_bitmap(HBITMAP hBitmap, LPSTREAM pstm, int cx, int cy)
     bmih->biPlanes        = 1;
     bmih->biBitCount      = bitCount;
     bmih->biCompression   = BI_RGB;
-    bmih->biSizeImage     = nsizeImage;
+    bmih->biSizeImage     = sizeImage;
     bmih->biXPelsPerMeter = 0;
     bmih->biYPelsPerMeter = 0;
     bmih->biClrUsed       = 0;
     bmih->biClrImportant  = 0;
 
-    lpBitsOrg = (LPBYTE)LocalAlloc(LMEM_ZEROINIT, nsizeImage);
+    lpBitsOrg = (LPBYTE)LocalAlloc(LMEM_ZEROINIT, sizeImage);
     if(!GetDIBits(xdc, hBitmap, 0, bm.bmHeight, lpBitsOrg,
                  (BITMAPINFO *)bmih, DIB_RGB_COLORS))
        goto failed;
@@ -2706,6 +2706,7 @@ _write_bitmap(HBITMAP hBitmap, LPSTREAM pstm, int cx, int cy)
 
     bmih->biWidth  = nwidth;
     bmih->biHeight = nheight;
+    bmih->biSizeImage = nsizeImage;
 
     if(bitCount == 1) {
         /* Hack. */
index c691d18..3c76fba 100644 (file)
@@ -78,7 +78,6 @@
  *
  * Extended Styles
  *   -- LVS_EX_BORDERSELECT
- *   -- LVS_EX_CHECKBOXES
  *   -- LVS_EX_FLATSB
  *   -- LVS_EX_GRIDLINES
  *   -- LVS_EX_HEADERDRAGDROP
  *   -- LVS_EX_ONECLICKACTIVATE
  *   -- LVS_EX_REGIONAL
  *   -- LVS_EX_SIMPLESELECT
- *   -- LVS_EX_SUBITEMIMAGES
  *   -- LVS_EX_TRACKSELECT
  *   -- LVS_EX_TWOCLICKACTIVATE
  *   -- LVS_EX_UNDERLINECOLD
  *   -- LVS_EX_UNDERLINEHOT
  *   
  * Notifications:
- *   -- LVN_BEGINDRAG, LVN_BEGINRDRAG
+ *   -- LVN_BEGINRDRAG
  *   -- LVN_BEGINSCROLL, LVN_ENDSCROLL
  *   -- LVN_GETINFOTIP
  *   -- LVN_HOTTRACK
  *
  * Messages:
  *   -- LVM_CANCELEDITLABEL
- *   -- LVM_CREATEDRAGIMAGE
  *   -- LVM_ENABLEGROUPVIEW
  *   -- LVM_GETBKIMAGE, LVM_SETBKIMAGE
  *   -- LVM_GETGROUPINFO, LVM_SETGROUPINFO
@@ -238,6 +235,7 @@ typedef struct tagLISTVIEW_INFO
   INT nSelectionMark;
   INT nHotItem;
   SHORT notifyFormat;
+  HWND hwndNotify;
   RECT rcList;                 /* This rectangle is really the window
                                * client rectangle possibly reduced by the 
                                * horizontal scroll bar and/or header - see 
@@ -398,6 +396,7 @@ static LRESULT LISTVIEW_HScroll(LISTVIEW_INFO *, INT, INT, HWND);
 static INT LISTVIEW_GetTopIndex(LISTVIEW_INFO *);
 static BOOL LISTVIEW_EnsureVisible(LISTVIEW_INFO *, INT, BOOL);
 static HWND CreateEditLabelT(LISTVIEW_INFO *, LPCWSTR, DWORD, INT, INT, INT, INT, BOOL);
+static HIMAGELIST LISTVIEW_SetImageList(LISTVIEW_INFO *, INT, HIMAGELIST);
 
 /******** Text handling functions *************************************/
 
@@ -529,7 +528,7 @@ static char* debug_getbuf()
     return buffers[index++ % DEBUG_BUFFERS];
 }
 
-static inline char* debugrange(const RANGE *lprng)
+static inline const char* debugrange(const RANGE *lprng)
 {
     if (lprng) 
     {
@@ -539,7 +538,7 @@ static inline char* debugrange(const RANGE *lprng)
     } else return "(null)";
 }
 
-static inline char* debugpoint(const POINT *lppt)
+static inline const char* debugpoint(const POINT *lppt)
 {
     if (lppt) 
     {
@@ -549,7 +548,7 @@ static inline char* debugpoint(const POINT *lppt)
     } else return "(null)";
 }
 
-static inline char* debugrect(const RECT *rect)
+static inline const char* debugrect(const RECT *rect)
 {
     if (rect) 
     {
@@ -560,7 +559,7 @@ static inline char* debugrect(const RECT *rect)
     } else return "(null)";
 }
 
-static char * debugscrollinfo(const SCROLLINFO *pScrollInfo)
+static const char * debugscrollinfo(const SCROLLINFO *pScrollInfo)
 {
     char* buf = debug_getbuf(), *text = buf;
     int len, size = DEBUG_BUFFER_SIZE;
@@ -592,7 +591,7 @@ undo:
     return text;
 } 
 
-static char* debugnmlistview(const NMLISTVIEW *plvnm)
+static const char* debugnmlistview(const NMLISTVIEW *plvnm)
 {
     if (plvnm)
     {
@@ -605,7 +604,7 @@ static char* debugnmlistview(const NMLISTVIEW *plvnm)
     } else return "(null)";
 }
 
-static char* debuglvitem_t(const LVITEMW *lpLVItem, BOOL isW)
+static const char* debuglvitem_t(const LVITEMW *lpLVItem, BOOL isW)
 {
     char* buf = debug_getbuf(), *text = buf;
     int len, size = DEBUG_BUFFER_SIZE;
@@ -641,7 +640,7 @@ undo:
     return text;
 }
 
-static char* debuglvcolumn_t(const LVCOLUMNW *lpColumn, BOOL isW)
+static const char* debuglvcolumn_t(const LVCOLUMNW *lpColumn, BOOL isW)
 {
     char* buf = debug_getbuf(), *text = buf;
     int len, size = DEBUG_BUFFER_SIZE;
@@ -681,7 +680,7 @@ undo:
     return text;
 }
 
-static char* debuglvhittestinfo(const LVHITTESTINFO *lpht)
+static const char* debuglvhittestinfo(const LVHITTESTINFO *lpht)
 {
     if (lpht) 
     {
@@ -721,7 +720,7 @@ static LRESULT notify_hdr(LISTVIEW_INFO *infoPtr, INT code, LPNMHDR pnmh)
     pnmh->hwndFrom = infoPtr->hwndSelf;
     pnmh->idFrom = GetWindowLongW(infoPtr->hwndSelf, GWL_ID);
     pnmh->code = code;
-    result = SendMessageW(GetParent(infoPtr->hwndSelf), WM_NOTIFY,
+    result = SendMessageW(infoPtr->hwndNotify, WM_NOTIFY,
                          (WPARAM)pnmh->idFrom, (LPARAM)pnmh);
 
     TRACE("  <= %ld\n", result);
@@ -1738,7 +1737,7 @@ static void LISTVIEW_ShowFocusRect(LISTVIEW_INFO *infoPtr, BOOL fShow)
        LISTVIEW_GetItemBox(infoPtr, dis.itemID, &dis.rcItem);
        dis.itemData = item.lParam;
 
-       SendMessageW(GetParent(infoPtr->hwndSelf), WM_DRAWITEM, dis.CtlID, (LPARAM)&dis);
+       SendMessageW(infoPtr->hwndNotify, WM_DRAWITEM, dis.CtlID, (LPARAM)&dis);
     }
     else
     {
@@ -1949,7 +1948,9 @@ static void LISTVIEW_GetItemMetrics(LISTVIEW_INFO *infoPtr, const LVITEMW *lpLVI
            Icon.left = State.right;
            Icon.top    = Box.top;
            Icon.right  = Icon.left;
-           if (infoPtr->himlSmall && (!lpColumnInfo || lpLVItem->iSubItem == 0 || (lpColumnInfo->fmt & LVCFMT_IMAGE)))
+           if (infoPtr->himlSmall &&
+                (!lpColumnInfo || lpLVItem->iSubItem == 0 || (lpColumnInfo->fmt & LVCFMT_IMAGE) ||
+                 ((infoPtr->dwLvExStyle & LVS_EX_SUBITEMIMAGES) && lpLVItem->iImage != I_IMAGECALLBACK)))
                Icon.right += infoPtr->iconSize.cx;
            Icon.bottom = Icon.top + infoPtr->nItemHeight;
        }
@@ -3388,6 +3389,7 @@ static BOOL set_sub_item(LISTVIEW_INFO *infoPtr, const LVITEMW *lpLVItem, BOOL i
            return FALSE;
        }
         lpSubItem->iSubItem = lpLVItem->iSubItem;
+        lpSubItem->hdr.iImage = I_IMAGECALLBACK;
        *bChanged = TRUE;
     }
     
@@ -3597,6 +3599,12 @@ static BOOL LISTVIEW_DrawItem(LISTVIEW_INFO *infoPtr, HDC hdc, INT nItem, INT nS
         cdsubitemmode = notify_customdraw(infoPtr, CDDS_PREPAINT, &nmlvcd);
     if (nSubItem == 0) infoPtr->cditemmode = cdsubitemmode;
     if (cdsubitemmode & CDRF_SKIPDEFAULT) goto postpaint;
+    /* we have to send a CDDS_SUBITEM customdraw explicitly for subitem 0 */
+    if (nSubItem == 0 && cdsubitemmode == CDRF_NOTIFYITEMDRAW)
+    {
+        cdsubitemmode = notify_customdraw(infoPtr, CDDS_SUBITEM | CDDS_ITEMPREPAINT, &nmlvcd);
+        if (cdsubitemmode & CDRF_SKIPDEFAULT) goto postpaint;
+    }
     if (nSubItem == 0 || (cdmode & CDRF_NOTIFYITEMDRAW))
         prepaint_setup(infoPtr, hdc, &nmlvcd);
 
@@ -3680,7 +3688,6 @@ postpaint:
 static void LISTVIEW_RefreshOwnerDraw(LISTVIEW_INFO *infoPtr, ITERATOR *i, HDC hdc, DWORD cdmode)
 {
     UINT uID = GetWindowLongW(infoPtr->hwndSelf, GWL_ID);
-    HWND hwndParent = GetParent(infoPtr->hwndSelf);
     DWORD cditemmode = CDRF_DODEFAULT;
     NMLVCUSTOMDRAW nmlvcd;
     POINT Origin, Position;
@@ -3721,16 +3728,18 @@ static void LISTVIEW_RefreshOwnerDraw(LISTVIEW_INFO *infoPtr, ITERATOR *i, HDC h
 
        TRACE("item=%s, rcItem=%s\n", debuglvitem_t(&item, TRUE), debugrect(&dis.rcItem));
 
+    /*
+     * Even if we do not send the CDRF_NOTIFYITEMDRAW we need to fill the nmlvcd
+     * structure for the rest. of the paint cycle
+     */
+       customdraw_fill(&nmlvcd, infoPtr, hdc, &dis.rcItem, &item);
        if (cdmode & CDRF_NOTIFYITEMDRAW)
-       {
-           customdraw_fill(&nmlvcd, infoPtr, hdc, &dis.rcItem, &item);
             cditemmode = notify_customdraw(infoPtr, CDDS_PREPAINT, &nmlvcd);
-       }
     
        if (!(cditemmode & CDRF_SKIPDEFAULT))
        {
             prepaint_setup (infoPtr, hdc, &nmlvcd);
-           SendMessageW(hwndParent, WM_DRAWITEM, dis.CtlID, (LPARAM)&dis);
+           SendMessageW(infoPtr->hwndNotify, WM_DRAWITEM, dis.CtlID, (LPARAM)&dis);
        }
 
        if (cditemmode & CDRF_NOTIFYPOSTPAINT)
@@ -4000,7 +4009,70 @@ static DWORD LISTVIEW_ApproximateViewRect(LISTVIEW_INFO *infoPtr, INT nItemCount
   return dwViewRect;
 }
 
-/* << LISTVIEW_CreateDragImage >> */
+
+/***
+ * DESCRIPTION:
+ * Create a drag image list for the specified item.
+ *
+ * PARAMETER(S):
+ * [I] infoPtr : valid pointer to the listview structure
+ * [I] iItem   : index of item
+ * [O] lppt    : Upperr-left corner of the image
+ *
+ * RETURN:
+ * Returns a handle to the image list if successful, NULL otherwise.
+ */
+static HIMAGELIST LISTVIEW_CreateDragImage(LISTVIEW_INFO *infoPtr, INT iItem, LPPOINT lppt)
+{
+    RECT rcItem;
+    SIZE size;
+    POINT pos;
+    HDC hdc, hdcOrig;
+    HBITMAP hbmp, hOldbmp;
+    HIMAGELIST dragList = 0;
+    TRACE("iItem=%d Count=%d \n", iItem, infoPtr->nItemCount);
+
+    if (iItem < 0 || iItem >= infoPtr->nItemCount)
+        return 0;
+
+    rcItem.left = LVIR_BOUNDS;
+    if (!LISTVIEW_GetItemRect(infoPtr, iItem, &rcItem))
+        return 0;
+
+    lppt->x = rcItem.left;
+    lppt->y = rcItem.top;
+
+    size.cx = rcItem.right - rcItem.left;
+    size.cy = rcItem.bottom - rcItem.top;
+
+    hdcOrig = GetDC(infoPtr->hwndSelf);
+    hdc = CreateCompatibleDC(hdcOrig);
+    hbmp = CreateCompatibleBitmap(hdcOrig, size.cx, size.cy);
+    hOldbmp = SelectObject(hdc, hbmp);
+
+    rcItem.left = rcItem.top = 0;
+    rcItem.right = size.cx;
+    rcItem.bottom = size.cy;
+    FillRect(hdc, &rcItem, infoPtr->hBkBrush);
+    
+    pos.x = pos.y = 0;
+    if (LISTVIEW_DrawItem(infoPtr, hdc, iItem, 0, pos, infoPtr->cditemmode))
+    {
+        dragList = ImageList_Create(size.cx, size.cy, ILC_COLOR, 10, 10);
+        SelectObject(hdc, hOldbmp);
+        ImageList_Add(dragList, hbmp, 0);
+    }
+    else
+        SelectObject(hdc, hOldbmp);
+
+    DeleteObject(hbmp);
+    DeleteDC(hdc);
+    ReleaseDC(infoPtr->hwndSelf, hdcOrig);
+
+    TRACE("ret=%p\n", dragList);
+
+    return dragList;
+}
 
 
 /***
@@ -4912,6 +4984,7 @@ static BOOL LISTVIEW_GetItemT(LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem, BOOL i
     ITEM_INFO *lpItem;
     ITEMHDR* pItemHdr;
     HDPA hdpaSubItems;
+    INT isubitem;
 
     TRACE("(lpLVItem=%s, isW=%d)\n", debuglvitem_t(lpLVItem, isW), isW);
 
@@ -4920,6 +4993,9 @@ static BOOL LISTVIEW_GetItemT(LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem, BOOL i
 
     if (lpLVItem->mask == 0) return TRUE;
 
+    /* make a local copy */
+    isubitem = lpLVItem->iSubItem;
+
     /* a quick optimization if all we're asked is the focus state
      * these queries are worth optimising since they are common,
      * and can be answered in constant time, without the heavy accesses */
@@ -4946,7 +5022,7 @@ static BOOL LISTVIEW_GetItemT(LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem, BOOL i
             *       depend on the uninitialized fields being 0 */
            dispInfo.item.mask = lpLVItem->mask & ~LVIF_PARAM;
            dispInfo.item.iItem = lpLVItem->iItem;
-           dispInfo.item.iSubItem = lpLVItem->iSubItem;
+           dispInfo.item.iSubItem = isubitem;
            if (lpLVItem->mask & LVIF_TEXT)
            {
                dispInfo.item.pszText = lpLVItem->pszText;
@@ -4978,7 +5054,7 @@ static BOOL LISTVIEW_GetItemT(LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem, BOOL i
        if (lpLVItem->mask & LVIF_PARAM) lpLVItem->lParam = 0;
        
        /* we store only a little state, so if we're not asked, we're done */
-       if (!(lpLVItem->mask & LVIF_STATE) || lpLVItem->iSubItem) return TRUE;
+       if (!(lpLVItem->mask & LVIF_STATE) || isubitem) return TRUE;
 
        /* if focus is handled by us, report it */
        if ( lpLVItem->stateMask & ~infoPtr->uCallbackMask & LVIS_FOCUSED ) 
@@ -5004,24 +5080,33 @@ static BOOL LISTVIEW_GetItemT(LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem, BOOL i
     lpItem = (ITEM_INFO *)DPA_GetPtr(hdpaSubItems, 0);
     assert (lpItem);
 
-    if (lpLVItem->iSubItem)
+    if (isubitem)
     {
-       SUBITEM_INFO *lpSubItem = LISTVIEW_GetSubItemPtr(hdpaSubItems, lpLVItem->iSubItem);
+       SUBITEM_INFO *lpSubItem = LISTVIEW_GetSubItemPtr(hdpaSubItems, isubitem);
         pItemHdr = lpSubItem ? &lpSubItem->hdr : &callbackHdr;
+        if (!lpSubItem)
+        {
+            WARN(" iSubItem invalid (%08x), ignored.\n", isubitem);
+            isubitem = 0;
+        }
     }
     else
        pItemHdr = &lpItem->hdr;
 
     /* Do we need to query the state from the app? */
-    if ((lpLVItem->mask & LVIF_STATE) && infoPtr->uCallbackMask && lpLVItem->iSubItem == 0)
+    if ((lpLVItem->mask & LVIF_STATE) && infoPtr->uCallbackMask && isubitem == 0)
     {
        dispInfo.item.mask |= LVIF_STATE;
        dispInfo.item.stateMask = infoPtr->uCallbackMask;
     }
   
     /* Do we need to enquire about the image? */
-    if ((lpLVItem->mask & LVIF_IMAGE) && pItemHdr->iImage == I_IMAGECALLBACK)
+    if ((lpLVItem->mask & LVIF_IMAGE) && pItemHdr->iImage == I_IMAGECALLBACK &&
+        (isubitem == 0 || (infoPtr->dwLvExStyle & LVS_EX_SUBITEMIMAGES)))
+    {
        dispInfo.item.mask |= LVIF_IMAGE;
+        dispInfo.item.iImage = I_IMAGECALLBACK;
+    }
 
     /* Apps depend on calling back for text if it is NULL or LPSTR_TEXTCALLBACKW */
     if ((lpLVItem->mask & LVIF_TEXT) && !is_textW(pItemHdr->pszText))
@@ -5037,14 +5122,14 @@ static BOOL LISTVIEW_GetItemT(LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem, BOOL i
     if (dispInfo.item.mask != 0)
     {
        dispInfo.item.iItem = lpLVItem->iItem;
-       dispInfo.item.iSubItem = lpLVItem->iSubItem;
+       dispInfo.item.iSubItem = lpLVItem->iSubItem; /* yes: the original subitem */
        dispInfo.item.lParam = lpItem->lParam;
        notify_dispinfoT(infoPtr, LVN_GETDISPINFOW, &dispInfo, isW);
        TRACE("   getdispinfo(2):item=%s\n", debuglvitem_t(&dispInfo.item, isW));
     }
 
     /* we should not store values for subitems */
-    if (lpLVItem->iSubItem) dispInfo.item.mask &= ~LVIF_DI_SETITEM;
+    if (isubitem) dispInfo.item.mask &= ~LVIF_DI_SETITEM;
 
     /* Now, handle the iImage field */
     if (dispInfo.item.mask & LVIF_IMAGE)
@@ -5054,7 +5139,12 @@ static BOOL LISTVIEW_GetItemT(LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem, BOOL i
            pItemHdr->iImage = dispInfo.item.iImage;
     }
     else if (lpLVItem->mask & LVIF_IMAGE)
-       lpLVItem->iImage = pItemHdr->iImage;
+    {
+        if(isubitem == 0 || (infoPtr->dwLvExStyle & LVS_EX_SUBITEMIMAGES))
+            lpLVItem->iImage = pItemHdr->iImage;
+        else
+            lpLVItem->iImage = 0;
+    }
 
     /* The pszText field */
     if (dispInfo.item.mask & LVIF_TEXT)
@@ -5071,7 +5161,7 @@ static BOOL LISTVIEW_GetItemT(LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem, BOOL i
     }
 
     /* if this is a subitem, we're done */
-    if (lpLVItem->iSubItem) return TRUE;
+    if (isubitem) return TRUE;
   
     /* Next is the lParam field */
     if (dispInfo.item.mask & LVIF_PARAM)
@@ -5348,16 +5438,18 @@ static BOOL LISTVIEW_GetSubItemRect(LISTVIEW_INFO *infoPtr, INT nItem, LPRECT lp
     POINT Position;
     LVITEMW lvItem;
     
-    if (!lprc || (infoPtr->dwStyle & LVS_TYPEMASK) != LVS_REPORT) return FALSE;
-    
+    if (!lprc) return FALSE;
+
     TRACE("(nItem=%d, nSubItem=%ld)\n", nItem, lprc->top);
     /* On WinNT, a subitem of '0' calls LISTVIEW_GetItemRect */
     if (lprc->top == 0)
         return LISTVIEW_GetItemRect(infoPtr, nItem, lprc);
 
+    if ((infoPtr->dwStyle & LVS_TYPEMASK) != LVS_REPORT) return FALSE;
+
     if (!LISTVIEW_GetItemPosition(infoPtr, nItem, &Position)) return FALSE;
 
-    lvItem.mask = lprc->top == 0 ? LVIF_INDENT : 0;
+    lvItem.mask = 0;
     lvItem.iItem = nItem;
     lvItem.iSubItem = lprc->top;
     
@@ -5890,7 +5982,11 @@ static INT LISTVIEW_HitTest(LISTVIEW_INFO *infoPtr, LPLVHITTESTINFO lpht, BOOL s
 
     if (select && !(uView == LVS_REPORT && (infoPtr->dwLvExStyle & LVS_EX_FULLROWSELECT)))
     {
-        if (uView == LVS_REPORT) UnionRect(&rcBounds, &rcIcon, &rcLabel);
+        if (uView == LVS_REPORT)
+        {
+            UnionRect(&rcBounds, &rcIcon, &rcLabel);
+            UnionRect(&rcBounds, &rcBounds, &rcState);
+        }
         if (!PtInRect(&rcBounds, opt)) iItem = -1;
     }
     return lpht->iItem = iItem;
@@ -6502,6 +6598,53 @@ static BOOL LISTVIEW_SetColumnWidth(LISTVIEW_INFO *infoPtr, INT nColumn, INT cx)
     return Header_SetItemW(infoPtr->hwndHeader, nColumn, (LPARAM)&hdi);
 }
 
+/***
+ * Creates the checkbox imagelist.  Helper for LISTVIEW_SetExtendedListViewStyle
+ *
+ */
+static HIMAGELIST LISTVIEW_CreateCheckBoxIL(LISTVIEW_INFO *infoPtr)
+{
+    HDC hdc_wnd, hdc;
+    HBITMAP hbm_im, hbm_mask, hbm_orig;
+    RECT rc;
+    HBRUSH hbr_white = GetStockObject(WHITE_BRUSH);
+    HBRUSH hbr_black = GetStockObject(BLACK_BRUSH);
+    HIMAGELIST himl;
+
+    himl = ImageList_Create(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON),
+                            ILC_COLOR | ILC_MASK, 2, 2);
+    hdc_wnd = GetDC(infoPtr->hwndSelf);
+    hdc = CreateCompatibleDC(hdc_wnd);
+    hbm_im = CreateCompatibleBitmap(hdc_wnd, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON));
+    hbm_mask = CreateBitmap(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), 1, 1, NULL);
+    ReleaseDC(infoPtr->hwndSelf, hdc_wnd);
+
+    rc.left = rc.top = 0;
+    rc.right = GetSystemMetrics(SM_CXSMICON);
+    rc.bottom = GetSystemMetrics(SM_CYSMICON);
+
+    hbm_orig = SelectObject(hdc, hbm_mask);
+    FillRect(hdc, &rc, hbr_white);
+    InflateRect(&rc, -3, -3);
+    FillRect(hdc, &rc, hbr_black);
+
+    SelectObject(hdc, hbm_im);
+    DrawFrameControl(hdc, &rc, DFC_BUTTON, DFCS_BUTTONCHECK | DFCS_MONO);
+    SelectObject(hdc, hbm_orig);
+    ImageList_Add(himl, hbm_im, hbm_mask); 
+
+    SelectObject(hdc, hbm_im);
+    DrawFrameControl(hdc, &rc, DFC_BUTTON, DFCS_BUTTONCHECK | DFCS_MONO | DFCS_CHECKED);
+    SelectObject(hdc, hbm_orig);
+    ImageList_Add(himl, hbm_im, hbm_mask);
+
+    DeleteObject(hbm_mask);
+    DeleteObject(hbm_im);
+    DeleteDC(hdc);
+
+    return himl;
+}
+
 /***
  * DESCRIPTION:
  * Sets the extended listview style.
@@ -6525,6 +6668,14 @@ static DWORD LISTVIEW_SetExtendedListViewStyle(LISTVIEW_INFO *infoPtr, DWORD dwM
     else
        infoPtr->dwLvExStyle = dwStyle;
 
+    if((infoPtr->dwLvExStyle ^ dwOldStyle) & LVS_EX_CHECKBOXES)
+    {
+        HIMAGELIST himl = 0;
+        if(infoPtr->dwLvExStyle & LVS_EX_CHECKBOXES)
+            himl = LISTVIEW_CreateCheckBoxIL(infoPtr);
+        LISTVIEW_SetImageList(infoPtr, LVSIL_STATE, himl);
+    }
+
     return dwOldStyle;
 }
 
@@ -7179,7 +7330,8 @@ static LRESULT LISTVIEW_Create(HWND hwnd, const CREATESTRUCTW *lpcs)
   infoPtr->hwndSelf = hwnd;
   infoPtr->dwStyle = lpcs->style;
   /* determine the type of structures to use */
-  infoPtr->notifyFormat = SendMessageW(GetParent(infoPtr->hwndSelf), WM_NOTIFYFORMAT,
+  infoPtr->hwndNotify = lpcs->hwndParent;
+  infoPtr->notifyFormat = SendMessageW(infoPtr->hwndNotify, WM_NOTIFYFORMAT,
                                        (WPARAM)infoPtr->hwndSelf, (LPARAM)NF_QUERY);
 
   /* initialize color information  */
@@ -7675,6 +7827,68 @@ static LRESULT LISTVIEW_KillFocus(LISTVIEW_INFO *infoPtr)
     return 0;
 }
 
+
+/***
+ * DESCRIPTION:
+ * Track mouse/dragging
+ *
+ * PARAMETER(S):
+ * [I] infoPtr : valid pointer to the listview structure
+ * [I] pt : mouse coordinate
+ *
+ * RETURN:
+ * Zero
+ */
+static LRESULT LISTVIEW_TrackMouse(LISTVIEW_INFO *infoPtr, POINT pt)
+{
+    INT cxDrag = GetSystemMetrics(SM_CXDRAG);
+    INT cyDrag = GetSystemMetrics(SM_CYDRAG);
+    RECT r;
+    MSG msg;
+
+    TRACE("\n");
+
+    r.top = pt.y - cyDrag;
+    r.left = pt.x - cxDrag;
+    r.bottom = pt.y + cyDrag;
+    r.right = pt.x + cxDrag;
+
+    SetCapture(infoPtr->hwndSelf);
+
+    while (1)
+    {
+       if (PeekMessageW(&msg, 0, 0, 0, PM_REMOVE | PM_NOYIELD))
+       {
+           if (msg.message == WM_MOUSEMOVE)
+           {
+               pt.x = (short)LOWORD(msg.lParam);
+               pt.y = (short)HIWORD(msg.lParam);
+               if (PtInRect(&r, pt))
+                   continue;
+               else
+               {
+                   ReleaseCapture();
+                   return 1;
+               }
+           }
+           else if (msg.message >= WM_LBUTTONDOWN &&
+                    msg.message <= WM_RBUTTONDBLCLK)
+           {
+               break;
+           }
+
+           DispatchMessageW(&msg);
+       }
+
+       if (GetCapture() != infoPtr->hwndSelf)
+           return 0;
+    }
+
+    ReleaseCapture();
+    return 0;
+}
+
+
 /***
  * DESCRIPTION:
  * Processes double click messages (left mouse button).
@@ -7746,6 +7960,33 @@ static LRESULT LISTVIEW_LButtonDown(LISTVIEW_INFO *infoPtr, WORD wKey, POINTS pt
   infoPtr->nEditLabelItem = -1;
   if ((nItem >= 0) && (nItem < infoPtr->nItemCount))
   {
+    if ((infoPtr->dwLvExStyle & LVS_EX_CHECKBOXES) && (lvHitTestInfo.flags & LVHT_ONITEMSTATEICON))
+    {
+        DWORD state = LISTVIEW_GetItemState(infoPtr, nItem, LVIS_STATEIMAGEMASK) >> 12;
+        if(state == 1 || state == 2)
+        {
+            LVITEMW lvitem;
+            state ^= 3;
+            lvitem.state = state << 12;
+            lvitem.stateMask = LVIS_STATEIMAGEMASK;
+            LISTVIEW_SetItemState(infoPtr, nItem, &lvitem);
+        }
+        return 0;
+    }
+    if (LISTVIEW_TrackMouse(infoPtr, lvHitTestInfo.pt))
+    {
+        NMLISTVIEW nmlv;
+
+       ZeroMemory(&nmlv, sizeof(nmlv));
+        nmlv.iItem = nItem;
+        nmlv.ptAction.x = lvHitTestInfo.pt.x;
+        nmlv.ptAction.y = lvHitTestInfo.pt.y;
+
+        notify_listview(infoPtr, LVN_BEGINDRAG, &nmlv);
+
+        return 0;
+    }
+
     if (infoPtr->dwStyle & LVS_SINGLESEL)
     {
       if (LISTVIEW_GetItemState(infoPtr, nItem, LVIS_SELECTED))
@@ -7803,6 +8044,7 @@ static LRESULT LISTVIEW_LButtonDown(LISTVIEW_INFO *infoPtr, WORD wKey, POINTS pt
   {
     /* remove all selections */
     LISTVIEW_DeselectAll(infoPtr);
+    ReleaseCapture();
   }
 
   return 0;
@@ -8499,7 +8741,8 @@ LISTVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
 /* case LVM_CANCELEDITLABEL: */
 
-/* case LVM_CREATEDRAGIMAGE: */
+  case LVM_CREATEDRAGIMAGE:
+    return (LRESULT)LISTVIEW_CreateDragImage(infoPtr, (INT)wParam, (LPPOINT)lParam);
 
   case LVM_DELETEALLITEMS:
     return LISTVIEW_DeleteAllItems(infoPtr);
@@ -9064,7 +9307,7 @@ static LRESULT LISTVIEW_Command(LISTVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lP
        }
 
        default:
-         return SendMessageW (GetParent (infoPtr->hwndSelf), WM_COMMAND, wParam, lParam);
+         return SendMessageW (infoPtr->hwndNotify, WM_COMMAND, wParam, lParam);
     }
 
     return 0;
index 04ea675..9871ef2 100644 (file)
@@ -1475,8 +1475,7 @@ static BOOL PROPSHEET_CreatePage(HWND hwndParent,
   }
 
   if (psInfo->proppage[index].useCallback)
-    (*(ppshpage->pfnCallback))(hwndParent,
-                               PSPCB_CREATE,
+    (*(ppshpage->pfnCallback))(0, PSPCB_CREATE,
                                (LPPROPSHEETPAGEW)ppshpage);
 
   if(ppshpage->dwFlags & PSP_INTERNAL_UNICODE)
@@ -2028,19 +2027,25 @@ static BOOL PROPSHEET_SetCurSel(HWND hwndDlg,
       index+=skipdir;
       if (index < 0) {
        index = 0;
-       FIXME("Tried to skip before first property sheet page!\n");
+       WARN("Tried to skip before first property sheet page!\n");
        break;
       }
       if (index >= psInfo->nPages) {
-       FIXME("Tried to skip after last property sheet page!\n");
+       WARN("Tried to skip after last property sheet page!\n");
        index = psInfo->nPages-1;
        break;
       }
     }
     else if (result != 0)
     {
-       index = PROPSHEET_FindPageByResId(psInfo, result);
-       continue;
+      int old_index = index;
+      index = PROPSHEET_FindPageByResId(psInfo, result);
+      if(index >= psInfo->nPages) {
+        index = old_index;
+        WARN("Tried to skip to nonexistant page by res id\n");
+        break;
+      }
+      continue;
     }
   }
   /*
index 2b22b6c..dc096f1 100644 (file)
  *
  *    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
  *        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 @@ typedef struct
     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 @@ typedef struct
 #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 @@ typedef struct
     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 @@ typedef struct
 /* 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
@@ -334,7 +342,7 @@ typedef struct
 static UINT mindragx = 0;
 static UINT mindragy = 0;
 
-static char *band_stylename[] = {
+static const char *band_stylename[] = {
     "RBBS_BREAK",              /* 0001 */
     "RBBS_FIXEDSIZE",          /* 0002 */
     "RBBS_CHILDEDGE",          /* 0004 */
@@ -346,7 +354,7 @@ static char *band_stylename[] = {
     "RBBS_NOGRIPPER",          /* 0100 */
     NULL };
 
-static char *band_maskname[] = {
+static const char *band_maskname[] = {
     "RBBIM_STYLE",         /*    0x00000001 */
     "RBBIM_COLORS",        /*    0x00000002 */
     "RBBIM_TEXT",          /*    0x00000004 */
@@ -437,10 +445,10 @@ REBAR_DumpBand (REBAR_INFO *iP)
     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 @@ REBAR_DumpBand (REBAR_INFO *iP)
 
 }
 
+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 @@ REBAR_DrawBand (HDC hdc, REBAR_INFO *infoPtr, REBAR_BAND *lpBand)
        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 @@ REBAR_CalcHorzBand (REBAR_INFO *infoPtr, UINT rstart, UINT rend, BOOL notify)
          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 @@ REBAR_Layout (REBAR_INFO *infoPtr, LPRECT lpRect, BOOL notify, BOOL resetclient)
        lpBand->fDraw = 0;
        lpBand->iRow = row;
 
+       SetRectEmpty(&lpBand->rcChevron);
+
        if (HIDDENBAND(lpBand)) continue;
 
        lpBand->rcoldBand = lpBand->rcBand;
@@ -2207,7 +2259,7 @@ REBAR_InternalEraseBkGnd (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam, REC
 }
 
 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 @@ REBAR_InternalHitTest (REBAR_INFO *infoPtr, LPPOINT lpPt, UINT *pFlags, INT *pBa
        }
        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 @@ REBAR_InternalHitTest (REBAR_INFO *infoPtr, LPPOINT lpPt, UINT *pFlags, INT *pBa
                        *pBand = iCount;
                    if (PtInRect (&lpBand->rcGripper, *lpPt)) {
                        *pFlags = RBHT_GRABBER;
-                       infoPtr->ihitBand = iCount;
                        TRACE("ON GRABBER %d\n", iCount);
                        return;
                    }
@@ -2255,6 +2305,11 @@ REBAR_InternalHitTest (REBAR_INFO *infoPtr, LPPOINT lpPt, UINT *pFlags, INT *pBa
                        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 @@ REBAR_HandleLRDrag (REBAR_INFO *infoPtr, POINTS *ptsmove)
            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 */
 
@@ -3402,8 +3457,11 @@ REBAR_SetBandInfoA (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
        }
        if (lprbbi->lpText) {
             INT len = MultiByteToWideChar( CP_ACP, 0, lprbbi->lpText, -1, NULL, 0 );
-            lpBand->lpText = (LPWSTR)Alloc (len*sizeof(WCHAR));
-            MultiByteToWideChar( CP_ACP, 0, lprbbi->lpText, -1, lpBand->lpText, len );
+            if (len > 1)
+            {
+                lpBand->lpText = (LPWSTR)Alloc (len*sizeof(WCHAR));
+                MultiByteToWideChar( CP_ACP, 0, lprbbi->lpText, -1, lpBand->lpText, len );
+            }
        }
     }
 
@@ -3447,8 +3505,11 @@ REBAR_SetBandInfoW (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
        }
        if (lprbbi->lpText) {
            INT len = lstrlenW (lprbbi->lpText);
-           lpBand->lpText = (LPWSTR)Alloc ((len + 1)*sizeof(WCHAR));
-           strcpyW (lpBand->lpText, lprbbi->lpText);
+           if (len > 0)
+           {
+               lpBand->lpText = (LPWSTR)Alloc ((len + 1)*sizeof(WCHAR));
+               strcpyW (lpBand->lpText, lprbbi->lpText);
+           }
        }
     }
 
@@ -3721,103 +3782,219 @@ REBAR_GetFont (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
     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;
+    REBAR_InternalHitTest(infoPtr, &ptMouseDown, &htFlags, &iHitBand);
+    lpBand = &infoPtr->bands[iHitBand];
 
-    SetCapture (infoPtr->hwndSelf);
+    if (htFlags == RBHT_CHEVRON)
+    {
+        REBAR_PushChevron(infoPtr, iHitBand, 0);
+    }
+    else if (htFlags == RBHT_GRABBER || htFlags == RBHT_CAPTION)
+    {
+        TRACE("Starting drag\n");
 
-    /* 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);
+        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 (infoPtr->iGrabbedBand >= 0)
+    {
+        NMHDR layout;
+        RECT rect;
+
+        infoPtr->dragStart.x = 0;
+        infoPtr->dragStart.y = 0;
+        infoPtr->dragNow = infoPtr->dragStart;
 
-    /* If InternalHitTest did not find a hit on the Gripper, */
-    /* then ignore the button click.                         */
-    if (infoPtr->ihitBand == -1) return 0;
+        ReleaseCapture ();
 
-    ihitBand = infoPtr->ihitBand;
-    infoPtr->dragStart.x = 0;
-    infoPtr->dragStart.y = 0;
-    infoPtr->dragNow = infoPtr->dragStart;
-    infoPtr->ihitBand = -1;
+        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;
+    /* 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->ihitBand-1];
-    band2 = &infoPtr->bands[infoPtr->ihitBand];
+        band1 = &infoPtr->bands[infoPtr->iGrabbedBand-1];
+        band2 = &infoPtr->bands[infoPtr->iGrabbedBand];
 
-    /* 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);
-       }
+        /* 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->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;
 }
 
@@ -3869,7 +4046,9 @@ REBAR_NCCreate (HWND hwnd, WPARAM wParam, LPARAM lParam)
     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);
@@ -4349,6 +4528,9 @@ REBAR_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
        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);
 
@@ -4425,6 +4607,9 @@ REBAR_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
        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 8f1dd7a..ffedee2 100644 (file)
@@ -1,89 +1,89 @@
-/*\r
- * Copyright 2002 Tisheng Chen\r
- *\r
- * This library is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU Lesser General Public\r
- * License as published by the Free Software Foundation; either\r
- * version 2.1 of the License, or (at your option) any later version.\r
- *\r
- * This library is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
- * Lesser General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU Lesser General Public\r
- * License along with this library; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
- */\r
-\r
-LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED\r
-#pragma code_page(936)\r
-\r
-IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE\r
-CAPTION "ÊôÐÔ "\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-  DEFPUSHBUTTON "È·¶¨",     IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP\r
-  PUSHBUTTON    "È¡Ïû", IDCANCEL,58,122,50,14\r
-  PUSHBUTTON    "Ó¦ÓÃ(&A)", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED\r
-  PUSHBUTTON    "°ïÖú",   IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP\r
-  CONTROL       "Tab",    IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114\r
-END\r
-\r
-\r
-IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE\r
-CAPTION "Wizard"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-  DEFPUSHBUTTON "½áÊø",  IDC_FINISH_BUTTON,121,138,50,14\r
-  DEFPUSHBUTTON "ÏÂÒ»²½(&N) >", IDC_NEXT_BUTTON,121,138,50,14\r
-  PUSHBUTTON    "< ÉÏÒ»²½(&B)", IDC_BACK_BUTTON,71,138,50,14\r
-  PUSHBUTTON    "È¡Ïû",  IDCANCEL,178,138,50,14\r
-  PUSHBUTTON    "°ïÖú",    IDHELP,235,138,50,14,WS_GROUP\r
-  LTEXT         "",        IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN\r
-  CONTROL       "Tab",     IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5\r
-END\r
-\r
-\r
-IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-CAPTION "×Ô¶¨Ò幤¾ßÀ¸"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-  DEFPUSHBUTTON "¹Ø±Õ(&C)",     IDCANCEL,308,6,44,14\r
-  PUSHBUTTON    "ÖØÖÃ(&e)",     IDC_RESET_BTN,308,23,44,14\r
-  PUSHBUTTON    "°ïÖú(&H)",      IDC_HELP_BTN,308,40,44,14\r
-  PUSHBUTTON    "ÉÏÒÆ(&U)",   IDC_MOVEUP_BTN,308,74,44,14\r
-  PUSHBUTTON    "ÏÂÒÆ(&D)", IDC_MOVEDN_BTN,308,91,44,14\r
-  LTEXT         "¿ÉÓù¤¾ßÀ¸°´Å¥(&V):", -1,4,5,84,10\r
-  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\r
-  PUSHBUTTON    "Ìí¼Ó(&A) ->",    IDOK, 131, 42, 44, 14\r
-  PUSHBUTTON    "<- É¾³ý(&R)", IDC_REMOVE_BTN,131,62,44,14\r
-  LTEXT         "µ±Ç°¹¤¾ßÀ¸°´Å¥(&T):", -1,182,5,78,10\r
-  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\r
-END\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    IDS_CLOSE    "¹Ø±Õ"\r
-}\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    IDM_TODAY    "Today:"\r
-    IDM_GOTODAY  "Go to today"\r
-}\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    IDS_SEPARATOR "·Ö¸ô·û"\r
-}\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    HKY_NONE "None"\r
-}\r
-\r
-#pragma code_page(default)\r
+/*
+ * Copyright 2002 Tisheng Chen
+ *
+ * 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_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
+#pragma code_page(936)
+
+IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+CAPTION "ÊôÐÔ "
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "È·¶¨",     IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP
+  PUSHBUTTON    "È¡Ïû", IDCANCEL,58,122,50,14
+  PUSHBUTTON    "Ó¦ÓÃ(&A)", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED
+  PUSHBUTTON    "°ïÖú",   IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP
+  CONTROL       "Tab",    IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,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 "Wizard"
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "½áÊø",  IDC_FINISH_BUTTON,121,138,50,14
+  DEFPUSHBUTTON "ÏÂÒ»²½(&N) >", IDC_NEXT_BUTTON,121,138,50,14
+  PUSHBUTTON    "< ÉÏÒ»²½(&B)", IDC_BACK_BUTTON,71,138,50,14
+  PUSHBUTTON    "È¡Ïû",  IDCANCEL,178,138,50,14
+  PUSHBUTTON    "°ïÖú",    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 "×Ô¶¨Ò幤¾ßÀ¸"
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "¹Ø±Õ(&C)",     IDCANCEL,308,6,44,14
+  PUSHBUTTON    "ÖØÖÃ(&e)",     IDC_RESET_BTN,308,23,44,14
+  PUSHBUTTON    "°ïÖú(&H)",      IDC_HELP_BTN,308,40,44,14
+  PUSHBUTTON    "ÉÏÒÆ(&U)",   IDC_MOVEUP_BTN,308,74,44,14
+  PUSHBUTTON    "ÏÂÒÆ(&D)", IDC_MOVEDN_BTN,308,91,44,14
+  LTEXT         "¿ÉÓù¤¾ßÀ¸°´Å¥(&V):", -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    "Ìí¼Ó(&A) ->",    IDOK, 131, 42, 44, 14
+  PUSHBUTTON    "<- É¾³ý(&R)", IDC_REMOVE_BTN,131,62,44,14
+  LTEXT         "µ±Ç°¹¤¾ßÀ¸°´Å¥(&T):", -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    "Today:"
+    IDM_GOTODAY  "Go to today"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_SEPARATOR "·Ö¸ô·û"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    HKY_NONE "None"
+}
+
+#pragma code_page(default)
index 13ee1f7..5465142 100644 (file)
@@ -1,81 +1,81 @@
-/*\r
- * Copyright 2000 Uwe Bonnes\r
- *\r
- * This library is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU Lesser General Public\r
- * License as published by the Free Software Foundation; either\r
- * version 2.1 of the License, or (at your option) any later version.\r
- *\r
- * This library is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
- * Lesser General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU Lesser General Public\r
- * License along with this library; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
- */\r
-\r
-LANGUAGE LANG_GERMAN, SUBLANG_DEFAULT\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-     IDS_CLOSE    "Schließen"\r
-}\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-     IDM_TODAY    "Heute:"\r
-     IDM_GOTODAY  "Gehe zu Heute"\r
-}\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    IDS_SEPARATOR "Trennzeichen"\r
-}\r
-\r
-IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE\r
-CAPTION "Eigenschaften für "\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-  DEFPUSHBUTTON "&OK",        IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP\r
-  PUSHBUTTON    "A&bbrechen", IDCANCEL,58,122,50,14\r
-  PUSHBUTTON    "&Anwenden",  IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED\r
-  PUSHBUTTON    "&Hilfe",     IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP\r
-  CONTROL       "Tab",        IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114\r
-END\r
-\r
-\r
-IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE\r
-CAPTION "Wizard"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-  DEFPUSHBUTTON "&Beenden",   IDC_FINISH_BUTTON,121,138,50,14\r
-  DEFPUSHBUTTON "&Weiter >", IDC_NEXT_BUTTON,121,138,50,14\r
-  PUSHBUTTON    "< &Zurück", IDC_BACK_BUTTON,71,138,50,14\r
-  PUSHBUTTON    "Abbrechen", IDCANCEL,178,138,50,14\r
-  PUSHBUTTON    "&Hilfe",     IDHELP,235,138,50,14,WS_GROUP\r
-  LTEXT         "",          IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN\r
-  CONTROL       "Tab",       IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5\r
-END\r
-\r
-\r
-IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Toolbar einrichten"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-  DEFPUSHBUTTON "&Schließen",               IDCANCEL,308,6,44,14\r
-  PUSHBUTTON    "&Zurücksetzen",            IDC_RESET_BTN,308,23,44,14\r
-  PUSHBUTTON    "&Hilfe",                   IDC_HELP_BTN,308,40,44,14\r
-  PUSHBUTTON    "Nach &Oben verschieben",   IDC_MOVEUP_BTN,308,74,44,14\r
-  PUSHBUTTON    "Nach &Unten verschieben",  IDC_MOVEDN_BTN,308,91,44,14\r
-  LTEXT         "&Vorhandene Knöpfe:", -1,4,5,84,10\r
-  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\r
-  PUSHBUTTON    "H&inzufügen ->",           IDOK, 131, 42, 44, 14\r
-  PUSHBUTTON    "<- &Löschen",              IDC_REMOVE_BTN,131,62,44,14\r
-  LTEXT         "&Toolbarknöpfe:", -1,182,5,78,10\r
-  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\r
-END\r
+/*
+ * Copyright 2000 Uwe Bonnes
+ *
+ * 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_GERMAN, SUBLANG_DEFAULT
+
+STRINGTABLE DISCARDABLE
+{
+     IDS_CLOSE    "Schließen"
+}
+
+STRINGTABLE DISCARDABLE
+{
+     IDM_TODAY    "Heute:"
+     IDM_GOTODAY  "Gehe zu Heute"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_SEPARATOR "Trennzeichen"
+}
+
+IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+CAPTION "Eigenschaften für "
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "&OK",        IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP
+  PUSHBUTTON    "A&bbrechen", IDCANCEL,58,122,50,14
+  PUSHBUTTON    "&Anwenden",  IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED
+  PUSHBUTTON    "&Hilfe",     IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP
+  CONTROL       "Tab",        IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,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 "Wizard"
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "&Beenden",   IDC_FINISH_BUTTON,121,138,50,14
+  DEFPUSHBUTTON "&Weiter >", IDC_NEXT_BUTTON,121,138,50,14
+  PUSHBUTTON    "< &Zurück", IDC_BACK_BUTTON,71,138,50,14
+  PUSHBUTTON    "Abbrechen", IDCANCEL,178,138,50,14
+  PUSHBUTTON    "&Hilfe",     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 "Toolbar einrichten"
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "&Schließen",               IDCANCEL,308,6,44,14
+  PUSHBUTTON    "&Zurücksetzen",            IDC_RESET_BTN,308,23,44,14
+  PUSHBUTTON    "&Hilfe",                   IDC_HELP_BTN,308,40,44,14
+  PUSHBUTTON    "Nach &Oben verschieben",   IDC_MOVEUP_BTN,308,74,44,14
+  PUSHBUTTON    "Nach &Unten verschieben",  IDC_MOVEDN_BTN,308,91,44,14
+  LTEXT         "&Vorhandene Knöpfe:", -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    "H&inzufügen ->",           IDOK, 131, 42, 44, 14
+  PUSHBUTTON    "<- &Löschen",              IDC_REMOVE_BTN,131,62,44,14
+  LTEXT         "&Toolbarknöpfe:", -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
index ef41de8..cc21ecb 100644 (file)
@@ -1,86 +1,86 @@
-/*\r
- * Copyright 1999 Eric Kohl\r
- *\r
- * This library is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU Lesser General Public\r
- * License as published by the Free Software Foundation; either\r
- * version 2.1 of the License, or (at your option) any later version.\r
- *\r
- * This library is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
- * Lesser General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU Lesser General Public\r
- * License along with this library; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
- */\r
-\r
-LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT\r
-\r
-IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE\r
-CAPTION "Properties for "\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-  DEFPUSHBUTTON "OK",     IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP\r
-  PUSHBUTTON    "Cancel", IDCANCEL,58,122,50,14\r
-  PUSHBUTTON    "&Apply", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED\r
-  PUSHBUTTON    "Help",   IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP\r
-  CONTROL       "Tab",    IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114\r
-END\r
-\r
-\r
-IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE\r
-CAPTION "Wizard"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-  DEFPUSHBUTTON "Finish",  IDC_FINISH_BUTTON,121,138,50,14\r
-  DEFPUSHBUTTON "&Next >", IDC_NEXT_BUTTON,121,138,50,14\r
-  PUSHBUTTON    "< &Back", IDC_BACK_BUTTON,71,138,50,14\r
-  PUSHBUTTON    "Cancel",  IDCANCEL,178,138,50,14\r
-  PUSHBUTTON    "Help",    IDHELP,235,138,50,14,WS_GROUP\r
-  LTEXT         "",        IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN\r
-  CONTROL       "Tab",     IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5\r
-END\r
-\r
-\r
-IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Customize Toolbar"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-  DEFPUSHBUTTON "&Close",     IDCANCEL,308,6,44,14\r
-  PUSHBUTTON    "R&eset",     IDC_RESET_BTN,308,23,44,14\r
-  PUSHBUTTON    "&Help",      IDC_HELP_BTN,308,40,44,14\r
-  PUSHBUTTON    "Move &Up",   IDC_MOVEUP_BTN,308,74,44,14\r
-  PUSHBUTTON    "Move &Down", IDC_MOVEDN_BTN,308,91,44,14\r
-  LTEXT         "A&vailable buttons:", -1,4,5,84,10\r
-  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\r
-  PUSHBUTTON    "&Add ->",    IDOK, 131, 42, 44, 14\r
-  PUSHBUTTON    "<- &Remove", IDC_REMOVE_BTN,131,62,44,14\r
-  LTEXT         "&Toolbar buttons:", -1,182,5,78,10\r
-  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\r
-END\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    IDS_CLOSE    "Close"\r
-}\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    IDM_TODAY    "Today:"\r
-    IDM_GOTODAY  "Go to today"\r
-}\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    IDS_SEPARATOR "Separator"\r
-}\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    HKY_NONE "None"\r
-}\r
+/*
+ * Copyright 1999 Eric Kohl
+ *
+ * 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_ENGLISH, SUBLANG_DEFAULT
+
+IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+CAPTION "Properties for "
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "OK",     IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP
+  PUSHBUTTON    "Cancel", IDCANCEL,58,122,50,14
+  PUSHBUTTON    "&Apply", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED
+  PUSHBUTTON    "Help",   IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP
+  CONTROL       "Tab",    IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,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 "Wizard"
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "Finish",  IDC_FINISH_BUTTON,121,138,50,14
+  DEFPUSHBUTTON "&Next >", IDC_NEXT_BUTTON,121,138,50,14
+  PUSHBUTTON    "< &Back", IDC_BACK_BUTTON,71,138,50,14
+  PUSHBUTTON    "Cancel",  IDCANCEL,178,138,50,14
+  PUSHBUTTON    "Help",    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 "Customize Toolbar"
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "&Close",     IDCANCEL,308,6,44,14
+  PUSHBUTTON    "R&eset",     IDC_RESET_BTN,308,23,44,14
+  PUSHBUTTON    "&Help",      IDC_HELP_BTN,308,40,44,14
+  PUSHBUTTON    "Move &Up",   IDC_MOVEUP_BTN,308,74,44,14
+  PUSHBUTTON    "Move &Down", IDC_MOVEDN_BTN,308,91,44,14
+  LTEXT         "A&vailable buttons:", -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    "&Add ->",    IDOK, 131, 42, 44, 14
+  PUSHBUTTON    "<- &Remove", IDC_REMOVE_BTN,131,62,44,14
+  LTEXT         "&Toolbar buttons:", -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    "Close"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDM_TODAY    "Today:"
+    IDM_GOTODAY  "Go to today"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_SEPARATOR "Separator"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    HKY_NONE "None"
+}
index f1af51b..fc6534c 100644 (file)
@@ -1,86 +1,86 @@
-/*\r
- * Copyright 2003 José Manuel Ferrer Ortiz\r
- *\r
- * This library is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU Lesser General Public\r
- * License as published by the Free Software Foundation; either\r
- * version 2.1 of the License, or (at your option) any later version.\r
- *\r
- * This library is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
- * Lesser General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU Lesser General Public\r
- * License along with this library; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
- */\r
-\r
-LANGUAGE LANG_SPANISH, SUBLANG_DEFAULT\r
-\r
-IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE\r
-CAPTION "Propiedades de "\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-  DEFPUSHBUTTON "Aceptar",  IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP\r
-  PUSHBUTTON    "Cancelar", IDCANCEL,58,122,50,14\r
-  PUSHBUTTON    "&Aplicar", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED\r
-  PUSHBUTTON    "Ayuda",    IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP\r
-  CONTROL       "Tab",    IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114\r
-END\r
-\r
-\r
-IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE\r
-CAPTION "Ayudante"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-  DEFPUSHBUTTON "Terminar",     IDC_FINISH_BUTTON,121,138,50,14\r
-  DEFPUSHBUTTON "&Siguiente >", IDC_NEXT_BUTTON,121,138,50,14\r
-  PUSHBUTTON    "< &Anterior",  IDC_BACK_BUTTON,71,138,50,14\r
-  PUSHBUTTON    "Cancelar",     IDCANCEL,178,138,50,14\r
-  PUSHBUTTON    "Ayuda",        IDHELP,235,138,50,14,WS_GROUP\r
-  LTEXT         "",        IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN\r
-  CONTROL       "Tab",     IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5\r
-END\r
-\r
-\r
-IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Personalizar barra de herramientas"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-  DEFPUSHBUTTON "&Cerrar",       IDCANCEL,308,6,44,14\r
-  PUSHBUTTON    "R&estaurar",    IDC_RESET_BTN,308,23,44,14\r
-  PUSHBUTTON    "&Ayuda",        IDC_HELP_BTN,308,40,44,14\r
-  PUSHBUTTON    "Mover A&rriba", IDC_MOVEUP_BTN,308,74,44,14\r
-  PUSHBUTTON    "Mover A&bajo",  IDC_MOVEDN_BTN,308,91,44,14\r
-  LTEXT         "Botones &disponibles:", -1,4,5,84,10\r
-  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\r
-  PUSHBUTTON    "A&ñadir ->",   IDOK, 131, 42, 44, 14\r
-  PUSHBUTTON    "<- &Eliminar", IDC_REMOVE_BTN,131,62,44,14\r
-  LTEXT         "B&otones de la barra:", -1,182,5,78,10\r
-  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\r
-END\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    IDS_CLOSE    "Cerrar"\r
-}\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    IDM_TODAY    "Hoy:"\r
-    IDM_GOTODAY  "Ir a hoy"\r
-}\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    IDS_SEPARATOR "Separador"\r
-}\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    HKY_NONE "Ninguno"\r
-}\r
+/*
+ * Copyright 2003 José Manuel Ferrer Ortiz
+ *
+ * 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_SPANISH, SUBLANG_DEFAULT
+
+IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+CAPTION "Propiedades de "
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "Aceptar",  IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP
+  PUSHBUTTON    "Cancelar", IDCANCEL,58,122,50,14
+  PUSHBUTTON    "&Aplicar", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED
+  PUSHBUTTON    "Ayuda",    IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP
+  CONTROL       "Tab",    IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,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 "Ayudante"
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "Terminar",     IDC_FINISH_BUTTON,121,138,50,14
+  DEFPUSHBUTTON "&Siguiente >", IDC_NEXT_BUTTON,121,138,50,14
+  PUSHBUTTON    "< &Anterior",  IDC_BACK_BUTTON,71,138,50,14
+  PUSHBUTTON    "Cancelar",     IDCANCEL,178,138,50,14
+  PUSHBUTTON    "Ayuda",        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 "Personalizar barra de herramientas"
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "&Cerrar",       IDCANCEL,308,6,44,14
+  PUSHBUTTON    "R&estaurar",    IDC_RESET_BTN,308,23,44,14
+  PUSHBUTTON    "&Ayuda",        IDC_HELP_BTN,308,40,44,14
+  PUSHBUTTON    "Mover A&rriba", IDC_MOVEUP_BTN,308,74,44,14
+  PUSHBUTTON    "Mover A&bajo",  IDC_MOVEDN_BTN,308,91,44,14
+  LTEXT         "Botones &disponibles:", -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    "A&ñadir ->",   IDOK, 131, 42, 44, 14
+  PUSHBUTTON    "<- &Eliminar", IDC_REMOVE_BTN,131,62,44,14
+  LTEXT         "B&otones de la barra:", -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    "Cerrar"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDM_TODAY    "Hoy:"
+    IDM_GOTODAY  "Ir a hoy"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_SEPARATOR "Separador"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    HKY_NONE "Ninguno"
+}
index 9b4578e..94a9075 100644 (file)
@@ -1,90 +1,90 @@
-/*\r
- * Comctl32\r
- * French language support\r
- *\r
- * Copyright 1999 Eric Kohl\r
- * Copyright 2003 Vincent Béron\r
- *\r
- * This library is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU Lesser General Public\r
- * License as published by the Free Software Foundation; either\r
- * version 2.1 of the License, or (at your option) any later version.\r
- *\r
- * This library is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
- * Lesser General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU Lesser General Public\r
- * License along with this library; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
- */\r
-\r
-LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL\r
-\r
-IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE\r
-CAPTION "Propriétés pour "\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-  DEFPUSHBUTTON "OK",     IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP\r
-  PUSHBUTTON    "Annuler", IDCANCEL,58,122,50,14\r
-  PUSHBUTTON    "&Appliquer", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED\r
-  PUSHBUTTON    "Aide",   IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP\r
-  CONTROL       "onglet", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114\r
-END\r
-\r
-\r
-IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE\r
-CAPTION "Assistant"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-  DEFPUSHBUTTON "Terminer", IDC_FINISH_BUTTON,121,138,50,14\r
-  DEFPUSHBUTTON "&Suivant >", IDC_NEXT_BUTTON,121,138,50,14\r
-  PUSHBUTTON    "< &Précédent", IDC_BACK_BUTTON,71,138,50,14\r
-  PUSHBUTTON    "Annuler", IDCANCEL,178,138,50,14\r
-  PUSHBUTTON    "Aide",    IDHELP,235,138,50,14,WS_GROUP\r
-  LTEXT         "",        IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN\r
-  CONTROL       "Onglet",  IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5\r
-END\r
-\r
-\r
-IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Personnaliser la barre d'outils"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-  DEFPUSHBUTTON "&Fermer",  IDCANCEL,308,6,44,14\r
-  PUSHBUTTON    "&Réinitialiser", IDC_RESET_BTN,308,23,44,14\r
-  PUSHBUTTON    "&Aide",    IDC_HELP_BTN,308,40,44,14\r
-  PUSHBUTTON    "&Monter",  IDC_MOVEUP_BTN,308,74,44,14\r
-  PUSHBUTTON    "&Descendre", IDC_MOVEDN_BTN,308,91,44,14\r
-  LTEXT         "Boutons disponibles :", -1,4,5,84,10\r
-  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\r
-  PUSHBUTTON    "A&jouter ->",    IDOK, 131, 42, 44, 14\r
-  PUSHBUTTON    "<- &Enlever", IDC_REMOVE_BTN,131,62,44,14\r
-  LTEXT         "&Boutons de la barre d'outils :", -1,182,5,78,10\r
-  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\r
-END\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    IDS_CLOSE    "Fermer"\r
-}\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    IDM_TODAY    "Aujourd'hui:"\r
-    IDM_GOTODAY  "Aller à aujourd'hui"\r
-}\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    IDS_SEPARATOR "Séparateur"\r
-}\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    HKY_NONE "Aucun"\r
-}\r
+/*
+ * Comctl32
+ * French language support
+ *
+ * Copyright 1999 Eric Kohl
+ * Copyright 2003 Vincent Béron
+ *
+ * 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_FRENCH, SUBLANG_NEUTRAL
+
+IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+CAPTION "Propriétés pour "
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "OK",     IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP
+  PUSHBUTTON    "Annuler", IDCANCEL,58,122,50,14
+  PUSHBUTTON    "&Appliquer", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED
+  PUSHBUTTON    "Aide",   IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP
+  CONTROL       "onglet", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,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 "Assistant"
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "Terminer", IDC_FINISH_BUTTON,121,138,50,14
+  DEFPUSHBUTTON "&Suivant >", IDC_NEXT_BUTTON,121,138,50,14
+  PUSHBUTTON    "< &Précédent", IDC_BACK_BUTTON,71,138,50,14
+  PUSHBUTTON    "Annuler", IDCANCEL,178,138,50,14
+  PUSHBUTTON    "Aide",    IDHELP,235,138,50,14,WS_GROUP
+  LTEXT         "",        IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN
+  CONTROL       "Onglet",  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 "Personnaliser la barre d'outils"
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "&Fermer",  IDCANCEL,308,6,44,14
+  PUSHBUTTON    "&Réinitialiser", IDC_RESET_BTN,308,23,44,14
+  PUSHBUTTON    "&Aide",    IDC_HELP_BTN,308,40,44,14
+  PUSHBUTTON    "&Monter",  IDC_MOVEUP_BTN,308,74,44,14
+  PUSHBUTTON    "&Descendre", IDC_MOVEDN_BTN,308,91,44,14
+  LTEXT         "Boutons disponibles :", -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    "A&jouter ->",    IDOK, 131, 42, 44, 14
+  PUSHBUTTON    "<- &Enlever", IDC_REMOVE_BTN,131,62,44,14
+  LTEXT         "&Boutons de la barre d'outils :", -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    "Fermer"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDM_TODAY    "Aujourd'hui:"
+    IDM_GOTODAY  "Aller à aujourd'hui"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_SEPARATOR "Séparateur"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    HKY_NONE "Aucun"
+}
diff --git a/reactos/lib/comctl32/res/comctl_It.rc b/reactos/lib/comctl32/res/comctl_It.rc
new file mode 100644 (file)
index 0000000..8629604
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * Copyright 1999 Eric Kohl
+ * Copyright 2003 Ivan Leo Murray-Smith
+ *
+ * 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_ITALIAN, SUBLANG_DEFAULT
+
+IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+CAPTION "Proprietà per "
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "OK",     IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP
+  PUSHBUTTON    "Annulla", IDCANCEL,58,122,50,14
+  PUSHBUTTON    "&Applica", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED
+  PUSHBUTTON    "Aiuto",   IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP
+  CONTROL       "Linguetta",    IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,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 "Wizard"
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "Fine",  IDC_FINISH_BUTTON,121,138,50,14
+  DEFPUSHBUTTON "&Avanti >", IDC_NEXT_BUTTON,121,138,50,14
+  PUSHBUTTON    "< &Indietro", IDC_BACK_BUTTON,71,138,50,14
+  PUSHBUTTON    "Anulla",  IDCANCEL,178,138,50,14
+  PUSHBUTTON    "Aiuto",    IDHELP,235,138,50,14,WS_GROUP
+  LTEXT         "",        IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN
+  CONTROL       "Linguetta",     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 "Personalitta la barra degli strumenti"
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "&Chiudi",     IDCANCEL,308,6,44,14
+  PUSHBUTTON    "R&eimpostare",     IDC_RESET_BTN,308,23,44,14
+  PUSHBUTTON    "&Aiuto",      IDC_HELP_BTN,308,40,44,14
+  PUSHBUTTON    "Muovi &Su",   IDC_MOVEUP_BTN,308,74,44,14
+  PUSHBUTTON    "Muovi &giù", IDC_MOVEDN_BTN,308,91,44,14
+  LTEXT         "&Tasti disponibili:", -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    "&Aggiungi ->",    IDOK, 131, 42, 44, 14
+  PUSHBUTTON    "<- &Rimuovi", IDC_REMOVE_BTN,131,62,44,14
+  LTEXT         "&Tast della barra degli strumenti:", -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    "Chiudi"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDM_TODAY    "Oggi:"
+    IDM_GOTODAY  "Vai a oggi"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_SEPARATOR "Separatore"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    HKY_NONE "Nessuno"
+}
index 3c4f8dc..aa9171f 100644 (file)
@@ -1,81 +1,81 @@
-/*\r
- * Copyright 2002 Won-kyu Park <wkpark@kldp.org>\r
- *\r
- * This library is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU Lesser General Public\r
- * License as published by the Free Software Foundation; either\r
- * version 2.1 of the License, or (at your option) any later version.\r
- *\r
- * This library is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
- * Lesser General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU Lesser General Public\r
- * License along with this library; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
- */\r
-\r
-LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT\r
-\r
-IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE\r
-CAPTION "Properties for "\r
-FONT 9, "MS Sans Serif"\r
-BEGIN\r
-  DEFPUSHBUTTON "È®ÀÎ",     IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP\r
-  PUSHBUTTON    "Ãë¼Ò", IDCANCEL,58,122,50,14\r
-  PUSHBUTTON    "Àû¿ë(&A)", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED\r
-  PUSHBUTTON    "µµ¿ò¸»",   IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP\r
-  CONTROL       "Tab",    IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114\r
-END\r
-\r
-\r
-IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE\r
-CAPTION "Wizard"\r
-FONT 9, "MS Sans Serif"\r
-BEGIN\r
-  DEFPUSHBUTTON "Á¾·á",  IDC_FINISH_BUTTON,121,138,50,14\r
-  DEFPUSHBUTTON "´ÙÀ½(&N) >", IDC_NEXT_BUTTON,121,138,50,14\r
-  PUSHBUTTON    "< ÀÌÀü(&B)", IDC_BACK_BUTTON,71,138,50,14\r
-  PUSHBUTTON    "Ãë¼Ò",  IDCANCEL,178,138,50,14\r
-  PUSHBUTTON    "µµ¿ò¸»",    IDHELP,235,138,50,14,WS_GROUP\r
-  LTEXT         "",        IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN\r
-  CONTROL       "Tab",     IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5\r
-END\r
-\r
-\r
-IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Customize Toolbar"\r
-FONT 9, "MS Sans Serif"\r
-BEGIN\r
-  DEFPUSHBUTTON "´Ý±â(&C)",     IDCANCEL,308,6,44,14\r
-  PUSHBUTTON    "´Ù½Ã(&e)",     IDC_RESET_BTN,308,23,44,14\r
-  PUSHBUTTON    "µµ¿ò¸»(&H)",      IDC_HELP_BTN,308,40,44,14\r
-  PUSHBUTTON    "Move &Up",   IDC_MOVEUP_BTN,308,74,44,14\r
-  PUSHBUTTON    "Move &Down", IDC_MOVEDN_BTN,308,91,44,14\r
-  LTEXT         "A&vailable buttons:", -1,4,5,84,10\r
-  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\r
-  PUSHBUTTON    "&Add ->",    IDOK, 131, 42, 44, 14\r
-  PUSHBUTTON    "<- &Remove", IDC_REMOVE_BTN,131,62,44,14\r
-  LTEXT         "&Toolbar buttons:", -1,182,5,78,10\r
-  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\r
-END\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    IDS_CLOSE    "´Ý±â"\r
-}\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    IDM_TODAY    "¿À´Ã:"\r
-    IDM_GOTODAY  "Go to today"\r
-}\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    IDS_SEPARATOR "Separator"\r
-}\r
+/*
+ * Copyright 2002 Won-kyu Park <wkpark@kldp.org>
+ *
+ * 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_KOREAN, SUBLANG_DEFAULT
+
+IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+CAPTION "Properties for "
+FONT 9, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "È®ÀÎ",     IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP
+  PUSHBUTTON    "Ãë¼Ò", IDCANCEL,58,122,50,14
+  PUSHBUTTON    "Àû¿ë(&A)", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED
+  PUSHBUTTON    "µµ¿ò¸»",   IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP
+  CONTROL       "Tab",    IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,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 "Wizard"
+FONT 9, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "Á¾·á",  IDC_FINISH_BUTTON,121,138,50,14
+  DEFPUSHBUTTON "´ÙÀ½(&N) >", IDC_NEXT_BUTTON,121,138,50,14
+  PUSHBUTTON    "< ÀÌÀü(&B)", IDC_BACK_BUTTON,71,138,50,14
+  PUSHBUTTON    "Ãë¼Ò",  IDCANCEL,178,138,50,14
+  PUSHBUTTON    "µµ¿ò¸»",    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 "Customize Toolbar"
+FONT 9, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "´Ý±â(&C)",     IDCANCEL,308,6,44,14
+  PUSHBUTTON    "´Ù½Ã(&e)",     IDC_RESET_BTN,308,23,44,14
+  PUSHBUTTON    "µµ¿ò¸»(&H)",      IDC_HELP_BTN,308,40,44,14
+  PUSHBUTTON    "Move &Up",   IDC_MOVEUP_BTN,308,74,44,14
+  PUSHBUTTON    "Move &Down", IDC_MOVEDN_BTN,308,91,44,14
+  LTEXT         "A&vailable buttons:", -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    "&Add ->",    IDOK, 131, 42, 44, 14
+  PUSHBUTTON    "<- &Remove", IDC_REMOVE_BTN,131,62,44,14
+  LTEXT         "&Toolbar buttons:", -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    "¿À´Ã:"
+    IDM_GOTODAY  "Go to today"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_SEPARATOR "Separator"
+}
diff --git a/reactos/lib/comctl32/res/comctl_Nl.rc b/reactos/lib/comctl32/res/comctl_Nl.rc
new file mode 100644 (file)
index 0000000..ebfc30f
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * comctl (Dutch resources)
+ *
+ * Copyright 2003 Hans Leidekker
+ *
+ * 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_DUTCH, SUBLANG_DEFAULT
+
+IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+CAPTION "Eigenschappen van "
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "OK",         IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP
+  PUSHBUTTON    "Annuleren",  IDCANCEL,58,122,50,14
+  PUSHBUTTON    "&Toepassen", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED
+  PUSHBUTTON    "Help",       IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP
+  CONTROL       "Tabblad",    IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,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 "Assistent"
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "Beëindigen",  IDC_FINISH_BUTTON,121,138,50,14
+  DEFPUSHBUTTON "&Volgende >", IDC_NEXT_BUTTON,121,138,50,14
+  PUSHBUTTON    "< V&orige",   IDC_BACK_BUTTON,71,138,50,14
+  PUSHBUTTON    "Annuleren",   IDCANCEL,178,138,50,14
+  PUSHBUTTON    "Help",        IDHELP,235,138,50,14,WS_GROUP
+  LTEXT         "",            IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN
+  CONTROL       "Tabblad",     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 "Gereedschappenbalk aanpassen"
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "&Afsluiten",           IDCANCEL,308,6,44,14
+  PUSHBUTTON    "&Reset",               IDC_RESET_BTN,308,23,44,14
+  PUSHBUTTON    "&Help",                IDC_HELP_BTN,308,40,44,14
+  PUSHBUTTON    "Verplaats Om&hoog",    IDC_MOVEUP_BTN,308,74,44,14
+  PUSHBUTTON    "Verplaats Om&laag",    IDC_MOVEDN_BTN,308,91,44,14
+  LTEXT         "&Beschikbare knoppen:", -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    "&Toevoegen ->",   IDOK, 131, 42, 44, 14
+  PUSHBUTTON    "<- &Verwijderen", IDC_REMOVE_BTN,131,62,44,14
+  LTEXT         "&Knoppen:",       -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    "Sluiten"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDM_TODAY    "Vandaag:"
+    IDM_GOTODAY  "Ga vandaag naar"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_SEPARATOR "Scheidingsteken"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    HKY_NONE "Geen"
+}
index 6b6fd5d..7f00be6 100644 (file)
@@ -1,82 +1,82 @@
-/*\r
- * Copyright 1999 Eric Kohl\r
- * Copyright 2002 Jacek Bator\r
- *\r
- * This library is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU Lesser General Public\r
- * License as published by the Free Software Foundation; either\r
- * version 2.1 of the License, or (at your option) any later version.\r
- *\r
- * This library is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
- * Lesser General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU Lesser General Public\r
- * License along with this library; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
- */\r
-\r
-LANGUAGE LANG_POLISH, SUBLANG_DEFAULT\r
-\r
-IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE\r
-CAPTION "W³a\9cciwo\9cci "\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-  DEFPUSHBUTTON "OK",     IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP\r
-  PUSHBUTTON    "Anuluj", IDCANCEL,58,122,50,14\r
-  PUSHBUTTON    "&Zastosuj", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED\r
-  PUSHBUTTON    "Pomoc",   IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP\r
-  CONTROL       "Tab",    IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114\r
-END\r
-\r
-\r
-IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE\r
-CAPTION "Kreator"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-  DEFPUSHBUTTON "Zakoñcz",  IDC_FINISH_BUTTON,121,138,50,14\r
-  DEFPUSHBUTTON "&Dalej >", IDC_NEXT_BUTTON,121,138,50,14\r
-  PUSHBUTTON    "< &Wstecz", IDC_BACK_BUTTON,71,138,50,14\r
-  PUSHBUTTON    "Anuluj",  IDCANCEL,178,138,50,14\r
-  PUSHBUTTON    "Pomoc",    IDHELP,235,138,50,14,WS_GROUP\r
-  LTEXT         "",        IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN\r
-  CONTROL       "Tab",     IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5\r
-END\r
-\r
-\r
-IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Dostosowywanie paska narzêdzi"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-  DEFPUSHBUTTON "&Zamknij",     IDCANCEL,308,6,44,14\r
-  PUSHBUTTON    "Z&resetuj",     IDC_RESET_BTN,308,23,44,14\r
-  PUSHBUTTON    "&Pomoc",      IDC_HELP_BTN,308,40,44,14\r
-  PUSHBUTTON    "Przenie\9c &w górê",   IDC_MOVEUP_BTN,308,74,44,14\r
-  PUSHBUTTON    "Przenie\9c w &dó³", IDC_MOVEDN_BTN,308,91,44,14\r
-  LTEXT         "Do&stêpne przyciski:", -1,4,5,84,10\r
-  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\r
-  PUSHBUTTON    "D&odaj ->",    IDOK, 131, 42, 44, 14\r
-  PUSHBUTTON    "<- &Usuñ", IDC_REMOVE_BTN,131,62,44,14\r
-  LTEXT         "&Przyciski paska narzêdzi:", -1,182,5,78,10\r
-  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\r
-END\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    IDS_CLOSE    "Zamknij"\r
-}\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    IDM_TODAY    "Dzi\9c:"\r
-    IDM_GOTODAY  "Id\9f do dzi\9c"\r
-}\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    IDS_SEPARATOR "Odstêp"\r
-}\r
+/*
+ * Copyright 1999 Eric Kohl
+ * Copyright 2002 Jacek Bator
+ *
+ * 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_POLISH, SUBLANG_DEFAULT
+
+IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+CAPTION "W³a\9cciwo\9cci "
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "OK",     IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP
+  PUSHBUTTON    "Anuluj", IDCANCEL,58,122,50,14
+  PUSHBUTTON    "&Zastosuj", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED
+  PUSHBUTTON    "Pomoc",   IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP
+  CONTROL       "Tab",    IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,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 "Kreator"
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "Zakoñcz",  IDC_FINISH_BUTTON,121,138,50,14
+  DEFPUSHBUTTON "&Dalej >", IDC_NEXT_BUTTON,121,138,50,14
+  PUSHBUTTON    "< &Wstecz", IDC_BACK_BUTTON,71,138,50,14
+  PUSHBUTTON    "Anuluj",  IDCANCEL,178,138,50,14
+  PUSHBUTTON    "Pomoc",    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 "Dostosowywanie paska narzêdzi"
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "&Zamknij",     IDCANCEL,308,6,44,14
+  PUSHBUTTON    "Z&resetuj",     IDC_RESET_BTN,308,23,44,14
+  PUSHBUTTON    "&Pomoc",      IDC_HELP_BTN,308,40,44,14
+  PUSHBUTTON    "Przenie\9c &w górê",   IDC_MOVEUP_BTN,308,74,44,14
+  PUSHBUTTON    "Przenie\9c w &dó³", IDC_MOVEDN_BTN,308,91,44,14
+  LTEXT         "Do&stêpne przyciski:", -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    "D&odaj ->",    IDOK, 131, 42, 44, 14
+  PUSHBUTTON    "<- &Usuñ", IDC_REMOVE_BTN,131,62,44,14
+  LTEXT         "&Przyciski paska narzêdzi:", -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    "Zamknij"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDM_TODAY    "Dzi\9c:"
+    IDM_GOTODAY  "Id\9f do dzi\9c"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_SEPARATOR "Odstêp"
+}
index d7d47e8..5cad499 100644 (file)
@@ -1,86 +1,86 @@
-/*\r
- * Copyright 2003 Marcelo Duarte\r
- *\r
- * This library is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU Lesser General Public\r
- * License as published by the Free Software Foundation; either\r
- * version 2.1 of the License, or (at your option) any later version.\r
- *\r
- * This library is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
- * Lesser General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU Lesser General Public\r
- * License along with this library; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
- */\r
-\r
-LANGUAGE LANG_PORTUGUESE, SUBLANG_DEFAULT\r
-\r
-IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE\r
-CAPTION "Propriedades para "\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-  DEFPUSHBUTTON "OK",     IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP\r
-  PUSHBUTTON    "Cancelar", IDCANCEL,58,122,50,14\r
-  PUSHBUTTON    "&Aplicar", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED\r
-  PUSHBUTTON    "Ajuda",   IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP\r
-  CONTROL       "Tab",    IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114\r
-END\r
-\r
-\r
-IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE\r
-CAPTION "Assistente"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-  DEFPUSHBUTTON "Finalizar",  IDC_FINISH_BUTTON,121,138,50,14\r
-  DEFPUSHBUTTON "&Avançar >", IDC_NEXT_BUTTON,121,138,50,14\r
-  PUSHBUTTON    "< &Voltar", IDC_BACK_BUTTON,71,138,50,14\r
-  PUSHBUTTON    "Cancelar",  IDCANCEL,178,138,50,14\r
-  PUSHBUTTON    "Ajuda",    IDHELP,235,138,50,14,WS_GROUP\r
-  LTEXT         "",        IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN\r
-  CONTROL       "Tab",     IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5\r
-END\r
-\r
-\r
-IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Personalizar barra de ferramentas"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-  DEFPUSHBUTTON "&Fechar",     IDCANCEL,308,6,44,14\r
-  PUSHBUTTON    "R&estaurar",     IDC_RESET_BTN,308,23,44,14\r
-  PUSHBUTTON    "&Ajuda",      IDC_HELP_BTN,308,40,44,14\r
-  PUSHBUTTON    "A&cima",   IDC_MOVEUP_BTN,308,74,44,14\r
-  PUSHBUTTON    "A&baixo", IDC_MOVEDN_BTN,308,91,44,14\r
-  LTEXT         "Botões &disponíveis:", -1,4,5,84,10\r
-  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\r
-  PUSHBUTTON    "&Adicionar ->",    IDOK, 131, 42, 44, 14\r
-  PUSHBUTTON    "<- &Remover", IDC_REMOVE_BTN,131,62,44,14\r
-  LTEXT         "&Botões da barra de ferramentas:", -1,182,5,78,10\r
-  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\r
-END\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    IDS_CLOSE    "Fechar"\r
-}\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    IDM_TODAY    "Hoje:"\r
-    IDM_GOTODAY  "Ir para hoje"\r
-}\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    IDS_SEPARATOR "Separador"\r
-}\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    HKY_NONE "Nenhum"\r
-}\r
+/*
+ * Copyright 2003 Marcelo Duarte
+ *
+ * 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_PORTUGUESE, SUBLANG_DEFAULT
+
+IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+CAPTION "Propriedades para "
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "OK",     IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP
+  PUSHBUTTON    "Cancelar", IDCANCEL,58,122,50,14
+  PUSHBUTTON    "&Aplicar", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED
+  PUSHBUTTON    "Ajuda",   IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP
+  CONTROL       "Tab",    IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,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 "Assistente"
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "Finalizar",  IDC_FINISH_BUTTON,121,138,50,14
+  DEFPUSHBUTTON "&Avançar >", IDC_NEXT_BUTTON,121,138,50,14
+  PUSHBUTTON    "< &Voltar", IDC_BACK_BUTTON,71,138,50,14
+  PUSHBUTTON    "Cancelar",  IDCANCEL,178,138,50,14
+  PUSHBUTTON    "Ajuda",    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 "Personalizar barra de ferramentas"
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "&Fechar",     IDCANCEL,308,6,44,14
+  PUSHBUTTON    "R&estaurar",     IDC_RESET_BTN,308,23,44,14
+  PUSHBUTTON    "&Ajuda",      IDC_HELP_BTN,308,40,44,14
+  PUSHBUTTON    "A&cima",   IDC_MOVEUP_BTN,308,74,44,14
+  PUSHBUTTON    "A&baixo", IDC_MOVEDN_BTN,308,91,44,14
+  LTEXT         "Botões &disponíveis:", -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    "&Adicionar ->",    IDOK, 131, 42, 44, 14
+  PUSHBUTTON    "<- &Remover", IDC_REMOVE_BTN,131,62,44,14
+  LTEXT         "&Botões da barra de ferramentas:", -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    "Fechar"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDM_TODAY    "Hoje:"
+    IDM_GOTODAY  "Ir para hoje"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_SEPARATOR "Separador"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    HKY_NONE "Nenhum"
+}
index 3e953f7..e28dfee 100644 (file)
@@ -1,88 +1,88 @@
-/*\r
- * comctl (Russian resources)\r
- *\r
- * Copyright 2003 Igor Stepin\r
- *\r
- * This library is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU Lesser General Public\r
- * License as published by the Free Software Foundation; either\r
- * version 2.1 of the License, or (at your option) any later version.\r
- *\r
- * This library is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
- * Lesser General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU Lesser General Public\r
- * License along with this library; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
- */\r
-\r
-LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT\r
-\r
-IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE\r
-CAPTION "Ñâîéñòâà äëÿ "\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-  DEFPUSHBUTTON "OK",     IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP\r
-  PUSHBUTTON    "Îòìåíà", IDCANCEL,58,122,50,14\r
-  PUSHBUTTON    "Ïðè&ìåíèòü", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED\r
-  PUSHBUTTON    "&Ñïðàâêà",   IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP\r
-  CONTROL       "Tab",    IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114\r
-END\r
-\r
-\r
-IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE\r
-CAPTION "Ìàñòåð"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-  DEFPUSHBUTTON "Çàâåðøèòü",  IDC_FINISH_BUTTON,121,138,50,14\r
-  DEFPUSHBUTTON "&Äàëåå >", IDC_NEXT_BUTTON,121,138,50,14\r
-  PUSHBUTTON    "< &Íàçàä", IDC_BACK_BUTTON,71,138,50,14\r
-  PUSHBUTTON    "Îòìåíà",  IDCANCEL,178,138,50,14\r
-  PUSHBUTTON    "&Ñïðàâêà",    IDHELP,235,138,50,14,WS_GROUP\r
-  LTEXT         "",        IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN\r
-  CONTROL       "Tab",     IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5\r
-END\r
-\r
-\r
-IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Íàñòðîéêà ïàíåëè èíñòðóìåíòîâ"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-  DEFPUSHBUTTON "&Çàêðûòü",     IDCANCEL,308,6,44,14\r
-  PUSHBUTTON    "Ñ&áðîñèòü",     IDC_RESET_BTN,308,23,44,14\r
-  PUSHBUTTON    "&Ñïðàâêà",      IDC_HELP_BTN,308,40,44,14\r
-  PUSHBUTTON    "Ïåðåìåñòèòü &ââåðõ",   IDC_MOVEUP_BTN,308,74,44,14\r
-  PUSHBUTTON    "Ïåðåìåñòèòü &âíèç", IDC_MOVEDN_BTN,308,91,44,14\r
-  LTEXT         "&Äîñòóïíûå êíîïêè:", -1,4,5,84,10\r
-  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\r
-  PUSHBUTTON    "&Äîáàâèòü ->",    IDOK, 131, 42, 44, 14\r
-  PUSHBUTTON    "<- &Óäàëèòü", IDC_REMOVE_BTN,131,62,44,14\r
-  LTEXT         "&Êíîïêè ïàíåëè èíñòðóìåíòîâ:", -1,182,5,78,10\r
-  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\r
-END\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    IDS_CLOSE    "Çàêðûòü"\r
-}\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    IDM_TODAY    "Ñåãîäíÿ:"\r
-    IDM_GOTODAY  "Òåêóùàÿ äàòà"\r
-}\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    IDS_SEPARATOR "Ðàçäåëèòåëü"\r
-}\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    HKY_NONE "Íåò"\r
-}\r
+/*
+ * comctl (Russian resources)
+ *
+ * Copyright 2003 Igor Stepin
+ *
+ * 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_RUSSIAN, SUBLANG_DEFAULT
+
+IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+CAPTION "Ñâîéñòâà äëÿ "
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "OK",     IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP
+  PUSHBUTTON    "Îòìåíà", IDCANCEL,58,122,50,14
+  PUSHBUTTON    "Ïðè&ìåíèòü", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED
+  PUSHBUTTON    "&Ñïðàâêà",   IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP
+  CONTROL       "Tab",    IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,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 "&Äàëåå >", IDC_NEXT_BUTTON,121,138,50,14
+  PUSHBUTTON    "< &Íàçàä", IDC_BACK_BUTTON,71,138,50,14
+  PUSHBUTTON    "Îòìåíà",  IDCANCEL,178,138,50,14
+  PUSHBUTTON    "&Ñïðàâêà",    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 "Íàñòðîéêà ïàíåëè èíñòðóìåíòîâ"
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "&Çàêðûòü",     IDCANCEL,308,6,44,14
+  PUSHBUTTON    "Ñ&áðîñèòü",     IDC_RESET_BTN,308,23,44,14
+  PUSHBUTTON    "&Ñïðàâêà",      IDC_HELP_BTN,308,40,44,14
+  PUSHBUTTON    "Ïåðåìåñòèòü &ââåðõ",   IDC_MOVEUP_BTN,308,74,44,14
+  PUSHBUTTON    "Ïåðåìåñòèòü &âíèç", IDC_MOVEDN_BTN,308,91,44,14
+  LTEXT         "&Äîñòóïíûå êíîïêè:", -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         "&Êíîïêè ïàíåëè èíñòðóìåíòîâ:", -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    "Ñåãîäíÿ:"
+    IDM_GOTODAY  "Òåêóùàÿ äàòà"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_SEPARATOR "Ðàçäåëèòåëü"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    HKY_NONE "Íåò"
+}
index fd32130..e780b33 100644 (file)
@@ -1,81 +1,81 @@
-/*\r
- * Copyright 2002-2003 Rok Mandeljc <rok.mandeljc@gimb.org>\r
- *\r
- * This library is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU Lesser General Public\r
- * License as published by the Free Software Foundation; either\r
- * version 2.1 of the License, or (at your option) any later version.\r
- *\r
- * This library is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
- * Lesser General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU Lesser General Public\r
- * License along with this library; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
- */\r
-\r
-LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT\r
-\r
-IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE\r
-CAPTION "Lastnosti"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-  DEFPUSHBUTTON "V redu",     IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP\r
-  PUSHBUTTON    "Preklièi", IDCANCEL,58,122,50,14\r
-  PUSHBUTTON    "&Uporabi", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED\r
-  PUSHBUTTON    "Pomoè",   IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP\r
-  CONTROL       "Tab",    IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,4,4,212,114\r
-END\r
-\r
-\r
-IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE\r
-CAPTION "Èarovnik"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-  DEFPUSHBUTTON "Dokonèaj",  IDC_FINISH_BUTTON,121,138,50,14\r
-  DEFPUSHBUTTON "Naprej >", IDC_NEXT_BUTTON,121,138,50,14\r
-  PUSHBUTTON    "< Na&zaj", IDC_BACK_BUTTON,71,138,50,14\r
-  PUSHBUTTON    "Preklièi",  IDCANCEL,178,138,50,14\r
-  PUSHBUTTON    "Pomoè",    IDHELP,235,138,50,14,WS_GROUP\r
-  LTEXT         "",        IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN\r
-  CONTROL       "Tab",     IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5\r
-END\r
-\r
-\r
-IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU\r
-CAPTION "Prilagoditev orodne vrstice"\r
-FONT 8, "MS Sans Serif"\r
-BEGIN\r
-  DEFPUSHBUTTON "&Zapri",     IDCANCEL,308,6,44,14\r
-  PUSHBUTTON    "Po&nastavi",     IDC_RESET_BTN,308,23,44,14\r
-  PUSHBUTTON    "&Pomoè",      IDC_HELP_BTN,308,40,44,14\r
-  PUSHBUTTON    "N&avzgor",   IDC_MOVEUP_BTN,308,74,44,14\r
-  PUSHBUTTON    "Na&vzdol", IDC_MOVEDN_BTN,308,91,44,14\r
-  LTEXT         "&Gumbi na voljo:", -1,4,5,84,10\r
-  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\r
-  PUSHBUTTON    "&Dodaj ->",    IDOK, 131, 42, 44, 14\r
-  PUSHBUTTON    "<- &Odstrani", IDC_REMOVE_BTN,131,62,44,14\r
-  LTEXT         "G&umbi orodne vrstice:", -1,182,5,78,10\r
-  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\r
-END\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    IDS_CLOSE    "Zapri"\r
-}\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    IDM_TODAY    "Danes:"\r
-    IDM_GOTODAY  "&Poglejte danes"\r
-}\r
-\r
-STRINGTABLE DISCARDABLE\r
-{\r
-    IDS_SEPARATOR "Loèilo"\r
-}\r
+/*
+ * Copyright 2002-2003 Rok Mandeljc <rok.mandeljc@gimb.org>
+ *
+ * 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_SLOVENIAN, SUBLANG_DEFAULT
+
+IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+CAPTION "Lastnosti"
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "V redu",     IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP
+  PUSHBUTTON    "Preklièi", IDCANCEL,58,122,50,14
+  PUSHBUTTON    "&Uporabi", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED
+  PUSHBUTTON    "Pomoè",   IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP
+  CONTROL       "Tab",    IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP,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 "Èarovnik"
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "Dokonèaj",  IDC_FINISH_BUTTON,121,138,50,14
+  DEFPUSHBUTTON "Naprej >", IDC_NEXT_BUTTON,121,138,50,14
+  PUSHBUTTON    "< Na&zaj", IDC_BACK_BUTTON,71,138,50,14
+  PUSHBUTTON    "Preklièi",  IDCANCEL,178,138,50,14
+  PUSHBUTTON    "Pomoè",    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 "Prilagoditev orodne vrstice"
+FONT 8, "MS Sans Serif"
+BEGIN
+  DEFPUSHBUTTON "&Zapri",     IDCANCEL,308,6,44,14
+  PUSHBUTTON    "Po&nastavi",     IDC_RESET_BTN,308,23,44,14
+  PUSHBUTTON    "&Pomoè",      IDC_HELP_BTN,308,40,44,14
+  PUSHBUTTON    "N&avzgor",   IDC_MOVEUP_BTN,308,74,44,14
+  PUSHBUTTON    "Na&vzdol", IDC_MOVEDN_BTN,308,91,44,14
+  LTEXT         "&Gumbi na voljo:", -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    "&Dodaj ->",    IDOK, 131, 42, 44, 14
+  PUSHBUTTON    "<- &Odstrani", IDC_REMOVE_BTN,131,62,44,14
+  LTEXT         "G&umbi orodne vrstice:", -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    "Zapri"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDM_TODAY    "Danes:"
+    IDM_GOTODAY  "&Poglejte danes"
+}
+
+STRINGTABLE DISCARDABLE
+{
+    IDS_SEPARATOR "Loèilo"
+}
index a4b1fd7..34cb8e8 100644 (file)
@@ -807,8 +807,8 @@ STATUSBAR_WMDestroy (STATUSWINDOWINFO *infoPtr)
     if (infoPtr->hwndToolTip)
        DestroyWindow (infoPtr->hwndToolTip);
 
-    Free (infoPtr);
     SetWindowLongW(infoPtr->Self, 0, 0);
+    Free (infoPtr);
     return 0;
 }
 
index fddb4e8..eacef5f 100644 (file)
@@ -79,7 +79,7 @@ typedef struct
   BOOL       DoRedraw;        /* flag for redrawing when tab contents is changed*/
   BOOL       needsScrolling;  /* TRUE if the size of the tabs is greater than
                               * the size of the control */
-  BOOL      fSizeSet;        /* was the size of the tabs explicitly set? */
+  BOOL       fHeightSet;      /* was the height of the tabs explicitly set? */
   BOOL       bUnicode;        /* Unicode control? */
   HWND       hwndUpDown;      /* Updown control used for scrolling */
 } TAB_INFO;
@@ -93,7 +93,7 @@ typedef struct
 #define DISPLAY_AREA_PADDINGY   2
 #define CONTROL_BORDER_SIZEX    2
 #define CONTROL_BORDER_SIZEY    2
-#define BUTTON_SPACINGX         4
+#define BUTTON_SPACINGX         3
 #define BUTTON_SPACINGY         4
 #define FLAT_BTN_SPACINGX       8
 #define DEFAULT_TAB_WIDTH       96
@@ -344,11 +344,10 @@ static BOOL TAB_InternalGetItemRect(
     itemRect->bottom = clientRect.top +
                       infoPtr->tabHeight +
                       itemRect->top * (infoPtr->tabHeight - 2) +
-                      ((lStyle & TCS_BUTTONS) ? itemRect->top * BUTTON_SPACINGY : 0);
+                      ((lStyle & TCS_BUTTONS) ? itemRect->top * BUTTON_SPACINGY : SELECTED_TAB_OFFSET);
     itemRect->top = clientRect.top +
-                   SELECTED_TAB_OFFSET +
                    itemRect->top * (infoPtr->tabHeight - 2) +
-                   ((lStyle & TCS_BUTTONS) ? itemRect->top * BUTTON_SPACINGY : 0);
+                   ((lStyle & TCS_BUTTONS) ? itemRect->top * BUTTON_SPACINGY : SELECTED_TAB_OFFSET);
  }
 
   /*
@@ -1072,6 +1071,7 @@ static void TAB_SetItemBounds (HWND hwnd)
   INT         iTemp;
   RECT*       rcItem;
   INT         iIndex;
+  INT         icon_width = 0;
 
   /*
    * We need to get text information so we need a DC and we need to select
@@ -1102,7 +1102,7 @@ static void TAB_SetItemBounds (HWND hwnd)
   curItemLeftPos = 0;
   curItemRowCount = infoPtr->uNumItem ? 1 : 0;
 
-  if (!(lStyle & TCS_FIXEDWIDTH) && !((lStyle & TCS_OWNERDRAWFIXED) && infoPtr->fSizeSet) )
+  if (!(infoPtr->fHeightSet))
   {
     int item_height;
     int icon_height = 0;
@@ -1134,38 +1134,36 @@ static void TAB_SetItemBounds (HWND hwnd)
 
   TRACE("client right=%ld\n", clientRect.right);
 
+  /* Get the icon width */
+  if (infoPtr->himl)
+  {
+    ImageList_GetIconSize(infoPtr->himl, &icon_width, 0);
+
+    if (lStyle & TCS_FIXEDWIDTH)
+      icon_width += 4;
+    else
+      /* Add padding if icon is present */
+      icon_width += infoPtr->uHItemPadding;
+  }
+
   for (curItem = 0; curItem < infoPtr->uNumItem; curItem++)
   {
     /* Set the leftmost position of the tab. */
     infoPtr->items[curItem].rect.left = curItemLeftPos;
 
-    if ( (lStyle & TCS_FIXEDWIDTH) || ((lStyle & TCS_OWNERDRAWFIXED) && infoPtr->fSizeSet))
+    if (lStyle & TCS_FIXEDWIDTH)
     {
       infoPtr->items[curItem].rect.right = infoPtr->items[curItem].rect.left +
-                                           infoPtr->tabWidth +
-                                           2 * infoPtr->uHItemPadding;
+        max(infoPtr->tabWidth, icon_width);
     }
     else
     {
-      int icon_width  = 0;
       int num = 2;
 
       /* Calculate how wide the tab is depending on the text it contains */
       GetTextExtentPoint32W(hdc, infoPtr->items[curItem].pszText,
                             lstrlenW(infoPtr->items[curItem].pszText), &size);
 
-      /* under Windows, there seems to be a minimum width of 2x the height
-       * for button style tabs */
-      if (lStyle & TCS_BUTTONS)
-             size.cx = max(size.cx, 2 * (infoPtr->tabHeight - 2));
-
-      /* Add the icon width */
-      if (infoPtr->himl)
-      {
-        ImageList_GetIconSize(infoPtr->himl, &icon_width, 0);
-        num++;
-      }
-
       infoPtr->items[curItem].rect.right = infoPtr->items[curItem].rect.left +
                                            size.cx + icon_width +
                                            num * infoPtr->uHItemPadding;
@@ -1215,7 +1213,7 @@ static void TAB_SetItemBounds (HWND hwnd)
      */
     if (lStyle & TCS_BUTTONS)
     {
-      curItemLeftPos = infoPtr->items[curItem].rect.right + 1;
+      curItemLeftPos = infoPtr->items[curItem].rect.right + BUTTON_SPACINGX;
       if (lStyle & TCS_FLATBUTTONS)
         curItemLeftPos += FLAT_BTN_SPACINGX;
     }
@@ -1547,7 +1545,7 @@ TAB_DrawItemInterior
 
     /* used to center the icon and text in the tab */
     RECT rcText;
-    INT center_offset;
+    INT center_offset_h, center_offset_v;
 
     /*
      * Deflate the rectangle to acount for the padding
@@ -1585,34 +1583,46 @@ TAB_DrawItemInterior
       ImageList_GetIconSize(infoPtr->himl, &cx, &cy);
 
       if(lStyle & TCS_VERTICAL)
-        center_offset = ((drawRect->bottom - drawRect->top) - (cy + infoPtr->uHItemPadding + (rcText.right - rcText.left))) / 2;
+      {
+        center_offset_h = ((drawRect->bottom - drawRect->top) - (cy + infoPtr->uHItemPadding + (rcText.right  - rcText.left))) / 2;
+        center_offset_v = ((drawRect->right - drawRect->left) - (cx + infoPtr->uVItemPadding)) / 2;
+      }
       else
-        center_offset = ((drawRect->right - drawRect->left) - (cx + infoPtr->uHItemPadding + (rcText.right - rcText.left))) / 2;
+      {
+        center_offset_h = ((drawRect->right - drawRect->left) - (cx + infoPtr->uHItemPadding + (rcText.right  - rcText.left))) / 2;
+        center_offset_v = ((drawRect->bottom - drawRect->top) - (cy + infoPtr->uVItemPadding)) / 2;
+      }
+
+      if ((lStyle & TCS_FIXEDWIDTH &&
+           lStyle & (TCS_FORCELABELLEFT | TCS_FORCEICONLEFT)) ||
+         (center_offset_h < 0))
+       center_offset_h = 0;
 
       TRACE("for <%s>, c_o=%d, draw=(%ld,%ld)-(%ld,%ld), textlen=%ld\n",
-         debugstr_w(infoPtr->items[iItem].pszText), center_offset,
+         debugstr_w(infoPtr->items[iItem].pszText), center_offset_h,
          drawRect->left, drawRect->top, drawRect->right, drawRect->bottom,
          (rcText.right-rcText.left));
 
       if((lStyle & TCS_VERTICAL) && (lStyle & TCS_BOTTOM))
       {
-        rcImage.top = drawRect->top + center_offset;
-        rcImage.left = drawRect->right - cx; /* if tab is TCS_VERTICAL and TCS_BOTTOM, the text is drawn from the */
-                                             /* right side of the tab, but the image still uses the left as its x position */
-                                             /* this keeps the image always drawn off of the same side of the tab */
+        rcImage.top  = drawRect->top + center_offset_h;
+       /* if tab is TCS_VERTICAL and TCS_BOTTOM, the text is drawn from the */
+       /* right side of the tab, but the image still uses the left as its x position */
+       /* this keeps the image always drawn off of the same side of the tab */
+        rcImage.left = drawRect->right - cx - center_offset_v;
         drawRect->top = rcImage.top + (cx + infoPtr->uHItemPadding);
       }
       else if(lStyle & TCS_VERTICAL)
       {
-        rcImage.top = drawRect->bottom - cy - center_offset;
-       rcImage.left--;
+        rcImage.top  = drawRect->bottom - cy - center_offset_h;
+       rcImage.left = drawRect->left + center_offset_v;
         drawRect->bottom = rcImage.top - infoPtr->uHItemPadding;
       }
       else /* normal style, whether TCS_BOTTOM or not */
       {
-        rcImage.left = drawRect->left + center_offset + 3;
+        rcImage.left = drawRect->left + center_offset_h + 3;
         drawRect->left = rcImage.left + cx + infoPtr->uHItemPadding;
-       rcImage.top -= (lStyle & TCS_BOTTOM) ? 2 : 1;
+       rcImage.top = drawRect->top + center_offset_v;
       }
 
       TRACE("drawing image=%d, left=%ld, top=%ld\n",
@@ -1626,33 +1636,47 @@ TAB_DrawItemInterior
         rcImage.top,
         ILD_NORMAL
         );
-    } else /* no image, so just shift the drawRect borders around */
+    }
+    else /* no image, so just shift the drawRect borders around */
     {
       if(lStyle & TCS_VERTICAL)
       {
-        center_offset = 0;
+        center_offset_h = 0;
         /*
         currently the rcText rect is flawed because the rotated font does not
         often match the horizontal font. So leave this as 0
         ((drawRect->bottom - drawRect->top) - (rcText.right - rcText.left)) / 2;
         */
         if(lStyle & TCS_BOTTOM)
-          drawRect->top+=center_offset;
+          drawRect->top+=center_offset_h;
         else
-          drawRect->bottom-=center_offset;
+          drawRect->bottom-=center_offset_h;
       }
       else
       {
-        center_offset = ((drawRect->right - drawRect->left) - (rcText.right - rcText.left)) / 2;
-        drawRect->left+=center_offset;
+        center_offset_h = ((drawRect->right - drawRect->left) - (rcText.right - rcText.left)) / 2;
+        drawRect->left+=center_offset_h;
       }
     }
 
-    /* Draw the text */
-    if (lStyle & TCS_RIGHTJUSTIFY)
-      uHorizAlign = DT_CENTER;
+    if(lStyle & TCS_VERTICAL)
+    {
+      center_offset_v = ((drawRect->right - drawRect->left) - ((rcText.bottom - rcText.top) + infoPtr->uVItemPadding)) / 2;
+      drawRect->left += center_offset_v;
+    }
     else
+    {
+      center_offset_v = ((drawRect->bottom - drawRect->top) - ((rcText.bottom - rcText.top) + infoPtr->uVItemPadding)) / 2;
+      drawRect->top += center_offset_v;
+    }
+
+
+    /* Draw the text */
+    if ((lStyle & TCS_FIXEDWIDTH && lStyle & TCS_FORCELABELLEFT) ||
+       !center_offset_h)
       uHorizAlign = DT_LEFT;
+    else
+      uHorizAlign = DT_CENTER;
 
     if(lStyle & TCS_VERTICAL) /* if we are vertical rotate the text and each character */
     {
@@ -1793,7 +1817,7 @@ static void TAB_DrawItem(
       if (iItem == infoPtr->iSelected)
       {
         /* Background color */
-        if (!((lStyle & TCS_OWNERDRAWFIXED) && infoPtr->fSizeSet))
+        if (!(lStyle & TCS_OWNERDRAWFIXED))
        {
               DeleteObject(hbr);
               hbr = GetSysColorBrush(COLOR_SCROLLBAR);
@@ -2334,36 +2358,41 @@ static void TAB_InvalidateTabArea(
   RECT clientRect, r;
   DWORD lStyle = GetWindowLongA(hwnd, GWL_STYLE);
   INT lastRow = infoPtr->uNumRows - 1;
+  RECT rect;
 
   if (lastRow < 0) return;
 
   GetClientRect(hwnd, &clientRect);
 
+  TAB_InternalGetItemRect(hwnd, infoPtr, infoPtr->uNumItem-1 , &rect, NULL);
   if ((lStyle & TCS_BOTTOM) && !(lStyle & TCS_VERTICAL))
   {
     clientRect.top = clientRect.bottom -
                    infoPtr->tabHeight -
                    lastRow * (infoPtr->tabHeight - 2) -
                    ((lStyle & TCS_BUTTONS) ? lastRow * BUTTON_SPACINGY : 0) - 3;
+    clientRect.right = clientRect.left + rect.right + 2 * SELECTED_TAB_OFFSET;
   }
   else if((lStyle & TCS_BOTTOM) && (lStyle & TCS_VERTICAL))
   {
     clientRect.left = clientRect.right - infoPtr->tabHeight -
                       lastRow * (infoPtr->tabHeight - 2) -
                       ((lStyle & TCS_BUTTONS) ? lastRow * BUTTON_SPACINGY : 0) - 2;
+    clientRect.bottom = clientRect.top + rect.bottom + 2 * SELECTED_TAB_OFFSET;
   }
   else if(lStyle & TCS_VERTICAL)
   {
     clientRect.right = clientRect.left + infoPtr->tabHeight +
                        lastRow * (infoPtr->tabHeight - 2) -
                       ((lStyle & TCS_BUTTONS) ? lastRow * BUTTON_SPACINGY : 0) + 2;
-
+    clientRect.bottom = clientRect.top + rect.bottom + 2 * SELECTED_TAB_OFFSET;
   }
   else
   {
     clientRect.bottom = clientRect.top + infoPtr->tabHeight +
                       lastRow * (infoPtr->tabHeight - 2) +
                       ((lStyle & TCS_BUTTONS) ? lastRow * BUTTON_SPACINGY : 0) + 2;
+    clientRect.right = clientRect.left + rect.right + 2 * SELECTED_TAB_OFFSET;
   }
   
   /* Punch out the updown control */
@@ -2385,15 +2414,20 @@ TAB_Paint (HWND hwnd, WPARAM wParam)
   HDC hdc;
   PAINTSTRUCT ps;
 
-  hdc = wParam== 0 ? BeginPaint (hwnd, &ps) : (HDC)wParam;
-
-  TRACE("erase %d, rect=(%ld,%ld)-(%ld,%ld)\n",
-       ps.fErase,
-       ps.rcPaint.left,ps.rcPaint.top,ps.rcPaint.right,ps.rcPaint.bottom);
+  if (wParam == 0)
+  {
+    hdc = BeginPaint (hwnd, &ps);
+    TRACE("erase %d, rect=(%ld,%ld)-(%ld,%ld)\n",
+         ps.fErase,
+         ps.rcPaint.left,ps.rcPaint.top,ps.rcPaint.right,ps.rcPaint.bottom);
 
-  if (ps.fErase)
+    if (ps.fErase)
       TAB_EraseBackground (hwnd, hdc);
 
+  } else {
+    hdc = (HDC)wParam;
+  }
+    
   TAB_Refresh (hwnd, hdc);
 
   if(!wParam)
@@ -2557,20 +2591,34 @@ TAB_SetItemSize (HWND hwnd, WPARAM wParam, LPARAM lParam)
   TAB_INFO *infoPtr = TAB_GetInfoPtr(hwnd);
   LONG lStyle = GetWindowLongA(hwnd, GWL_STYLE);
   LONG lResult = 0;
+  BOOL bNeedPaint = FALSE;
 
-  TRACE("\n");
-  if ((lStyle & TCS_FIXEDWIDTH) || (lStyle & TCS_OWNERDRAWFIXED))
+  lResult = MAKELONG(infoPtr->tabWidth, infoPtr->tabHeight);
+
+  /* UNDOCUMENTED: If requested Width or Height is 0 this means that program wants to use auto size. */
+  if (lStyle & TCS_FIXEDWIDTH && (infoPtr->tabWidth != (INT)LOWORD(lParam)))
   {
-    lResult = MAKELONG(infoPtr->tabWidth, infoPtr->tabHeight);
-    /* UNDOCUMENTED: If requested Width or Height is 0 this means that program wants to use default. */    
-    if (LOWORD(lParam)) infoPtr->tabWidth = max((INT)LOWORD(lParam), infoPtr->tabMinWidth);
-    if (HIWORD(lParam)) infoPtr->tabHeight = (INT)HIWORD(lParam);
-    TRACE("was h=%d,w=%d, now h=%d,w=%d\n",
-         HIWORD(lResult), LOWORD(lResult),
-         infoPtr->tabHeight, infoPtr->tabWidth);
+    infoPtr->tabWidth = max((INT)LOWORD(lParam), infoPtr->tabMinWidth);
+    bNeedPaint = TRUE;
+  }
+
+  if (infoPtr->tabHeight != (INT)HIWORD(lParam))
+  {
+    if ((infoPtr->fHeightSet = ((INT)HIWORD(lParam) != 0)))
+      infoPtr->tabHeight = (INT)HIWORD(lParam);
+
+    bNeedPaint = TRUE;
   }
-  infoPtr->fSizeSet = TRUE;
+  TRACE("was h=%d,w=%d, now h=%d,w=%d\n",
+       HIWORD(lResult), LOWORD(lResult),
+       infoPtr->tabHeight, infoPtr->tabWidth);
 
+  if (bNeedPaint)
+  {
+    TAB_SetItemBounds(hwnd);
+    RedrawWindow(hwnd, NULL, NULL, RDW_ERASE | RDW_INVALIDATE | RDW_UPDATENOW);
+  }
+    
   return lResult;
 }
 
@@ -2776,61 +2824,63 @@ TAB_GetItemW (HWND hwnd, WPARAM wParam, LPARAM lParam)
 static LRESULT
 TAB_DeleteItem (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-  TAB_INFO *infoPtr = TAB_GetInfoPtr(hwnd);
-  INT iItem = (INT) wParam;
-  BOOL bResult = FALSE;
+    TAB_INFO *infoPtr = TAB_GetInfoPtr(hwnd);
+    INT iItem = (INT) wParam;
+    BOOL bResult = FALSE;
 
-  if ((iItem >= 0) && (iItem < infoPtr->uNumItem))
-  {
-    TAB_ITEM *oldItems = infoPtr->items;
+    if ((iItem >= 0) && (iItem < infoPtr->uNumItem))
+    {
+       TAB_ITEM *oldItems = infoPtr->items;
+       
+       TAB_InvalidateTabArea(hwnd, infoPtr);
 
-    infoPtr->uNumItem--;
-    infoPtr->items = Alloc(sizeof (TAB_ITEM) * infoPtr->uNumItem);
+       infoPtr->uNumItem--;
+       infoPtr->items = Alloc(sizeof (TAB_ITEM) * infoPtr->uNumItem);
 
-    if (iItem > 0)
-      memcpy(&infoPtr->items[0], &oldItems[0], iItem * sizeof(TAB_ITEM));
+       if (iItem > 0)
+           memcpy(&infoPtr->items[0], &oldItems[0], iItem * sizeof(TAB_ITEM));
 
-    if (iItem < infoPtr->uNumItem)
-      memcpy(&infoPtr->items[iItem], &oldItems[iItem + 1],
-              (infoPtr->uNumItem - iItem) * sizeof(TAB_ITEM));
+       if (iItem < infoPtr->uNumItem)
+           memcpy(&infoPtr->items[iItem], &oldItems[iItem + 1],
+                  (infoPtr->uNumItem - iItem) * sizeof(TAB_ITEM));
 
-    Free(oldItems);
+       Free(oldItems);
 
-    /* Readjust the selected index */
-    if ((iItem == infoPtr->iSelected) && (iItem > 0))
-      infoPtr->iSelected--;
+       /* Readjust the selected index */
+       if ((iItem == infoPtr->iSelected) && (iItem > 0))
+           infoPtr->iSelected--;
 
-    if (iItem < infoPtr->iSelected)
-      infoPtr->iSelected--;
+       if (iItem < infoPtr->iSelected)
+           infoPtr->iSelected--;
 
-    if (infoPtr->uNumItem == 0)
-      infoPtr->iSelected = -1;
+       if (infoPtr->uNumItem == 0)
+           infoPtr->iSelected = -1;
 
-    /* Reposition and repaint tabs */
-    TAB_SetItemBounds(hwnd);
-    TAB_InvalidateTabArea(hwnd,infoPtr);
+       /* Reposition and repaint tabs */
+       TAB_SetItemBounds(hwnd);
 
-    bResult = TRUE;
-  }
+       bResult = TRUE;
+    }
 
-  return bResult;
+    return bResult;
 }
 
 static LRESULT
 TAB_DeleteAllItems (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-   TAB_INFO *infoPtr = TAB_GetInfoPtr(hwnd);
-
-  Free (infoPtr->items);
-  infoPtr->uNumItem = 0;
-  infoPtr->iSelected = -1;
-  if (infoPtr->iHotTracked >= 0)
-    KillTimer(hwnd, TAB_HOTTRACK_TIMER);
-  infoPtr->iHotTracked = -1;
+    TAB_INFO *infoPtr = TAB_GetInfoPtr(hwnd);
+   
+    TAB_InvalidateTabArea(hwnd,infoPtr);  
 
-  TAB_SetItemBounds(hwnd);
-  TAB_InvalidateTabArea(hwnd,infoPtr);
-  return TRUE;
+    Free (infoPtr->items);
+    infoPtr->uNumItem = 0;
+    infoPtr->iSelected = -1;
+    if (infoPtr->iHotTracked >= 0)
+       KillTimer(hwnd, TAB_HOTTRACK_TIMER);
+    infoPtr->iHotTracked = -1;
+    
+    TAB_SetItemBounds(hwnd);
+    return TRUE;
 }
 
 
@@ -2966,7 +3016,7 @@ TAB_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
   infoPtr->needsScrolling  = FALSE;
   infoPtr->hwndUpDown      = 0;
   infoPtr->leftmostVisible = 0;
-  infoPtr->fSizeSet       = FALSE;
+  infoPtr->fHeightSet      = FALSE;
   infoPtr->bUnicode       = IsWindowUnicode (hwnd);
 
   TRACE("Created tab control, hwnd [%p]\n", hwnd);
@@ -3019,8 +3069,7 @@ TAB_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
 
   /* Initialize the width of a tab. */
   infoPtr->tabWidth = DEFAULT_TAB_WIDTH;
-  /* The minimum width is the default width at creation */
-  infoPtr->tabMinWidth = DEFAULT_TAB_WIDTH;
+  infoPtr->tabMinWidth = 0;
 
   TRACE("tabH=%d, tabW=%d\n", infoPtr->tabHeight, infoPtr->tabWidth);
 
index c02f7a2..f158f39 100644 (file)
@@ -176,6 +176,12 @@ typedef struct
     WCHAR    text[64];
 } CUSTOMBUTTON, *PCUSTOMBUTTON;
 
+typedef enum
+{
+    IMAGE_LIST_DEFAULT,
+    IMAGE_LIST_HOT,
+    IMAGE_LIST_DISABLED
+} IMAGE_LIST_TYPE;
 
 #define SEPARATOR_WIDTH    8
 #define TOP_BORDER         2
@@ -364,12 +370,11 @@ TOOLBAR_IsValidBitmapIndex(TOOLBAR_INFO *infoPtr, INT index)
 * function. It returns TRUE if the image was drawn, FALSE otherwise.
 */
 static BOOL
-TOOLBAR_DrawImageList (TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, HIMAGELIST himl,
+TOOLBAR_DrawImageList (TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, IMAGE_LIST_TYPE imagelist,
                        HDC hdc, UINT left, UINT top, UINT draw_flags)
 {
     INT index;
-
-    if (!himl) return FALSE;
+    HIMAGELIST himl;
 
     if (!TOOLBAR_IsValidBitmapIndex(infoPtr,btnPtr->iBitmap)) {
        if (btnPtr->iBitmap == I_IMAGENONE) return FALSE;
@@ -385,6 +390,29 @@ TOOLBAR_DrawImageList (TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, HIMAGELIST h
            index);
        return FALSE;
     }
+
+    switch(imagelist)
+    {
+    case IMAGE_LIST_DEFAULT:
+        himl = GETDEFIMAGELIST(infoPtr, GETHIMLID(infoPtr, btnPtr->iBitmap));
+        break;
+    case IMAGE_LIST_HOT:
+        himl = GETHOTIMAGELIST(infoPtr, GETHIMLID(infoPtr, btnPtr->iBitmap));
+        break;
+    case IMAGE_LIST_DISABLED:
+        himl = GETDISIMAGELIST(infoPtr, GETHIMLID(infoPtr, btnPtr->iBitmap));
+        break;
+    default:
+        himl = NULL;
+        FIXME("Shouldn't reach here\n");
+    }
+
+    if (!himl)
+    {
+       TRACE("no image list, returning FALSE\n");
+       return FALSE;
+    }
+
     TRACE("drawing index=%d, himl=%p, left=%d, top=%d, flags=%08x\n",
          index, himl, left, top, draw_flags);
 
@@ -524,31 +552,32 @@ TOOLBAR_DrawArrow (HDC hdc, INT left, INT top, INT colorRef)
  */
 static void
 TOOLBAR_DrawString (TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr,
-                   HDC hdc, INT nState, DWORD dwStyle,
+                   HDC hdc, DWORD dwStyle,
                     RECT *rcText, LPWSTR lpText, NMTBCUSTOMDRAW *tbcd)
 {
     HFONT  hOldFont = 0;
     COLORREF clrOld = 0;
+    UINT state = tbcd->nmcd.uItemState;
 
     /* draw text */
     if (lpText) {
-       TRACE("string rect=(%ld,%ld)-(%ld,%ld)\n",
+       TRACE("string=%s rect=(%ld,%ld)-(%ld,%ld)\n", debugstr_w(lpText),
              rcText->left, rcText->top, rcText->right, rcText->bottom);
 
        hOldFont = SelectObject (hdc, infoPtr->hFont);
-       if (!(nState & TBSTATE_ENABLED)) {
+       if ((state & CDIS_HOT) && (infoPtr->dwItemCDFlag & TBCDRF_HILITEHOTTRACK )) {
+           clrOld = SetTextColor (hdc, tbcd->clrTextHighlight);
+       }
+       else if (state & CDIS_DISABLED) {
            clrOld = SetTextColor (hdc, tbcd->clrBtnHighlight);
            OffsetRect (rcText, 1, 1);
            DrawTextW (hdc, lpText, -1, rcText, infoPtr->dwDTFlags);
            SetTextColor (hdc, comctl32_color.clr3dShadow);
            OffsetRect (rcText, -1, -1);
        }
-       else if (nState & TBSTATE_INDETERMINATE) {
+       else if (state & CDIS_INDETERMINATE) {
            clrOld = SetTextColor (hdc, comctl32_color.clr3dShadow);
        }
-       else if (btnPtr->bHot && (infoPtr->dwItemCDFlag & TBCDRF_HILITEHOTTRACK )) {
-           clrOld = SetTextColor (hdc, tbcd->clrTextHighlight);
-       }
        else {
            clrOld = SetTextColor (hdc, tbcd->clrText);
        }
@@ -636,7 +665,6 @@ TOOLBAR_DrawButton (HWND hwnd, TBUTTON_INFO *btnPtr, HDC hdc)
     NMTBCUSTOMDRAW tbcd;
     DWORD ntfret;
     INT offset;
-    HIMAGELIST himlDef;
 
     if (btnPtr->fsState & TBSTATE_HIDDEN)
        return;
@@ -734,6 +762,10 @@ TOOLBAR_DrawButton (HWND hwnd, TBUTTON_INFO *btnPtr, HDC hdc)
     tbcd.rcText.top = 0;
     tbcd.rcText.right = rcText.right - rc.left;
     tbcd.rcText.bottom = rcText.bottom - rc.top;
+    /* we use this state later on to decide how to draw the buttons */
+    /* NOTE: applications can and do alter this to customize their  */
+    /* toolbars */
+    tbcd.nmcd.uItemState = TOOLBAR_TranslateState(btnPtr);
 
     /* FIXME: what should these be set to ????? */
     tbcd.hbrMonoDither = 0;
@@ -749,7 +781,6 @@ TOOLBAR_DrawButton (HWND hwnd, TBUTTON_INFO *btnPtr, HDC hdc)
        tbcd.nmcd.hdc = hdc;
        tbcd.nmcd.rc = rc;
        tbcd.nmcd.dwItemSpec = btnPtr->idCommand;
-       tbcd.nmcd.uItemState = TOOLBAR_TranslateState(btnPtr);
        tbcd.nmcd.lItemlParam = btnPtr->dwData;
        ntfret = TOOLBAR_SendNotify ((NMHDR *)&tbcd, infoPtr, NM_CUSTOMDRAW);
        infoPtr->dwItemCustDraw = ntfret & 0xffff;
@@ -784,12 +815,31 @@ TOOLBAR_DrawButton (HWND hwnd, TBUTTON_INFO *btnPtr, HDC hdc)
        goto FINALNOTIFY;
     }
 
-    /* Determine index of image list */
-    himlDef = GETDEFIMAGELIST(infoPtr, GETHIMLID(infoPtr, btnPtr->iBitmap));
+    if ((dwStyle & TBSTYLE_FLAT) && (tbcd.nmcd.uItemState & CDIS_HOT))
+    {
+       if ( infoPtr->dwItemCDFlag & TBCDRF_HILITEHOTTRACK )
+       {
+            COLORREF oldclr;
+
+            oldclr = SetBkColor(hdc, tbcd.clrHighlightHotTrack);
+            ExtTextOutA(hdc, 0, 0, ETO_OPAQUE, &rc, NULL, 0, 0);
+            if (hasDropDownArrow)
+                ExtTextOutA(hdc, 0, 0, ETO_OPAQUE, &rcArrow, NULL, 0, 0);
+            SetBkColor(hdc, oldclr);
+       }
+       else
+       {
+            if (!(tbcd.nmcd.uItemState & CDIS_DISABLED) && !(infoPtr->dwItemCDFlag & TBCDRF_NOEDGES))
+            {
+                DrawEdge (hdc, &rc, BDR_RAISEDINNER, BF_RECT);
+                if (hasDropDownArrow)
+                   DrawEdge (hdc, &rcArrow, BDR_RAISEDINNER, BF_RECT);
+            }
+        }
+    }
 
     /* disabled */
-    if (!(btnPtr->fsState & TBSTATE_ENABLED)) {
-       HIMAGELIST himlDis = GETDISIMAGELIST(infoPtr, GETHIMLID(infoPtr, btnPtr->iBitmap));
+    if (tbcd.nmcd.uItemState & CDIS_DISABLED) {
        if (!(dwStyle & TBSTYLE_FLAT) && !(infoPtr->dwItemCDFlag & TBCDRF_NOEDGES))
        {
            DrawEdge (hdc, &rc, EDGE_RAISED,
@@ -805,17 +855,17 @@ TOOLBAR_DrawButton (HWND hwnd, TBUTTON_INFO *btnPtr, HDC hdc)
            TOOLBAR_DrawArrow(hdc, rcArrow.left, rcArrow.top + (rcArrow.bottom - rcArrow.top - ARROW_HEIGHT) / 2, COLOR_3DSHADOW);
        }
 
-       if (!TOOLBAR_DrawImageList (infoPtr, btnPtr, himlDis,
+       if (!TOOLBAR_DrawImageList (infoPtr, btnPtr, IMAGE_LIST_DISABLED,
                                   hdc, rcBitmap.left, rcBitmap.top,
                                   ILD_NORMAL))
            TOOLBAR_DrawMasked (infoPtr, btnPtr, hdc, rcBitmap.left, rcBitmap.top);
 
-       TOOLBAR_DrawString (infoPtr, btnPtr, hdc, btnPtr->fsState, dwStyle, &rcText, lpText, &tbcd);
+       TOOLBAR_DrawString (infoPtr, btnPtr, hdc, dwStyle, &rcText, lpText, &tbcd);
        goto FINALNOTIFY;
     }
 
     /* pressed TBSTYLE_BUTTON */
-    if (btnPtr->fsState & TBSTATE_PRESSED) {
+    if (tbcd.nmcd.uItemState & CDIS_SELECTED) {
        offset = (infoPtr->dwItemCDFlag & TBCDRF_NOOFFSET) ? 0 : 1;
        if (!(infoPtr->dwItemCDFlag & TBCDRF_NOEDGES))
        {
@@ -836,17 +886,17 @@ TOOLBAR_DrawButton (HWND hwnd, TBUTTON_INFO *btnPtr, HDC hdc)
         if (hasDropDownArrow)
            TOOLBAR_DrawArrow(hdc, rcArrow.left, rcArrow.top + (rcArrow.bottom - rcArrow.top - ARROW_HEIGHT) / 2, COLOR_WINDOWFRAME);
 
-       TOOLBAR_DrawImageList (infoPtr, btnPtr, himlDef,
+       TOOLBAR_DrawImageList (infoPtr, btnPtr, IMAGE_LIST_DEFAULT,
                               hdc, rcBitmap.left+offset, rcBitmap.top+offset,
                               ILD_NORMAL);
 
-       TOOLBAR_DrawString (infoPtr, btnPtr, hdc, btnPtr->fsState, dwStyle, &rcText, lpText, &tbcd);
+       TOOLBAR_DrawString (infoPtr, btnPtr, hdc, dwStyle, &rcText, lpText, &tbcd);
        goto FINALNOTIFY;
     }
 
     /* checked TBSTYLE_CHECK */
-    if ((btnPtr->fsStyle & TBSTYLE_CHECK) &&
-       (btnPtr->fsState & TBSTATE_CHECKED)) {
+    if ((tbcd.nmcd.uItemState & CDIS_CHECKED) &&
+       (btnPtr->fsStyle & TBSTYLE_CHECK)) {
        if (!(infoPtr->dwItemCDFlag & TBCDRF_NOEDGES))
        {
            if (dwStyle & TBSTYLE_FLAT)
@@ -859,80 +909,45 @@ TOOLBAR_DrawButton (HWND hwnd, TBUTTON_INFO *btnPtr, HDC hdc)
 
        TOOLBAR_DrawPattern (hdc, &rc);
 
-       TOOLBAR_DrawImageList (infoPtr, btnPtr, himlDef,
+       TOOLBAR_DrawImageList (infoPtr, btnPtr, IMAGE_LIST_DEFAULT,
                               hdc, rcBitmap.left+1, rcBitmap.top+1,
                               ILD_NORMAL);
 
-       TOOLBAR_DrawString (infoPtr, btnPtr, hdc, btnPtr->fsState, dwStyle, &rcText, lpText, &tbcd);
+       TOOLBAR_DrawString (infoPtr, btnPtr, hdc, dwStyle, &rcText, lpText, &tbcd);
        goto FINALNOTIFY;
     }
 
     /* indeterminate */
-    if (btnPtr->fsState & TBSTATE_INDETERMINATE) {
+    if (tbcd.nmcd.uItemState & CDIS_INDETERMINATE) {
        if (!(infoPtr->dwItemCDFlag & TBCDRF_NOEDGES))
            DrawEdge (hdc, &rc, EDGE_RAISED,
                      BF_SOFT | BF_RECT | BF_MIDDLE | BF_ADJUST);
 
        TOOLBAR_DrawPattern (hdc, &rc);
        TOOLBAR_DrawMasked (infoPtr, btnPtr, hdc, rcBitmap.left, rcBitmap.top);
-       TOOLBAR_DrawString (infoPtr, btnPtr, hdc, btnPtr->fsState, dwStyle, &rcText, lpText, &tbcd);
+       TOOLBAR_DrawString (infoPtr, btnPtr, hdc, dwStyle, &rcText, lpText, &tbcd);
        goto FINALNOTIFY;
     }
 
     /* normal state */
     if (dwStyle & TBSTYLE_FLAT)
     {
-       if (btnPtr->bHot)
-       {
-           if ( infoPtr->dwItemCDFlag & TBCDRF_HILITEHOTTRACK )
-           {
-               COLORREF oldclr;
-
-               oldclr = SetBkColor(hdc, tbcd.clrHighlightHotTrack);
-               ExtTextOutA(hdc, 0, 0, ETO_OPAQUE, &rc, NULL, 0, 0);
-               if (hasDropDownArrow)
-                   ExtTextOutA(hdc, 0, 0, ETO_OPAQUE, &rcArrow, NULL, 0, 0);
-               SetBkColor(hdc, oldclr);
-           }
-           else
-           {
-               if (!(infoPtr->dwItemCDFlag & TBCDRF_NOEDGES))
-               {
-                   DrawEdge (hdc, &rc, BDR_RAISEDINNER, BF_RECT);
-                   if (hasDropDownArrow)
-                       DrawEdge (hdc, &rcArrow, BDR_RAISEDINNER, BF_RECT);
-               }
-           }
-       }
-#if 1
-        else /* The following code needs to be removed after
-             * "hot item" support has been implemented for the
-             * case where it is being de-selected.
-             */
-       {
-            FrameRect(hdc, &rc, GetSysColorBrush(COLOR_BTNFACE));
-            if (hasDropDownArrow)
-            FrameRect(hdc, &rcArrow, GetSysColorBrush(COLOR_BTNFACE));
-       }
-#endif
-
         if (hasDropDownArrow)
            TOOLBAR_DrawArrow(hdc, rcArrow.left+1, rcArrow.top + (rcArrow.bottom - rcArrow.top - ARROW_HEIGHT) / 2, COLOR_WINDOWFRAME);
 
-       if (btnPtr->bHot) {
-            HIMAGELIST himlHot = GETHOTIMAGELIST(infoPtr, 
-                GETHIMLID(infoPtr, btnPtr->iBitmap));
-           /* if hot, attempt to draw with himlHot, if fails, use himlDef */
+       if (tbcd.nmcd.uItemState & CDIS_HOT) {
+           /* if hot, attempt to draw with hot image list, if fails, 
+              use default image list */
            if (!TOOLBAR_DrawImageList (infoPtr, btnPtr,
-                                       himlHot,
+                                       IMAGE_LIST_HOT,
                                        hdc, rcBitmap.left,
                                        rcBitmap.top, ILD_NORMAL))
-               TOOLBAR_DrawImageList (infoPtr, btnPtr, himlDef,
+               TOOLBAR_DrawImageList (infoPtr, btnPtr, IMAGE_LIST_DEFAULT,
                                       hdc, rcBitmap.left, rcBitmap.top,
                                       ILD_NORMAL);
        }
        else
-           TOOLBAR_DrawImageList (infoPtr, btnPtr, himlDef,
+           TOOLBAR_DrawImageList (infoPtr, btnPtr, IMAGE_LIST_DEFAULT,
                                   hdc, rcBitmap.left, rcBitmap.top,
                                   ILD_NORMAL);
     }
@@ -950,12 +965,13 @@ TOOLBAR_DrawButton (HWND hwnd, TBUTTON_INFO *btnPtr, HDC hdc)
            TOOLBAR_DrawArrow(hdc, rcArrow.left, rcArrow.top + (rcArrow.bottom - rcArrow.top - ARROW_HEIGHT) / 2, COLOR_WINDOWFRAME);
        }
 
-       TOOLBAR_DrawImageList (infoPtr, btnPtr, himlDef,
+       TOOLBAR_DrawImageList (infoPtr, btnPtr, IMAGE_LIST_DEFAULT,
                               hdc, rcBitmap.left, rcBitmap.top,
-                              ILD_NORMAL);}
+                              ILD_NORMAL);
+    }
 
 
-    TOOLBAR_DrawString (infoPtr, btnPtr, hdc, btnPtr->fsState, dwStyle, &rcText, lpText, &tbcd);
+    TOOLBAR_DrawString (infoPtr, btnPtr, hdc, dwStyle, &rcText, lpText, &tbcd);
 
  FINALNOTIFY:
     if (infoPtr->dwItemCustDraw & CDRF_NOTIFYPOSTPAINT)
@@ -2716,11 +2732,15 @@ TOOLBAR_AutoSize (HWND hwnd)
        cy = infoPtr->nHeight;
        cx = infoPtr->nWidth;
 
-       if (dwStyle & CCS_NOMOVEY) {
+       if ((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) {
+            GetWindowRect(hwnd, &window_rect);
+            y = parent_rect.bottom - ( window_rect.bottom - window_rect.top);
+        }
     }
 
     if (dwStyle & CCS_NOPARENTALIGN)
@@ -2737,10 +2757,9 @@ TOOLBAR_AutoSize (HWND hwnd)
     }
 
     infoPtr->bAutoSize = TRUE;
-    SetWindowPos (hwnd, HWND_TOP, parent_rect.left - x, parent_rect.top - y,
-                        cx, cy, uPosFlags);
-    /* The following line makes sure that the infoPtr->bAutoSize is turned off after
-     * the setwindowpos calls */
+    SetWindowPos (hwnd, HWND_TOP,  x, y, cx, cy, uPosFlags);
+    /* The following line makes sure that the infoPtr->bAutoSize is turned off
+     * after the setwindowpos calls */
     infoPtr->bAutoSize = FALSE;
 
     return 0;
@@ -2780,6 +2799,8 @@ TOOLBAR_ChangeBitmap (HWND hwnd, WPARAM wParam, LPARAM lParam)
     TBUTTON_INFO *btnPtr;
     INT nIndex;
 
+    TRACE("button %d, iBitmap now %d\n", wParam, LOWORD(lParam));
+
     nIndex = TOOLBAR_GetButtonIndex (infoPtr, (INT)wParam, FALSE);
     if (nIndex == -1)
        return FALSE;
@@ -4227,6 +4248,8 @@ TOOLBAR_SetHotImageList (HWND hwnd, WPARAM wParam, LPARAM lParam)
     if (infoPtr->iVersion >= 5)
         id = wParam;
 
+    TRACE("hwnd = %p, himl = %p, id = %d\n", hwnd, himl, id);
+
     himlTemp = TOOLBAR_InsertImageList(&infoPtr->himlHot, 
         &infoPtr->cimlHot, himl, id);
 
@@ -5170,10 +5193,9 @@ TOOLBAR_MouseMove (HWND hwnd, WPARAM wParam, LPARAM lParam)
 
     if (infoPtr->nOldHit != nHit)
     {
-       /* Remove the effect of an old hot button if the button was enabled and was
+       /* Remove the effect of an old hot button if the button was
           drawn with the hot button effect */
-       if(infoPtr->nOldHit >= 0 && infoPtr->nOldHit == infoPtr->nHotItem &&
-               (infoPtr->buttons[infoPtr->nOldHit].fsState & TBSTATE_ENABLED))
+       if(infoPtr->nOldHit >= 0 && infoPtr->nOldHit == infoPtr->nHotItem)
        {
            oldBtnPtr = &infoPtr->buttons[infoPtr->nOldHit];
            oldBtnPtr->bHot = FALSE;
@@ -5186,11 +5208,7 @@ TOOLBAR_MouseMove (HWND hwnd, WPARAM wParam, LPARAM lParam)
 
            infoPtr->nHotItem = nHit;
 
-            /* only enabled buttons show hot effect */
-            if(infoPtr->buttons[nHit].fsState & TBSTATE_ENABLED)
-            {
-                btnPtr->bHot = TRUE;
-            }
+            btnPtr->bHot = TRUE;
        }
 
        nmhotitem.dwFlags = HICF_MOUSE;
@@ -5208,7 +5226,7 @@ TOOLBAR_MouseMove (HWND hwnd, WPARAM wParam, LPARAM lParam)
        if (oldBtnPtr)
            InvalidateRect (hwnd, &oldBtnPtr->rect,
                            TOOLBAR_HasText(infoPtr, oldBtnPtr));
-       if (btnPtr && (btnPtr->fsState & TBSTATE_ENABLED))
+       if (btnPtr)
            InvalidateRect(hwnd, &btnPtr->rect,
                           TOOLBAR_HasText(infoPtr, btnPtr));
 
@@ -5483,7 +5501,7 @@ TOOLBAR_SetRedraw (HWND hwnd, WPARAM wParam, LPARAM lParam)
       *  According to testing V4.71 of COMCTL32 returns the
       *  *previous* status of the redraw flag (either 0 or 1)
       *  instead of the MSDN documented value of 0 if handled.
-      *  (For laughs see the "consistancy" with same function
+      *  (For laughs see the "consistency" with same function
       *   in rebar.)
       *
       *****************************************************/
@@ -5558,11 +5576,16 @@ TOOLBAR_Size (HWND hwnd, WPARAM wParam, LPARAM lParam)
            cy = infoPtr->nHeight;
            cx = infoPtr->nWidth;
 
-           if (dwStyle & CCS_NOMOVEY) {
+           if ((dwStyle & CCS_BOTTOM) == CCS_NOMOVEY) {
                GetWindowRect(hwnd, &window_rect);
                ScreenToClient(parent, (LPPOINT)&window_rect.left);
-               y = window_rect.top;
+                y = window_rect.top;
            }
+            if ((dwStyle & CCS_BOTTOM) == CCS_BOTTOM) {
+                GetWindowRect(hwnd, &window_rect);
+                y = parent_rect.bottom -
+                    ( window_rect.bottom - window_rect.top);
+            }
        }
 
        if (dwStyle & CCS_NOPARENTALIGN) {
@@ -5581,8 +5604,7 @@ TOOLBAR_Size (HWND hwnd, WPARAM wParam, LPARAM lParam)
            cx += GetSystemMetrics(SM_CYEDGE);
        }
 
-       SetWindowPos (hwnd, 0, parent_rect.left - x, parent_rect.top - y,
-                       cx, cy, uPosFlags | SWP_NOZORDER);
+       SetWindowPos (hwnd, 0,  x,  y, cx, cy, uPosFlags | SWP_NOZORDER);
     }
     return 0;
 }
index d0ae4de..61e5809 100644 (file)
@@ -97,16 +97,49 @@ typedef struct
 #define TIC_SELECTIONMARKMIN    0x100
 #define TIC_SELECTIONMARK       (TIC_SELECTIONMARKMAX | TIC_SELECTIONMARKMIN)
 
-static BOOL TRACKBAR_SendNotify (TRACKBAR_INFO *infoPtr, UINT code);
-
 static inline int 
-notify_customdraw(NMCUSTOMDRAW *pnmcd, int stage)
+notify_customdraw(TRACKBAR_INFO *infoPtr, NMCUSTOMDRAW *pnmcd, int stage)
 {
     pnmcd->dwDrawStage = stage;
-    return SendMessageW (GetParent(pnmcd->hdr.hwndFrom), WM_NOTIFY, 
+    return SendMessageW (infoPtr->hwndNotify, WM_NOTIFY, 
                         pnmcd->hdr.idFrom, (LPARAM)pnmcd);
 }
 
+static LRESULT notify_hdr(TRACKBAR_INFO *infoPtr, INT code, LPNMHDR pnmh)
+{
+    LRESULT result;
+    
+    TRACE("(code=%d)\n", code);
+
+    pnmh->hwndFrom = infoPtr->hwndSelf;
+    pnmh->idFrom = GetWindowLongW(infoPtr->hwndSelf, GWL_ID);
+    pnmh->code = code;
+    result = SendMessageW(infoPtr->hwndNotify, WM_NOTIFY,
+                         (WPARAM)pnmh->idFrom, (LPARAM)pnmh);
+
+    TRACE("  <= %ld\n", result);
+
+    return result;
+}
+
+static inline int notify(TRACKBAR_INFO *infoPtr, INT code)
+{
+    NMHDR nmh;
+    return notify_hdr(infoPtr, code, &nmh);
+}
+
+static BOOL
+notify_with_scroll (TRACKBAR_INFO *infoPtr, UINT code)
+{
+    BOOL bVert = GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE) & TBS_VERT;
+
+    TRACE("%x\n", code);
+
+    return (BOOL) SendMessageW (infoPtr->hwndNotify,
+                                bVert ? WM_VSCROLL : WM_HSCROLL,
+                               (WPARAM)code, (LPARAM)infoPtr->hwndSelf);
+}
+    
 static void TRACKBAR_RecalculateTics (TRACKBAR_INFO *infoPtr)
 {
     int i, tic, nrTics;
@@ -126,7 +159,7 @@ static void TRACKBAR_RecalculateTics (TRACKBAR_INFO *infoPtr)
                                         (nrTics+1)*sizeof (DWORD));
        if (!infoPtr->tics) {
            infoPtr->uNumTics = 0;
-           TRACKBAR_SendNotify(infoPtr, NM_OUTOFMEMORY);
+           notify(infoPtr, NM_OUTOFMEMORY);
            return;
        }
        infoPtr->uNumTics = nrTics;
@@ -200,26 +233,44 @@ TRACKBAR_GetAutoPageDirection (TRACKBAR_INFO *infoPtr, POINT clickPoint)
 }
 
 static void inline
-TRACKBAR_PageUp (TRACKBAR_INFO *infoPtr)
+TRACKBAR_PageDown (TRACKBAR_INFO *infoPtr)
 {
     if (infoPtr->lPos == infoPtr->lRangeMax) return;
 
     infoPtr->lPos += infoPtr->lPageSize;
     if (infoPtr->lPos > infoPtr->lRangeMax)
        infoPtr->lPos = infoPtr->lRangeMax;
-    TRACKBAR_SendNotify (infoPtr, TB_PAGEUP);
+    notify_with_scroll (infoPtr, TB_PAGEDOWN);
 }
 
 
 static void inline
-TRACKBAR_PageDown (TRACKBAR_INFO *infoPtr)
+TRACKBAR_PageUp (TRACKBAR_INFO *infoPtr)
 {
     if (infoPtr->lPos == infoPtr->lRangeMin) return;
 
     infoPtr->lPos -= infoPtr->lPageSize;
     if (infoPtr->lPos < infoPtr->lRangeMin)
         infoPtr->lPos = infoPtr->lRangeMin;
-    TRACKBAR_SendNotify (infoPtr, TB_PAGEDOWN);
+    notify_with_scroll (infoPtr, TB_PAGEUP);
+}
+
+static void inline TRACKBAR_LineUp(TRACKBAR_INFO *infoPtr)
+{
+    if (infoPtr->lPos == infoPtr->lRangeMin) return;
+    infoPtr->lPos -= infoPtr->lLineSize;
+    if (infoPtr->lPos < infoPtr->lRangeMin)
+        infoPtr->lPos = infoPtr->lRangeMin;
+    notify_with_scroll (infoPtr, TB_LINEUP);
+}
+
+static void inline TRACKBAR_LineDown(TRACKBAR_INFO *infoPtr)
+{
+    if (infoPtr->lPos == infoPtr->lRangeMax) return;
+    infoPtr->lPos += infoPtr->lLineSize;
+    if (infoPtr->lPos > infoPtr->lRangeMax)
+        infoPtr->lPos = infoPtr->lRangeMax;
+    notify_with_scroll (infoPtr, TB_LINEDOWN);
 }
 
 static void
@@ -398,9 +449,9 @@ TRACKBAR_AutoPage (TRACKBAR_INFO *infoPtr, POINT clickPoint)
     TRACE("x=%ld, y=%ld, dir=%ld\n", clickPoint.x, clickPoint.y, dir);
 
     if (dir > 0 && (infoPtr->flags & TB_AUTO_PAGE_RIGHT))
-       TRACKBAR_PageUp(infoPtr);
-    else if (dir < 0 && (infoPtr->flags & TB_AUTO_PAGE_LEFT))
        TRACKBAR_PageDown(infoPtr);
+    else if (dir < 0 && (infoPtr->flags & TB_AUTO_PAGE_LEFT))
+       TRACKBAR_PageUp(infoPtr);
     else return FALSE;
 
     infoPtr->flags |= TB_THUMBPOSCHANGED;
@@ -763,15 +814,15 @@ TRACKBAR_Refresh (TRACKBAR_INFO *infoPtr, HDC hdcDst)
 
     /* start the paint cycle */
     nmcd.rc = rcClient;
-    gcdrf = notify_customdraw(&nmcd, CDDS_PREPAINT);
+    gcdrf = notify_customdraw(infoPtr, &nmcd, CDDS_PREPAINT);
     if (gcdrf & CDRF_SKIPDEFAULT) goto cleanup;
     
     /* Erase backbround */
     if (gcdrf == CDRF_DODEFAULT ||
-        notify_customdraw(&nmcd, CDDS_PREERASE) != CDRF_SKIPDEFAULT) {
+        notify_customdraw(infoPtr, &nmcd, CDDS_PREERASE) != CDRF_SKIPDEFAULT) {
        FillRect (hdc, &rcClient, GetSysColorBrush(COLOR_BTNFACE));
         if (gcdrf != CDRF_DODEFAULT)
-           notify_customdraw(&nmcd, CDDS_POSTERASE);
+           notify_customdraw(infoPtr, &nmcd, CDDS_POSTERASE);
     }
     
     /* draw channel */
@@ -779,12 +830,12 @@ TRACKBAR_Refresh (TRACKBAR_INFO *infoPtr, HDC hdcDst)
         nmcd.dwItemSpec = TBCD_CHANNEL;
        nmcd.uItemState = CDIS_DEFAULT;
        nmcd.rc = infoPtr->rcChannel;
-       icdrf = notify_customdraw(&nmcd, CDDS_ITEMPREPAINT);
+       icdrf = notify_customdraw(infoPtr, &nmcd, CDDS_ITEMPREPAINT);
     } else icdrf = CDRF_DODEFAULT;
     if ( !(icdrf & CDRF_SKIPDEFAULT) ) {
        TRACKBAR_DrawChannel (infoPtr, hdc, dwStyle);
        if (icdrf & CDRF_NOTIFYPOSTPAINT)
-           notify_customdraw(&nmcd, CDDS_ITEMPOSTPAINT);
+           notify_customdraw(infoPtr, &nmcd, CDDS_ITEMPOSTPAINT);
     }
 
 
@@ -794,12 +845,12 @@ TRACKBAR_Refresh (TRACKBAR_INFO *infoPtr, HDC hdcDst)
             nmcd.dwItemSpec = TBCD_TICS;
            nmcd.uItemState = CDIS_DEFAULT;
            nmcd.rc = rcClient;
-           icdrf = notify_customdraw(&nmcd, CDDS_ITEMPREPAINT);
+           icdrf = notify_customdraw(infoPtr, &nmcd, CDDS_ITEMPREPAINT);
         } else icdrf = CDRF_DODEFAULT;
        if ( !(icdrf & CDRF_SKIPDEFAULT) ) {
            TRACKBAR_DrawTics (infoPtr, hdc, dwStyle);
            if (icdrf & CDRF_NOTIFYPOSTPAINT)
-               notify_customdraw(&nmcd, CDDS_ITEMPOSTPAINT);
+               notify_customdraw(infoPtr, &nmcd, CDDS_ITEMPOSTPAINT);
        }
     }
     
@@ -809,12 +860,12 @@ TRACKBAR_Refresh (TRACKBAR_INFO *infoPtr, HDC hdcDst)
            nmcd.dwItemSpec = TBCD_THUMB;
            nmcd.uItemState = infoPtr->flags & TB_DRAG_MODE ? CDIS_HOT : CDIS_DEFAULT;
            nmcd.rc = infoPtr->rcThumb;
-           icdrf = notify_customdraw(&nmcd, CDDS_ITEMPREPAINT);
+           icdrf = notify_customdraw(infoPtr, &nmcd, CDDS_ITEMPREPAINT);
        } else icdrf = CDRF_DODEFAULT;
        if ( !(icdrf & CDRF_SKIPDEFAULT) ) {
             TRACKBAR_DrawThumb(infoPtr, hdc, dwStyle);
            if (icdrf & CDRF_NOTIFYPOSTPAINT)
-               notify_customdraw(&nmcd, CDDS_ITEMPOSTPAINT);
+               notify_customdraw(infoPtr, &nmcd, CDDS_ITEMPOSTPAINT);
        }
     }
 
@@ -825,7 +876,7 @@ TRACKBAR_Refresh (TRACKBAR_INFO *infoPtr, HDC hdcDst)
 
     /* finish up the painting */
     if (gcdrf & CDRF_NOTIFYPOSTPAINT)
-       notify_customdraw(&nmcd, CDDS_POSTPAINT);
+       notify_customdraw(infoPtr, &nmcd, CDDS_POSTPAINT);
     
 cleanup:
     /* cleanup, if we rendered offscreen */
@@ -1196,7 +1247,7 @@ TRACKBAR_SetTic (TRACKBAR_INFO *infoPtr, LONG lPos)
                                     (infoPtr->uNumTics)*sizeof (DWORD));
     if (!infoPtr->tics) {
        infoPtr->uNumTics = 0;
-       TRACKBAR_SendNotify(infoPtr, NM_OUTOFMEMORY);
+       notify(infoPtr, NM_OUTOFMEMORY);
        return FALSE;
     }
     infoPtr->tics[infoPtr->uNumTics-1] = lPos;
@@ -1302,7 +1353,7 @@ TRACKBAR_Create (HWND hwnd, LPCREATESTRUCTW lpcs)
     infoPtr->uNumTics  = 0;    /* start and end tic are not included in count*/
     infoPtr->uTicFreq  = 1;
     infoPtr->tics      = NULL;
-    infoPtr->hwndNotify= GetParent (hwnd);
+    infoPtr->hwndNotify= lpcs->hwndParent;
 
     TRACKBAR_InitializeThumb (infoPtr);
 
@@ -1394,18 +1445,20 @@ static LRESULT
 TRACKBAR_LButtonUp (TRACKBAR_INFO *infoPtr, DWORD fwKeys, POINTS pts)
 {
     if (infoPtr->flags & TB_DRAG_MODE) {
-        TRACKBAR_SendNotify (infoPtr, TB_ENDTRACK);
+        notify_with_scroll (infoPtr, TB_THUMBPOSITION | (infoPtr->lPos<<16));
+        notify_with_scroll (infoPtr, TB_ENDTRACK);
         infoPtr->flags &= ~TB_DRAG_MODE;
         ReleaseCapture ();
-       TRACKBAR_SendNotify(infoPtr, NM_RELEASEDCAPTURE);
+       notify(infoPtr, NM_RELEASEDCAPTURE);
         TRACKBAR_ActivateToolTip(infoPtr, FALSE);
        TRACKBAR_InvalidateThumb(infoPtr, infoPtr->lPos);
     }
     if (infoPtr->flags & TB_AUTO_PAGE) {
        KillTimer (infoPtr->hwndSelf, TB_REFRESH_TIMER);
         infoPtr->flags &= ~TB_AUTO_PAGE;
+        notify_with_scroll (infoPtr, TB_ENDTRACK);
         ReleaseCapture ();
-       TRACKBAR_SendNotify(infoPtr, NM_RELEASEDCAPTURE);
+       notify(infoPtr, NM_RELEASEDCAPTURE);
     }
 
     return 0;
@@ -1415,7 +1468,7 @@ TRACKBAR_LButtonUp (TRACKBAR_INFO *infoPtr, DWORD fwKeys, POINTS pts)
 static LRESULT
 TRACKBAR_CaptureChanged (TRACKBAR_INFO *infoPtr)
 {
-    TRACKBAR_SendNotify (infoPtr, TB_ENDTRACK);
+    notify_with_scroll (infoPtr, TB_ENDTRACK);
     return 0;
 }
 
@@ -1470,19 +1523,6 @@ TRACKBAR_Timer (TRACKBAR_INFO *infoPtr, INT wTimerID, TIMERPROC *tmrpc)
 }
 
 
-static BOOL
-TRACKBAR_SendNotify (TRACKBAR_INFO *infoPtr, UINT code)
-{
-    BOOL bVert = GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE) & TBS_VERT;
-
-    TRACE("%x\n", code);
-
-    return (BOOL) SendMessageW (GetParent (infoPtr->hwndSelf),
-                                bVert ? WM_VSCROLL : WM_HSCROLL,
-                               (WPARAM)code, (LPARAM)infoPtr->hwndSelf);
-}
-
-
 static LRESULT
 TRACKBAR_MouseMove (TRACKBAR_INFO *infoPtr, DWORD fwKeys, POINTS pts)
 {
@@ -1508,7 +1548,7 @@ TRACKBAR_MouseMove (TRACKBAR_INFO *infoPtr, DWORD fwKeys, POINTS pts)
     infoPtr->lPos = dragPos;
 
     infoPtr->flags |= TB_THUMBPOSCHANGED;
-    TRACKBAR_SendNotify (infoPtr, TB_THUMBTRACK | (infoPtr->lPos<<16));
+    notify_with_scroll (infoPtr, TB_THUMBTRACK | (infoPtr->lPos<<16));
 
 
     TRACKBAR_InvalidateThumbMove(infoPtr, oldPos, dragPos);
@@ -1517,55 +1557,50 @@ TRACKBAR_MouseMove (TRACKBAR_INFO *infoPtr, DWORD fwKeys, POINTS pts)
     return TRUE;
 }
 
-
 static BOOL
 TRACKBAR_KeyDown (TRACKBAR_INFO *infoPtr, INT nVirtKey, DWORD lKeyData)
 {
-    BOOL downIsLeft = GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE) & TBS_DOWNISLEFT;
+    DWORD style = GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE);
+    BOOL downIsLeft = style & TBS_DOWNISLEFT;
+    BOOL vert = style & TBS_VERT;
     LONG pos = infoPtr->lPos;
 
     TRACE("%x\n", nVirtKey);
 
     switch (nVirtKey) {
     case VK_UP:
-       if (downIsLeft) goto step_right;
+       if (!vert && downIsLeft) TRACKBAR_LineDown(infoPtr);
+        else TRACKBAR_LineUp(infoPtr);
+        break;
     case VK_LEFT:
-    step_left:
-        if (infoPtr->lPos == infoPtr->lRangeMin) return FALSE;
-        infoPtr->lPos -= infoPtr->lLineSize;
-        if (infoPtr->lPos < infoPtr->lRangeMin)
-            infoPtr->lPos = infoPtr->lRangeMin;
-        TRACKBAR_SendNotify (infoPtr, TB_LINEUP);
+        if (vert && downIsLeft) TRACKBAR_LineDown(infoPtr);
+        else TRACKBAR_LineUp(infoPtr);
         break;
     case VK_DOWN:
-       if (downIsLeft) goto step_left;
+       if (!vert && downIsLeft) TRACKBAR_LineUp(infoPtr);
+        else TRACKBAR_LineDown(infoPtr);
+        break;
     case VK_RIGHT:
-    step_right:
-        if (infoPtr->lPos == infoPtr->lRangeMax) return FALSE;
-        infoPtr->lPos += infoPtr->lLineSize;
-        if (infoPtr->lPos > infoPtr->lRangeMax)
-            infoPtr->lPos = infoPtr->lRangeMax;
-        TRACKBAR_SendNotify (infoPtr, TB_LINEDOWN);
+       if (vert && downIsLeft) TRACKBAR_LineUp(infoPtr);
+        else TRACKBAR_LineDown(infoPtr);
         break;
     case VK_NEXT:
-       if (downIsLeft) goto page_left;
-    page_right:
-       TRACKBAR_PageUp(infoPtr);
+       if (!vert && downIsLeft) TRACKBAR_PageUp(infoPtr);
+        else TRACKBAR_PageDown(infoPtr);
         break;
     case VK_PRIOR:
-       if (downIsLeft) goto page_right;
-    page_left:
-       TRACKBAR_PageDown(infoPtr);
+       if (!vert && downIsLeft) TRACKBAR_PageDown(infoPtr);
+        else TRACKBAR_PageUp(infoPtr);
         break;
     case VK_HOME:
         if (infoPtr->lPos == infoPtr->lRangeMin) return FALSE;
         infoPtr->lPos = infoPtr->lRangeMin;
-        TRACKBAR_SendNotify (infoPtr, TB_TOP);
+        notify_with_scroll (infoPtr, TB_TOP);
         break;
     case VK_END:
         if (infoPtr->lPos == infoPtr->lRangeMax) return FALSE;
         infoPtr->lPos = infoPtr->lRangeMax;
-        TRACKBAR_SendNotify (infoPtr, TB_BOTTOM);
+        notify_with_scroll (infoPtr, TB_BOTTOM);
         break;
     }
 
@@ -1590,7 +1625,7 @@ TRACKBAR_KeyUp (TRACKBAR_INFO *infoPtr, INT nVirtKey, DWORD lKeyData)
     case VK_PRIOR:
     case VK_HOME:
     case VK_END:
-        TRACKBAR_SendNotify (infoPtr, TB_ENDTRACK);
+        notify_with_scroll (infoPtr, TB_ENDTRACK);
     }
     return TRUE;
 }
index 234b702..c33dd5e 100644 (file)
@@ -3063,6 +3063,7 @@ TREEVIEW_Sort(TREEVIEW_INFO *infoPtr, BOOL fRecurse, HTREEITEM parent,
                        break;
                }
 
+                if (!item) item = parent->firstChild;
                 TREEVIEW_SetFirstVisible(infoPtr, item, FALSE);
            }
 
@@ -3203,7 +3204,8 @@ TREEVIEW_Expand(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem,
 
     TRACE("TVE_EXPAND %p %s\n", wineItem, TREEVIEW_ItemName(wineItem));
 
-    if (bUser || !(wineItem->state & TVIS_EXPANDEDONCE))
+    if (bUser || ((wineItem->cChildren != 0) &&
+                  !(wineItem->state & TVIS_EXPANDEDONCE)))
     {
        if (!TREEVIEW_SendExpanding(infoPtr, wineItem, TVE_EXPAND))
        {
@@ -5184,6 +5186,9 @@ static LRESULT WINAPI
 TREEVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
     TREEVIEW_INFO *infoPtr = TREEVIEW_GetInfoPtr(hwnd);
+
+    TRACE("hwnd %p msg %04x wp=%08x lp=%08lx\n", hwnd, uMsg, wParam, lParam);
+
     if (infoPtr) TREEVIEW_VerifyTree(infoPtr);
     else
     {