From f0a19ef372b96f4fbc034f0f962c06063996a8bc Mon Sep 17 00:00:00 2001 From: treectrl Date: Thu, 7 Jul 2005 03:17:14 +0000 Subject: TreeTheme_DrawHeaderArrow implemented on WinXP to draw an arrow that looks like Explorer's. TreeTheme_GetArrowSize added. --- generic/tkTreeTheme.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 file 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; -- cgit v0.12