From e8f3263b75acee31d2ac3e8a0fca95ebd893fc18 Mon Sep 17 00:00:00 2001 From: Joachim Marder Date: Sat, 20 Jan 2024 15:31:39 +0100 Subject: [PATCH] Fix for issue #1234: Access violation while changing the theme --- Demos/Advanced/Advanced.dsv | 10 +++++++ Demos/Interfaces/charityevents.dsv | 30 +++++++++++++++++++++ Demos/Minimal/Minimal.dsv | 20 ++++++++++++++ Demos/OLE/OLE.dsv | 10 +++++++ Demos/Objects/MVCDemo.dsv | 10 +++++++ Packages/RAD Studio 10.4+/VirtualTreesR.dsv | 20 ++++++++++++++ Source/VirtualTrees.StyleHooks.pas | 14 +++++++--- 7 files changed, 110 insertions(+), 4 deletions(-) create mode 100644 Demos/Advanced/Advanced.dsv create mode 100644 Demos/Interfaces/charityevents.dsv create mode 100644 Demos/Minimal/Minimal.dsv create mode 100644 Demos/OLE/OLE.dsv create mode 100644 Demos/Objects/MVCDemo.dsv create mode 100644 Packages/RAD Studio 10.4+/VirtualTreesR.dsv diff --git a/Demos/Advanced/Advanced.dsv b/Demos/Advanced/Advanced.dsv new file mode 100644 index 000000000..5751759b5 --- /dev/null +++ b/Demos/Advanced/Advanced.dsv @@ -0,0 +1,10 @@ +[ClosedView_RDpcUHJvamVjdHNcVmlydHVhbC1UcmVlVmlld1xTb3VyY2VcVmlydHVhbFRyZWVzLnBhcw==] +Module=D:\Projects\Virtual-TreeView\Source\VirtualTrees.pas +CursorX=42 +CursorY=667 +TopLine=611 +LeftCol=1 +Elisions= +Bookmarks= +EditViewName=D:\Projects\Virtual-TreeView\Source\VirtualTrees.pas + diff --git a/Demos/Interfaces/charityevents.dsv b/Demos/Interfaces/charityevents.dsv new file mode 100644 index 000000000..1dc475e91 --- /dev/null +++ b/Demos/Interfaces/charityevents.dsv @@ -0,0 +1,30 @@ +[ClosedView_RDpcUHJvamVjdHNcVmlydHVhbC1UcmVlVmlld1xTb3VyY2VcVmlydHVhbFRyZWVzLnBhcw==] +Module=D:\Projects\Virtual-TreeView\Source\VirtualTrees.pas +CursorX=47 +CursorY=246 +TopLine=223 +LeftCol=1 +Elisions= +Bookmarks= +EditViewName=D:\Projects\Virtual-TreeView\Source\VirtualTrees.pas +[ClosedView_RDpcUHJvamVjdHNcVmlydHVhbC1UcmVlVmlld1xEZW1vc1xJbnRlcmZhY2VzXG15ZXZlbnRzLnBh +cw==] +Module=D:\Projects\Virtual-TreeView\Demos\Interfaces\myevents.pas +CursorX=6 +CursorY=26 +TopLine=13 +LeftCol=1 +Elisions= +Bookmarks= +EditViewName=D:\Projects\Virtual-TreeView\Demos\Interfaces\myevents.pas + +[ClosedView_RDpcUHJvamVjdHNcVmlydHVhbC1UcmVlVmlld1xEZW1vc1xPYmplY3RzXE1WQ1BhbmVsLnBhcw==] +Module=D:\Projects\Virtual-TreeView\Demos\Objects\MVCPanel.pas +CursorX=21 +CursorY=74 +TopLine=52 +LeftCol=1 +Elisions= +Bookmarks= +EditViewName=D:\Projects\Virtual-TreeView\Demos\Objects\MVCPanel.pas + diff --git a/Demos/Minimal/Minimal.dsv b/Demos/Minimal/Minimal.dsv new file mode 100644 index 000000000..6a4237da6 --- /dev/null +++ b/Demos/Minimal/Minimal.dsv @@ -0,0 +1,20 @@ +[ClosedView_RDpcUHJvamVjdHNcVmlydHVhbC1UcmVlVmlld1xTb3VyY2VcVmlydHVhbFRyZWVzLnBhcw==] +Module=D:\Projects\Virtual-TreeView\Source\VirtualTrees.pas +CursorX=42 +CursorY=667 +TopLine=626 +LeftCol=1 +Elisions= +Bookmarks= +EditViewName=D:\Projects\Virtual-TreeView\Source\VirtualTrees.pas + +[ClosedView_RDpcUHJvamVjdHNcVmlydHVhbC1UcmVlVmlld1xEZW1vc1xNaW5pbWFsXE1haW4ucGFz] +Module=D:\Projects\Virtual-TreeView\Demos\Minimal\Main.pas +CursorX=1 +CursorY=1 +TopLine=1 +LeftCol=1 +Elisions= +Bookmarks= +EditViewName= + diff --git a/Demos/OLE/OLE.dsv b/Demos/OLE/OLE.dsv new file mode 100644 index 000000000..68f02fe96 --- /dev/null +++ b/Demos/OLE/OLE.dsv @@ -0,0 +1,10 @@ +[ClosedView_RDpcUHJvamVjdHNcVmlydHVhbC1UcmVlVmlld1xEZW1vc1xPTEVcTWFpbi5wYXM=] +Module=D:\Projects\Virtual-TreeView\Demos\OLE\Main.pas +CursorX=1 +CursorY=1 +TopLine=1 +LeftCol=1 +Elisions= +Bookmarks= +EditViewName= + diff --git a/Demos/Objects/MVCDemo.dsv b/Demos/Objects/MVCDemo.dsv new file mode 100644 index 000000000..e1eb2caf7 --- /dev/null +++ b/Demos/Objects/MVCDemo.dsv @@ -0,0 +1,10 @@ +[ClosedView_RDpcUHJvamVjdHNcVmlydHVhbC1UcmVlVmlld1xTb3VyY2VcVmlydHVhbFRyZWVzLnBhcw==] +Module=D:\Projects\Virtual-TreeView\Source\VirtualTrees.pas +CursorX=42 +CursorY=667 +TopLine=626 +LeftCol=1 +Elisions= +Bookmarks= +EditViewName=D:\Projects\Virtual-TreeView\Source\VirtualTrees.pas + diff --git a/Packages/RAD Studio 10.4+/VirtualTreesR.dsv b/Packages/RAD Studio 10.4+/VirtualTreesR.dsv new file mode 100644 index 000000000..521437eae --- /dev/null +++ b/Packages/RAD Studio 10.4+/VirtualTreesR.dsv @@ -0,0 +1,20 @@ +[ClosedView_RDpcUHJvamVjdHNcVmlydHVhbC1UcmVlVmlld1xTb3VyY2VcVmlydHVhbFRyZWVzLnBhcw==] +Module=D:\Projects\Virtual-TreeView\Source\VirtualTrees.pas +CursorX=42 +CursorY=667 +TopLine=626 +LeftCol=1 +Elisions= +Bookmarks= +EditViewName=D:\Projects\Virtual-TreeView\Source\VirtualTrees.pas + +[ClosedView_RDpcUHJvamVjdHNcVmlydHVhbC1UcmVlVmlld1xEZW1vc1xPYmplY3RzXE1WQ1R5cGVzLnBhcw==] +Module=D:\Projects\Virtual-TreeView\Demos\Objects\MVCTypes.pas +CursorX=36 +CursorY=194 +TopLine=172 +LeftCol=1 +Elisions= +Bookmarks= +EditViewName=D:\Projects\Virtual-TreeView\Demos\Objects\MVCTypes.pas + diff --git a/Source/VirtualTrees.StyleHooks.pas b/Source/VirtualTrees.StyleHooks.pas index 760eb4aff..a6ad04995 100644 --- a/Source/VirtualTrees.StyleHooks.pas +++ b/Source/VirtualTrees.StyleHooks.pas @@ -523,10 +523,16 @@ procedure TVclStyleScrollBarsHook.WMCaptureChanged(var Msg: TMessage); destructor TVclStyleScrollBarsHook.Destroy; begin - FVertScrollWnd.StyleHook := nil; - FreeAndNil(FVertScrollWnd); - FHorzScrollWnd.StyleHook := nil; - FreeAndNil(FHorzScrollWnd); + if Assigned(FVertScrollWnd) then + begin + FVertScrollWnd.StyleHook := nil; + FreeAndNil(FVertScrollWnd); + end; + if Assigned(FHorzScrollWnd) then + begin + FHorzScrollWnd.StyleHook := nil; + FreeAndNil(FHorzScrollWnd); + end; inherited; end;