From 41021392cbe149b79d3c40ba864998bd19e19f6c Mon Sep 17 00:00:00 2001 From: paul Date: Fri, 23 Apr 2010 01:55:23 +0000 Subject: [PATCH] gtk2: trial to make treeview themed git-svn-id: trunk@24842 - --- lcl/interfaces/gtk/gtkthemes.pas | 5 ++-- lcl/interfaces/gtk2/gtk2themes.pas | 41 ++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/lcl/interfaces/gtk/gtkthemes.pas b/lcl/interfaces/gtk/gtkthemes.pas index a69abaaa66..5bcfa619e7 100644 --- a/lcl/interfaces/gtk/gtkthemes.pas +++ b/lcl/interfaces/gtk/gtkthemes.pas @@ -74,7 +74,7 @@ type protected procedure DrawPixmap(DC: HDC; Area: PGdkRectangle; PixmapIndex: Byte); virtual; - function GetParamsCount(Details: TThemedElementDetails): Integer; + function GetParamsCount(Details: TThemedElementDetails): Integer; virtual; function GetGtkStyleParams(DC: HDC; Details: TThemedElementDetails; AIndex: Integer): TGtkStyleParams; virtual; function InitThemes: Boolean; override; @@ -174,8 +174,7 @@ begin end; end; -function TGtkThemeServices.GetParamsCount(Details: TThemedElementDetails - ): Integer; +function TGtkThemeServices.GetParamsCount(Details: TThemedElementDetails): Integer; begin Result := 1; if (Details.Element = teToolBar) and (Details.Part = TP_SPLITBUTTONDROPDOWN) then diff --git a/lcl/interfaces/gtk2/gtk2themes.pas b/lcl/interfaces/gtk2/gtk2themes.pas index bf50824ed0..d14a211f89 100644 --- a/lcl/interfaces/gtk2/gtk2themes.pas +++ b/lcl/interfaces/gtk2/gtk2themes.pas @@ -20,6 +20,7 @@ type TGtk2ThemeServices = class(TGtkThemeServices) protected function GetGtkStyleParams(DC: HDC; Details: TThemedElementDetails; AIndex: Integer): TGtkStyleParams; override; + function GetParamsCount(Details: TThemedElementDetails): Integer; override; public function GetDetailSize(Details: TThemedElementDetails): TSize; override; function GetStockImage(StockID: LongInt; out Image, Mask: HBitmap): Boolean; override; @@ -116,11 +117,51 @@ begin Result.Expander := GTK_EXPANDER_EXPANDED; Result.ExpanderSize := GetDetailSize(Details).cx; + end + else + if Details.Part = TVP_TREEITEM then + begin + Result.Widget := GetStyleWidget(lgsTreeView); + Result.Shadow := GTK_SHADOW_NONE; + if AIndex = 0 then + begin + Result.Painter := gptFlatBox; + case Details.State of + TREIS_SELECTED, + TREIS_HOTSELECTED: Result.State := GTK_STATE_SELECTED + else + Result.State := GTK_STATE_NORMAL; + end; + Result.Detail := 'cell_even'; + end + else + if AIndex = 1 then + begin + Result.Detail := 'treeview'; + case Details.State of + TREIS_SELECTED, + TREIS_SELECTEDNOTFOCUS: + begin + Result.Painter := gptFocus; + Result.State := GTK_STATE_PRELIGHT; + end; + else + Result.Painter := gptNone; + end; + end; end; end; end; end; +function TGtk2ThemeServices.GetParamsCount(Details: TThemedElementDetails): Integer; +begin + if (Details.Element = teTreeview) and (Details.Part = TVP_TREEITEM) then + Result := 2 + else + Result := inherited GetParamsCount(Details); +end; + function TGtk2ThemeServices.GetDetailSize(Details: TThemedElementDetails): TSize; var AValue: TGValue;