- The usual bugfixes.
- Better unicode support (only defines, currently)
- Drag & drop implemented.
- LPSTR_TEXTCALLBACK should work now.
- First start at custom draw code.

diff --git a/include/treeview.h b/include/treeview.h
index 68b9c28..e2403c8 100644
--- a/include/treeview.h
+++ b/include/treeview.h
@@ -9,15 +9,10 @@
 #define __WINE_TREEVIEW_H
 
 #define MINIMUM_INDENT 10
-
-
-#define TVITEM_ALLOC	16
-#define TV_REFRESH_TIMER 1	
-#define TV_EDIT_TIMER    2
-#define TV_REFRESH_TIMER_SET 1  
-#define TV_EDIT_TIMER_SET 2  
 #define TV_REFRESH_DELAY 100     /* 100 ms delay between two refreshes */
-#define TV_DEFAULTITEMHEIGHT 15
+#define TV_DEFAULTITEMHEIGHT 16
+#define TVITEM_ALLOC	16	/* default nr of items to allocate at first try */
+
 
 /* internal structures */
 
@@ -33,7 +28,8 @@
     int cChildren;
     LPARAM lParam;
     int iIntegral;
-	int clrText;
+	int iLevel;			/* indentation level:0=root level */
+	COLORREF clrText;
 	
 	int parent;	    /* handle to parent or 0 if at root*/
 	int firstChild;     /* handle to first child or 0 if no child*/
@@ -45,31 +41,40 @@
 } TREEVIEW_ITEM;
 
 
-#define TV_HSCROLL 	0x01    /* treeview too large to fit in window */
-#define TV_VSCROLL 	0x02	/* (horizontal/vertical) */
 
 typedef struct tagTREEVIEW_INFO
 {
     UINT32	uInternalStatus;		
+	UINT32  bAutoSize;			/* merge with uInternalStatus */
 	INT32	Timer;
     UINT32  uNumItems;	/* number of valid TREEVIEW_ITEMs */
     UINT32	uNumPtrsAlloced; 
     UINT32	uMaxHandle;	/* needed for delete_item */
     HTREEITEM 	TopRootItem;	/* handle to first item in treeview */
+	INT32	cdmode;		/* last custom draw setting */
 
 	UINT32	uItemHeight;		/* item height, -1 for default item height */
-	UINT32 	uRealItemHeight;	/* real item height in pixels */
+	UINT32 	uRealItemHeight;	/* current item height in pixels */
 	UINT32	uVisibleHeight;	    /* visible height of treeview in pixels */
     UINT32	uTotalHeight;		/* total height of treeview in pixels */
-    UINT32		uIndent;		/* indentation in pixels */
+	UINT32	uVisibleWidth;	    
+    UINT32	uTotalWidth;	
+    UINT32	uIndent;			/* indentation in pixels */
     HTREEITEM	selectedItem;   /* handle to selected item or 0 if none */
+	HTREEITEM	focusItem;		/* handle to item that has focus, 0 if none */
+	HTREEITEM	hotItem;		/* handle currently under cursor, 0 if none */
+    HTREEITEM	editItem;   /* handle to item currently editted, 0 if none */
     HTREEITEM   firstVisible;	/* handle to first visible item */
     HTREEITEM   dropItem;	/* handle to item selected by drag cursor */
+	HIMAGELIST  dragList;	/* Bitmap of dragged item */
     INT32		cx,cy;		/* current x/y place in list */
     COLORREF	clrBk;		
     COLORREF	clrText;
     HFONT32 	hFont;
+    HFONT32 	hBoldFont;
 	HWND32		hwndToolTip;
+	HWND32		hwndEdit;
+	WNDPROC32   wpEditOrig;     /* needed for subclassing edit control */
 
     HIMAGELIST	himlNormal;	
     HIMAGELIST	himlState;
@@ -81,6 +86,24 @@
 } TREEVIEW_INFO;
 
 
+
+/* bitflags for infoPtr->uInternalStatus */
+
+#define TV_HSCROLL 	0x01    /* treeview too large to fit in window */
+#define TV_VSCROLL 	0x02	/* (horizontal/vertical) */
+#define TV_LDRAG		0x04	/* Lbutton pushed to start drag */
+#define TV_LDRAGGING	0x08	/* Lbutton pushed, mouse moved.  */
+#define TV_RDRAG		0x10	/* dito Rbutton */
+#define TV_RDRAGGING	0x20	
+
+/* bitflags for infoPtr->timer */
+
+#define TV_REFRESH_TIMER 1	
+#define TV_EDIT_TIMER    2
+#define TV_REFRESH_TIMER_SET 1  
+#define TV_EDIT_TIMER_SET 2  
+
+
 extern VOID TREEVIEW_Register (VOID);
 extern VOID TREEVIEW_Unregister (VOID);