From dbb82e587ba6dd26201e14483a770c39c3621aa6 Mon Sep 17 00:00:00 2001 From: blikblum Date: Sun, 25 Dec 2011 19:38:58 +0000 Subject: [PATCH] * draw themed header item according to position. Issue 17467 git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2200 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../branches/4.8/VirtualTrees.pas | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/components/virtualtreeview-new/branches/4.8/VirtualTrees.pas b/components/virtualtreeview-new/branches/4.8/VirtualTrees.pas index 500eaa22c..9f6e5952f 100644 --- a/components/virtualtreeview-new/branches/4.8/VirtualTrees.pas +++ b/components/virtualtreeview-new/branches/4.8/VirtualTrees.pas @@ -8489,6 +8489,9 @@ end; //---------------------------------------------------------------------------------------------------------------------- +type + THeaderItemPosition = (thpLeft, thpCenter, thpRight); + procedure TVirtualTreeColumns.PaintHeader(DC: HDC; const R: TRect; HOffset: Integer); // Main paint method to draw the header. @@ -8498,6 +8501,9 @@ const (3, 5) {ascending}, (2, 4) {descending} ); + HotThemedHeaders: array[THeaderItemPosition] of TThemedHeader = (thHeaderItemLeftHot, thHeaderItemHot, thHeaderItemRightHot); + PressedThemedHeaders: array[THeaderItemPosition] of TThemedHeader = (thHeaderItemLeftPressed, thHeaderItemPressed, thHeaderItemRightPressed); + NormalThemedHeaders: array[THeaderItemPosition] of TThemedHeader = (thHeaderItemLeftNormal, thHeaderItemNormal, thHeaderItemRightNormal); var I, Y, SortIndex: Integer; @@ -8516,7 +8522,8 @@ var WrapCaption, AdvancedOwnerDraw: Boolean; {$ifdef ThemeSupport} - Details: TThemedElementDetails; + Details: TThemedElementDetails; + HeaderItemPosition: THeaderItemPosition; {$endif ThemeSupport} PaintInfo: THeaderPaintInfo; @@ -8708,13 +8715,18 @@ begin {$ifdef ThemeSupport} if tsUseThemes in FHeader.Treeview.FStates then begin + if I = GetFirstVisibleColumn then + HeaderItemPosition := thpLeft + else + HeaderItemPosition := thpCenter; + //todo?: handle autoresize header. LastColumn.HeaderItemPosition := thpRight if IsDownIndex then - Details := ThemeServices.GetElementDetails(thHeaderItemPressed) + Details := ThemeServices.GetElementDetails(PressedThemedHeaders[HeaderItemPosition]) else if IsHoverIndex then - Details := ThemeServices.GetElementDetails(thHeaderItemHot) + Details := ThemeServices.GetElementDetails(HotThemedHeaders[HeaderItemPosition]) else - Details := ThemeServices.GetElementDetails(thHeaderItemNormal); + Details := ThemeServices.GetElementDetails(NormalThemedHeaders[HeaderItemPosition]); ThemeServices.DrawElement(Handle, Details, PaintRectangle, @PaintRectangle); end else