- 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);