summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authortreectrl <treectrl>2005-07-07 03:17:14 (GMT)
committertreectrl <treectrl>2005-07-07 03:17:14 (GMT)
commitf0a19ef372b96f4fbc034f0f962c06063996a8bc (patch)
tree021f5b357059588d49b2861d6cac7d2435e20515 /generic
parent22d8d10ad1a3fee221b452be6d4ad97156898538 (diff)
downloadtktreectrl-f0a19ef372b96f4fbc034f0f962c06063996a8bc.zip
tktreectrl-f0a19ef372b96f4fbc034f0f962c06063996a8bc.tar.gz
tktreectrl-f0a19ef372b96f4fbc034f0f962c06063996a8bc.tar.bz2
TreeTheme_DrawHeaderArrow implemented on WinXP to draw an arrow that looks like Explorer's.
TreeTheme_GetArrowSize added.
Diffstat (limited to 'generic')
-rw-r--r--generic/tkTreeTheme.c53
1 files changed, 49 insertions, 4 deletions
diff --git a/generic/tkTreeTheme.c b/generic/tkTreeTheme.c
index 0d1d1b7..3056e22 100644
--- a/generic/tkTreeTheme.c
+++ b/generic/tkTreeTheme.c
@@ -5,7 +5,7 @@
*
* Copyright (c) 2005 Tim Baker
*
- * RCS: @(#) $Id: tkTreeTheme.c,v 1.9 2005/06/30 19:47:08 treectrl Exp $
+ * RCS: @(#) $Id: tkTreeTheme.c,v 1.10 2005/07/07 03:17:14 treectrl Exp $
*/
#ifdef WIN32
@@ -342,10 +342,35 @@ dbwin("margins %d %d %d %d\n", bounds[0], bounds[1], bounds[2], bounds[3]);
int TreeTheme_DrawHeaderArrow(TreeCtrl *tree, Drawable drawable, int up,
int x, int y, int width, int height)
{
- /* Doesn't seem that Microsoft actually implemented this */
- return TCL_ERROR;
+#if 1
+ XColor *color;
+ GC gc;
+ int i;
-#if 0
+ if (!themeData->themeEnabled || !procs)
+ return TCL_ERROR;
+
+ color = Tk_GetColor(tree->interp, tree->tkwin, "#ACA899");
+ gc = Tk_GCForColor(color, drawable);
+
+ if (up) {
+ for (i = 0; i < height; i++) {
+ XDrawLine(tree->display, drawable, gc,
+ x + width / 2 - i, y + i,
+ x + width / 2 + i + 1, y + i);
+ }
+ } else {
+ for (i = 0; i < height; i++) {
+ XDrawLine(tree->display, drawable, gc,
+ x + width / 2 - i, y + (height - 1) - i,
+ x + width / 2 + i + 1, y + (height - 1) - i);
+ }
+ }
+
+ Tk_FreeColor(color);
+ return TCL_OK;
+#else
+ /* Doesn't seem that Microsoft actually implemented this */
Window win = Tk_WindowId(tree->tkwin);
HWND hwnd = Tk_GetHWND(win);
HTHEME hTheme;
@@ -526,6 +551,16 @@ int TreeTheme_GetButtonSize(TreeCtrl *tree, Drawable drawable, int open,
return TCL_OK;
}
+int TreeTheme_GetArrowSize(TreeCtrl *tree, Drawable drawable, int up, int *widthPtr, int *heightPtr)
+{
+ if (!themeData->themeEnabled || !procs)
+ return TCL_ERROR;
+
+ *widthPtr = 9;
+ *heightPtr = 5;
+ return TCL_OK;
+}
+
#if !defined(WM_THEMECHANGED)
#define WM_THEMECHANGED 0x031A
#endif
@@ -797,6 +832,11 @@ int TreeTheme_GetButtonSize(TreeCtrl *tree, Drawable drawable, int open, int *wi
return TCL_OK;
}
+int TreeTheme_GetArrowSize(TreeCtrl *tree, Drawable drawable, int up, int *widthPtr, int *heightPtr)
+{
+ return TCL_ERROR;
+}
+
int TreeTheme_Init(Tcl_Interp *interp)
{
return TCL_OK;
@@ -829,6 +869,11 @@ int TreeTheme_GetButtonSize(TreeCtrl *tree, Drawable drawable, int open, int *wi
return TCL_ERROR;
}
+int TreeTheme_GetArrowSize(TreeCtrl *tree, Drawable drawable, int up, int *widthPtr, int *heightPtr)
+{
+ return TCL_ERROR;
+}
+
int TreeTheme_Init(Tcl_Interp *interp)
{
return TCL_ERROR;