mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-27 21:20:30 +02:00
win32: implement GetWin32ThemedDoubleBuffered and use it for tree view and check box.
git-svn-id: trunk@57306 -
This commit is contained in:
parent
ab410ae1d2
commit
50548dc73d
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -9939,6 +9939,7 @@ lcl/interfaces/win32/win32pagecontrol.inc svneol=native#text/pascal
|
|||||||
lcl/interfaces/win32/win32proc.pp svneol=native#text/pascal
|
lcl/interfaces/win32/win32proc.pp svneol=native#text/pascal
|
||||||
lcl/interfaces/win32/win32themes.pas svneol=native#text/pascal
|
lcl/interfaces/win32/win32themes.pas svneol=native#text/pascal
|
||||||
lcl/interfaces/win32/win32trayicon.inc svneol=native#text/pascal
|
lcl/interfaces/win32/win32trayicon.inc svneol=native#text/pascal
|
||||||
|
lcl/interfaces/win32/win32treeview.inc svneol=native#text/pascal
|
||||||
lcl/interfaces/win32/win32winapi.inc svneol=native#text/pascal
|
lcl/interfaces/win32/win32winapi.inc svneol=native#text/pascal
|
||||||
lcl/interfaces/win32/win32winapih.inc svneol=native#text/pascal
|
lcl/interfaces/win32/win32winapih.inc svneol=native#text/pascal
|
||||||
lcl/interfaces/win32/win32wsbuttons.pp svneol=native#text/pascal
|
lcl/interfaces/win32/win32wsbuttons.pp svneol=native#text/pascal
|
||||||
|
@ -129,7 +129,7 @@ end;"/>
|
|||||||
<License Value="modified LGPL-2
|
<License Value="modified LGPL-2
|
||||||
"/>
|
"/>
|
||||||
<Version Major="1" Minor="9"/>
|
<Version Major="1" Minor="9"/>
|
||||||
<Files Count="477">
|
<Files Count="478">
|
||||||
<Item1>
|
<Item1>
|
||||||
<Filename Value="carbon/agl.pp"/>
|
<Filename Value="carbon/agl.pp"/>
|
||||||
<AddToUsesPkgSection Value="False"/>
|
<AddToUsesPkgSection Value="False"/>
|
||||||
@ -2362,6 +2362,10 @@ end;"/>
|
|||||||
<Filename Value="qt5/qtx11.inc"/>
|
<Filename Value="qt5/qtx11.inc"/>
|
||||||
<Type Value="Include"/>
|
<Type Value="Include"/>
|
||||||
</Item477>
|
</Item477>
|
||||||
|
<Item478>
|
||||||
|
<Filename Value="win32/win32treeview.inc"/>
|
||||||
|
<Type Value="Include"/>
|
||||||
|
</Item478>
|
||||||
</Files>
|
</Files>
|
||||||
<LazDoc Paths="../../docs/xml/lcl"/>
|
<LazDoc Paths="../../docs/xml/lcl"/>
|
||||||
<i18n>
|
<i18n>
|
||||||
|
@ -24,7 +24,7 @@ interface
|
|||||||
uses
|
uses
|
||||||
Windows, Win32Extra, Classes, SysUtils,
|
Windows, Win32Extra, Classes, SysUtils,
|
||||||
LMessages, LCLType, LCLProc, LCLMessageGlue, LazUTF8, Controls, Forms, Menus,
|
LMessages, LCLType, LCLProc, LCLMessageGlue, LazUTF8, Controls, Forms, Menus,
|
||||||
GraphType, IntfGraphics;
|
GraphType, IntfGraphics, Themes;
|
||||||
|
|
||||||
const
|
const
|
||||||
LV_DISP_INFO_COUNT = 2;
|
LV_DISP_INFO_COUNT = 2;
|
||||||
@ -87,6 +87,7 @@ function GetLCLClientBoundsOffset(Handle: HWnd; out Rect: TRect): boolean;
|
|||||||
procedure LCLBoundsToWin32Bounds(Sender: TObject; var Left, Top, Width, Height: Integer);
|
procedure LCLBoundsToWin32Bounds(Sender: TObject; var Left, Top, Width, Height: Integer);
|
||||||
procedure Win32PosToLCLPos(Sender: TObject; var Left, Top: SmallInt);
|
procedure Win32PosToLCLPos(Sender: TObject; var Left, Top: SmallInt);
|
||||||
procedure GetWin32ControlPos(Window, Parent: HWND; var Left, Top: integer);
|
procedure GetWin32ControlPos(Window, Parent: HWND; var Left, Top: integer);
|
||||||
|
function GetWin32ThemedDoubleBuffered(Sender: TWinControl): boolean;
|
||||||
|
|
||||||
procedure UpdateWindowStyle(Handle: HWnd; Style: integer; StyleMask: integer);
|
procedure UpdateWindowStyle(Handle: HWnd; Style: integer; StyleMask: integer);
|
||||||
|
|
||||||
@ -783,6 +784,14 @@ begin
|
|||||||
Top := winRect.Top - parRect.Top;
|
Top := winRect.Top - parRect.Top;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function GetWin32ThemedDoubleBuffered(Sender: TWinControl): boolean;
|
||||||
|
begin
|
||||||
|
// force double buffering when themes are enabled for vista and older and there is no remote session
|
||||||
|
Result :=
|
||||||
|
Sender.DoubleBuffered
|
||||||
|
or ((WindowsVersion <= wvVista) and ThemeServices.ThemesEnabled and (GetSystemMetrics(SM_REMOTESESSION)=0));
|
||||||
|
end;
|
||||||
|
|
||||||
{
|
{
|
||||||
Updates the window style of the window indicated by Handle.
|
Updates the window style of the window indicated by Handle.
|
||||||
The new style is the Style parameter.
|
The new style is the Style parameter.
|
||||||
|
17
lcl/interfaces/win32/win32treeview.inc
Normal file
17
lcl/interfaces/win32/win32treeview.inc
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
{%MainUnit win32wscomctrls.pp}
|
||||||
|
{
|
||||||
|
*****************************************************************************
|
||||||
|
This file is part of the Lazarus Component Library (LCL)
|
||||||
|
|
||||||
|
See the file COPYING.modifiedLGPL.txt, included in this distribution,
|
||||||
|
for details about the license.
|
||||||
|
*****************************************************************************
|
||||||
|
}
|
||||||
|
|
||||||
|
{ TWin32WSCustomTreeView }
|
||||||
|
|
||||||
|
class function TWin32WSCustomTreeView.GetDoubleBuffered(
|
||||||
|
const AWinControl: TWinControl): Boolean;
|
||||||
|
begin
|
||||||
|
Result := GetWin32ThemedDoubleBuffered(AWinControl);
|
||||||
|
end;
|
@ -261,6 +261,7 @@ type
|
|||||||
|
|
||||||
TWin32WSCustomTreeView = class(TWSCustomTreeView)
|
TWin32WSCustomTreeView = class(TWSCustomTreeView)
|
||||||
published
|
published
|
||||||
|
class function GetDoubleBuffered(const AWinControl: TWinControl): Boolean; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TWin32WSTreeView }
|
{ TWin32WSTreeView }
|
||||||
@ -278,6 +279,7 @@ const
|
|||||||
DefMarqueeTime = 50; // ms
|
DefMarqueeTime = 50; // ms
|
||||||
|
|
||||||
{$I win32pagecontrol.inc}
|
{$I win32pagecontrol.inc}
|
||||||
|
{$I win32treeview.inc}
|
||||||
|
|
||||||
type
|
type
|
||||||
TStatusPanelAccess = class(TStatusPanel);
|
TStatusPanelAccess = class(TStatusPanel);
|
||||||
|
@ -266,6 +266,7 @@ type
|
|||||||
published
|
published
|
||||||
class function CreateHandle(const AWinControl: TWinControl;
|
class function CreateHandle(const AWinControl: TWinControl;
|
||||||
const AParams: TCreateParams): HWND; override;
|
const AParams: TCreateParams): HWND; override;
|
||||||
|
class function GetDoubleBuffered(const AWinControl: TWinControl): Boolean; override;
|
||||||
class procedure GetPreferredSize(const AWinControl: TWinControl;
|
class procedure GetPreferredSize(const AWinControl: TWinControl;
|
||||||
var PreferredWidth, PreferredHeight: integer;
|
var PreferredWidth, PreferredHeight: integer;
|
||||||
WithThemeSpace: Boolean); override;
|
WithThemeSpace: Boolean); override;
|
||||||
@ -1852,6 +1853,12 @@ begin
|
|||||||
Result := Params.Window;
|
Result := Params.Window;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
class function TWin32WSCustomCheckBox.GetDoubleBuffered(
|
||||||
|
const AWinControl: TWinControl): Boolean;
|
||||||
|
begin
|
||||||
|
Result := GetWin32ThemedDoubleBuffered(AWinControl);
|
||||||
|
end;
|
||||||
|
|
||||||
class procedure TWin32WSCustomCheckBox.GetPreferredSize(const AWinControl: TWinControl;
|
class procedure TWin32WSCustomCheckBox.GetPreferredSize(const AWinControl: TWinControl;
|
||||||
var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean);
|
var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean);
|
||||||
var
|
var
|
||||||
|
Loading…
Reference in New Issue
Block a user