Skip to content

merge with master 201909 - #11

Open
livius2 wants to merge 868 commits into
livius2:masterfrom
JAM-Software:master
Open

merge with master 201909#11
livius2 wants to merge 868 commits into
livius2:masterfrom
JAM-Software:master

Conversation

@livius2

@livius2 livius2 commented Sep 2, 2019

Copy link
Copy Markdown
Owner

No description provided.

Daniel-Tr and others added 30 commits January 11, 2024 15:31
… installation of VS/VSBuildTools could've been found
…ot platform specific. This fixes compiler warning in demp project MVCDemo.
… field. This should allow deriving classes to adjust this behavior more easily.
…tore if previous message was a double click,
…n the value. of parameter ChildNodesOnly"

This reverts commit 9ace431.
…later deal with the fact that StartNode is nil
joachimmarder and others added 30 commits April 7, 2026 10:23
Bumped dpm package patch version (no interface change)
Fix regression caused by previous fix for issue #1358
… current implementation, it might become invisible, if the text scaling in Windows is activated, while the overall scaling for the screen isn't
…tscaling

fix: Adjusted height calculation for the text-editing-caret. With the…
…_PRINT

The header lives in the non-client area, and two separate mistakes made rendering
the tree into a caller supplied device context unusable.

WMPaint always fetched a window DC via GetDCEx to draw the header, ignoring the DC
that comes with the message. TWinControl.PaintTo performs WM_PAINT with the target
DC, so the client area ended up in the copy while the header was painted onto the
real window instead - the copy had no header at all. It now paints into Message.DC
when one is supplied.

That alone put the header two pixels off: PaintTo draws the border itself and then
moves the origin inside it, while FHeaderRect is relative to the outer window
corner, so the header was shifted by the border width and clipped on the opposite
edge. csPaintCopy marks exactly that case, and GetBorderDimensions returns negative
values, so adding them shifts back.

WMPrint drew the header regardless of the PRF_ flags, so a PRF_CLIENT only request
got the non-client header painted over the client area, which is the corrupted
border the reporter saw. It now checks PRF_NONCLIENT.

Measured on Delphi 13.1 / Win32 by rendering into an off-screen bitmap and counting
the pixels of a distinctively coloured header, so the result does not depend on
window visibility or theming:

                                        before          after
  PaintTo                               0 px            304 px, (362,2)-(377,20)
  WM_PRINT, PRF_CLIENT only             38 px           0 px
  WM_PRINT, PRF_CLIENT or PRF_NONCLIENT 304 px          304 px, unchanged
  WM_PRINT, PRF_NONCLIENT               304 px          304 px, unchanged

PaintTo is now pixel identical to WM_PRINT with PRF_NONCLIENT.

Tests/VTPaintToIssue632Tests.pas covers all four cases. Three of them fail without
this change and one passes either way, guarding against over-correcting the case
that already worked. Suite goes from 135 passed / 5 failed to 138 passed / 2
failed; the two remaining failures are the pre-existing TestCopyHTML1 and
TestCopyHTML2, which also fail on an unmodified master here.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The zip is the reproduction project of a bug report and slipped in
with 85428f2 (Fixed issue #1368).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…rea and were trapped there

Dropping a normal column in front of a fixed column made it fixed
(deliberate behavior of TVirtualTreeColumn.SetPosition when a column
enters the fixed area) - and since issue #1314 fixed columns lose
coDraggable, so the column could never be dragged out again.

Redirect the drop target in TVTHeader.DragTo(): when a non-fixed
column is dragged over a fixed one, the target becomes the first
non-fixed visible column instead. Drop mark and drop are consistent
and the column lands right after the fixed area, staying normal and
draggable. The programmatic path is unchanged: assigning Position
directly still moves a column into the fixed area and makes it fixed.

New regression test Tests/VTFixedColumnDragIssue1377Tests.pas drives
DragIndex/DragTo/ColumnDropped directly and asserts the redirected
target, the resulting position and the preserved options; it fails
without the fix. A second test pins the unchanged programmatic
behavior. Test suite: 2 pre-existing failures (TestCopyHTML1/2, also
failing on unmodified master), no new failures.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Fix #632: header is missing from PaintTo and drawn for client-only WM_PRINT
…-zip

Remove accidentally committed repro project from the repository root
…drag

Fixed issue #1377: Normal columns could be dropped inside the fixed area and were trapped there
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.