Skip to content

Related Words#2

Merged
sillsdevgerrit merged 152 commits intodevelopfrom
feature/RelatedWords
Jun 24, 2014
Merged

Related Words#2
sillsdevgerrit merged 152 commits intodevelopfrom
feature/RelatedWords

Conversation

@ddaspit
Copy link
Contributor

@ddaspit ddaspit commented May 26, 2014

No description provided.

andrew-polk and others added 30 commits November 21, 2013 15:34
Change-Id: I542a71c7eacbf3c53b2b219cc024e734d3314435
FdoUi is not getting distributed with FDO, so we need the necessary
domain logic in FDO.  In this case, some of the lexical lookup logic
was integrated with the UI code.

Change-Id: I9d938db428d498d8011fb35ba81063ae55f5de86
Create ProgressBarWrapper as a pass-through
implementation of ProgressBar.
Add non-Windows Forms ProgressBarStyle enum.

Change-Id: Ia567e55b63768b725e3f3533af4f4348766c0d92
User actions are passed through an interface.
Original Windows Forms implementation is provided for Fieldworks.

Change-Id: I47450ce5735b538058eb6d35bbb0e2c6c7af6fd5
Move three dialogs for Backup and Restore from FDO to FdoUi.
Clean up some changes from previous changes
regarding passing the userAction implementation.

Change-Id: I45099fa253793808351f11f946dd00593de7356d
Move FWVersionTooOld from FDO to FdoUi.
Reorganize dialogs in FdoUi.
Use System Timer rather than Windows Forms Timer in UnitofWorkService.

Change-Id: I6fd818f8e55bb65a5ff001910bbe7c2288bee36b
-FdoFactoryAdditions.cs
-OverridesCellar.cs

Change-Id: I719c819eb5d3ffc5aecd5ae0556bbda4db965fec
Delete unused FindFileStatusDialog.
Move ProgressBarWrapper, FWVersionTooOld, ImageCollection.

Change-Id: I2adf2185661d918f12d2c8af43dedf65f244a7ab
Move ErrorReport calls behind the IFdoUserAction interface.

Change-Id: I05504a56c1394f0d70201476a04b90f3d925e249
Move FdoUiStrings.resx back to original location

Change-Id: Id3769a2f3c719af619daf0129f6b8c7f47fcbca4
refactored ThreadHelper into an interface

Change-Id: Ibee4a7a9bdcfe6a4a06809b5488f12d16cc659f2
Change-Id: I41e61fe4890eeedeecbf38f933d2d473d6f99cac
Change-Id: I98a795dba9616dad4a2d7fbaee64d88b200b9985
Add Retry method to IFdoUserAction and implementations.
Move various message boxes out of ClientServerServices.

Change-Id: I98ddcea0bd2dc4bee3ec9697f904f57f44c8d8b4
Add Retry method to IFdoUserAction and implementations.
Move various message boxes out of ClientServerServices.

Change-Id: I81c2db15cbaeb336c1f3e36341d89c2b7a551dc9
-FdoCache
-CmObjectSurrogate
-XMLBackendProvider

Change-Id: I01c5ef946a2b55bc73021b0b1e61f1d2dc339c3e
-ScrSfFileList
-Db40ClientServerBackendProvider
-ClientServerServices

Change-Id: I96793d106b6a98e583cfc014520ad7cffde5a005
Throw exceptions in ImportFrom6_0 instead of
showing message boxes in low-level code.

Change-Id: Ic2e188bd8cb7ef0066bd7678ed32b50b868009aa
Mostly unused using directives.

Change-Id: I86197262db61de0381208f4e1dbaba2bc1a9a516
-XmlImportData
-ProjectRestoreService
-Db4)ServerFinder
-FdoCache

Change-Id: Ib1f99e50f4da501bf1257ee4e4fbfbbf938351e3
Change-Id: Id50f30811405de1c5cd76e6bb0e99bbf82e74965
Change-Id: I9ed150d011aa4a78d8ab7f07ccce0e977d4b635b
Create FDO's own file extension class for containing
file extension constants to remove dependencies on
FwResources.

Change-Id: Ic0f2717ae37e8012b2c9cbc9d42d415999896bcb
Remove dependencies of FDO upon FwUtil.
Moved IProjectIdentifier and TestProjectId.

Change-Id: I68da701502838655f1361dcbe56f1d0aefae475a
Remove dependencies of FDO upon FwUtil.
Moved IProgress.

Change-Id: I3cbee27bf8e9455ed04a9194ad56708fee7ab2e4
Remove dependencies of FDO upon FwUtil.
Move IThreadedProgress.

Change-Id: I2831f3abe6867e7636e427712a6c6cbb32960382
Move GenDate from FwUtil to CoreImpl.

Change-Id: I64e4bd9f6a0c57f77d5e6a8c1b8779463a8789f2
Change-Id: I003565e4993cee6a6866ef01c37da95581719baa
Change-Id: Ic37bc9ed8e57b945003809c74bdba1b2d998050e
Prepare for refactoring of DirectoryFinder.
One step closer to removal of duplicate code in FwFileExtensions.

Change-Id: I20e881ea670ed50df9e5a5e3002838960afe6211
ddaspit added 7 commits May 30, 2014 15:06
Change-Id: Ib6ca3317206535c0a4e0dd97279bdd811e3a35a0
Change-Id: I2267e4b2b3ab31f19b1c4097ebc304b9c0864f4b
Change-Id: I77e73f122088f552e31a75a23a6efaa0e8c38c78
Change-Id: Ie2bed37bedcf2fd54d2711ed528e7aa71ea8997a
Change-Id: Ib0fc97b2813bd6b74da91d198d0aed1819e21176
Change-Id: I2eb7e75355fdfe8d60b5cc36dfb3677d7b7a344c
Change-Id: I2809fd563a78d48f74bdbceb5ef3a52e2738737c
@ddaspit
Copy link
Contributor Author

ddaspit commented Jun 2, 2014

Most of the files are updates to DLLs that were already checked in.
There are two new DLLs: Paratext.LexicalContracts.dll and
protobuf-net.dll. The first is a Paratext DLL, so I'm not sure what the
best way would be to handle this one. The other is an open source
library that is on nuget. Have we started using nuget on FieldWorks yet?

Damien

On 5/28/2014 4:28 AM, John Thomson wrote:

A number of binary files are added. Our recent practice has been to
try to get binary files in some other way than adding them to a repo.
Typically we get them from a TeamCity build. There are a couple of
strategies for doing this. Some projects, where it was not feasible to
get the output of another build, have gone as far as making empty TC
projects, which do nothing but retrieve an artifact from a repository
and exposing it as their output. There are then ways to automate
figuring out all the things to download from TC so that a local build
will use the right artifacts.


Reply to this email directly or view it on GitHub
#2 (comment).

ddaspit added 13 commits June 3, 2014 17:35
Change-Id: I15d3cf4fa17a45de84d87e13612b6c0d5b547a35
Change-Id: Ie0bdd2b3345bd5b6c4b6de415fcc70e612260639
Change-Id: Ia438ac157e21a723c709762890d0d5f8becd769c
Change-Id: Iae76e15f7c0d78f717e577d8796de9b4d2c2ee2e
Change-Id: I68fffa98a8ee92a6edba5a48f4b087416d262074
Conflicts:
	Src/LexText/ParserEngine/ParserCore/HCWorker.cs

Change-Id: Icff6d37ead28fed463467c638df4f07d61afb1af
Change-Id: If5ff319777ddb2c9ddf9d14e8eb63bcf111189f0
Change-Id: I128200cce3116f1934a44fb494e699773b435018
Change-Id: Iaf9d78458472676574d9798bed34147a8518b9bd
Change-Id: Ifaaa5034d8dcb5cf56b0c14b30dac8b9623e15f2
Change-Id: Ibea465e614e05387d02d387c9ae8f7e96c15e6d7
Change-Id: I0fad0b60ae4449afd3f61da1453be84391c41e69
Change-Id: I149d562b4282f3c02a606d208351412d78e14db9
@sillsdevgerrit sillsdevgerrit merged commit ecb169b into develop Jun 24, 2014
@sillsdevgerrit sillsdevgerrit deleted the feature/RelatedWords branch June 24, 2014 08:24
sillsdevgerrit pushed a commit that referenced this pull request Dec 16, 2015
*Removed the DeleteReversalIndex from Edit menu
*Handled the issue when default config is missing
*Refactored the code on Create Config file.
*Handled the issue #2 added in JIRA

Change-Id: I499ccbd6de5e1bf4f481da702de7fa721b621510
sillsdevgerrit pushed a commit that referenced this pull request Oct 19, 2022
Change-Id: Ib8ed926d1167ae4dac6ad0b4484d26951c029bc0
mark-sil added a commit that referenced this pull request Jul 16, 2025
There was data in a DocFragment that was only needed by the
fragment that was going to write to the docx file. We now moved
that data to a MasterDocFragment and only have a Body in the
regular DocFragment. Regular DocFragments are frequently created
and discarded.  Not having them open a memory stream saves a
significant amount of time.  Combined with the performance
improvements in commit e1943fb, export times are now 30% to
50% of previous times.

Change-Id: I9ec6fa92709d3562c9331ec30c4c2920a71468b4
mark-sil added a commit that referenced this pull request Jul 17, 2025
There was data in a DocFragment that was only needed by the
fragment that was going to write to the docx file. We now moved
that data to a MasterDocFragment and only have a Body in the
regular DocFragment. Regular DocFragments are frequently created
and discarded.  Not having them open a memory stream saves a
significant amount of time.  Combined with the performance
improvements in commit e1943fb, export times are now 30% to
50% of previous times.
johnml1135 added a commit that referenced this pull request Mar 5, 2026
# This is the 1st commit message:

feat(render): expand DataTree render scenarios and persist benchmark timings

standardize DataTree test data with predictable field naming across scenarios
add per-scenario timing capture and write results to datatree-timings.json
add Newtonsoft.Json to DetailControlsTests for timing serialization
add render-testing skill documentation for baseline and benchmark workflow
remove obsolete generated Build/FieldWorks.targets.bad file
update checked-in test result artifact for current render test run

fix: resolve build blocker + timing test layout gaps

- Remove duplicate Kernel project entry in FieldWorks.sln that blocked
  NuGet restore (first entry was missing EndProject)
- Add CitationForm and Senses parts to test Normal layout so timing
  tests produce real slices instead of 0
- Add LexSense-Detail-Senses part and subsense recursion to GlossSn
  layout so WorkloadGrowsWithComplexity test correctly validates
  that deeper scenarios produce more slices
- Include user edits to implementation-paths.md

OS-3: All 4 DataTreeTiming tests now pass

perf: add render-testing workflow + timing enhancement log

- Update render-testing skill with explicit devil's advocate stage, retest/review, and mandatory TIMING_ENHANCEMENTS.md before commit.

- Refine DataTree tab-index optimization safety by moving final ResetTabIndices(0) to CreateSlices finally.

- Keep DeepSuspendLayout/DeepResumeLayout batching in DummyObjectSlice.BecomeReal.

- Mark OS-3 and OS-5 complete in OpenSpec tasks and add TIMING_ENHANCEMENTS.md with measured outcomes.

Validation: build.ps1 -BuildTests; test.ps1 -TestFilter DataTreeTiming -NoBuild

perf: paint pipeline optimization — clip-rect culling + double-buffering

- HandlePaintLinesBetweenSlices: skip separator lines outside paint clip rect,
  reducing per-paint iteration from O(N) to O(visible) during scroll/partial
  repaints. Avoids O(N) XML attribute parsing on off-screen slices.
- DataTree constructor: enable OptimizedDoubleBuffer + AllPaintingInWmPaint
  to eliminate flicker during paint.
- Add DataTreeTiming_PaintPerformance test for paint-time regression detection.
- Update render-testing skill with test coverage assessment step.
- Update TIMING_ENHANCEMENTS.md with enhancements 3 and 4.

perf: layout path optimization — early-exit guard, construction skip, paint-path skip

Enhancement 5: Slice.SetWidthForDataTreeLayout returns early when
m_widthHasBeenSetByDataTree && Width == width, avoiding redundant
splitter resizing and event handler churn on every layout pass.

Enhancement 6: DataTree.OnSizeChanged skips the O(N) splitter
adjustment loop during ConstructingSlices. HandleLayout1(fFull=true)
handles width synchronization after construction completes.

Enhancement 7: HandleLayout1 paint path (fFull=false) skips
SetWidthForDataTreeLayout for non-visible slices, reducing width-sync
work from O(N) to O(K) per paint where K is visible slice count.

Also fixes RemoveDuplicateCustomFields test to match Test.fwlayout
Normal layout changes from prior commit.

perf: XML attribute caching + MakeSliceVisible high-water mark

Enhancement 8: Cache header/skipSpacerLine/sameObject XML attributes
on Slice as lazy bool? fields. Eliminates per-paint XML parsing in
HandlePaintLinesBetweenSlices (~2,700 XML lookups/sec at 60Hz with
15 visible slices reduced to 0 after first access).

Enhancement 9: Change MakeSliceVisible from static to instance method.
Pass known index from HandleLayout1 caller (avoids O(N) IndexOf).
Track m_lastVisibleHighWaterMark so the inner 'make preceding visible'
loop amortizes to O(N) total instead of O(N*V). Preserves the .NET
Framework bug workaround (LT-7307). Reset mark in CreateSlices.

perf: construction-path guards + optimization regression tests

Enhancement 10: Skip ResetTabIndices in RemoveSlice during ConstructingSlices.
Mirror of Enhancement 1 — the finally block in CreateSlices already does a
single ResetTabIndices(0) after all removals/insertions complete.

Enhancement 11: Skip AdjustSliceSplitPosition in InstallSlice during
ConstructingSlices. HandleLayout1(fFull=true) sets correct widths + splitter
positions after construction, making per-insert adjustment redundant.

Added 7 optimization regression tests (DataTreeOpt_ prefix):
- WidthStabilityAfterLayout (Enhancement 5)
- AllViewportSlicesVisible (Enhancement 9)
- XmlCacheConsistency (Enhancement 8)
- XmlCacheInvalidationOnConfigChange (Enhancement 8)
- SequentialPaintsProduceIdenticalOutput (Enhancements 3,4,7,8)
- SlicePositionsMonotonicallyIncreasing (Enhancement 3)
- IsHeaderNodeDelegatesToCachedProperty (Enhancement 8)

All 12 DataTree tests pass (5 timing + 7 optimization).

# This is the commit message #2:

feat: Enhancement 12 — binary search in HandleLayout1 paint path

Add FindFirstPotentiallyVisibleSlice binary search to skip above-viewport
slices during paint-path layout. Addresses JohnT's original TODO in OnPaint.

- HandleLayout1 now starts iteration at the first potentially visible slice
  (with -1 safety margin) instead of index 0 on paint-path calls
- Timing improvements: shallow -71%, deep -20%, extreme -7%, paint -11%
- 5 binary-search risk-reduction tests added (DataTreeOpt_ prefix)
- Regenerate snapshot baselines after layout/parts changes from 64ab221
- Add mandatory snapshot regression check (Step 6) to render-testing skill
- Update TIMING_ENHANCEMENTS.md with E12 measurements and devil's advocate

# This is the commit message #3:

The real optimization - HWND virtualization

# This is the commit message #4:

fix: correct VwDrawRootBuffered coordinate mapping + trailing separator bars

Three rendering quality fixes for the snapshot capture pipeline:

1. VwDrawRootBuffered coordinate fix (CompositeViewCapture.cs):
   GetCoordRects returns rcDst in rootSite-local coordinates (origin
   at HorizMargin, 0). The overlay code was passing clientRect with
   the rootSite's position relative to the DataTree (e.g. X=175),
   causing VwDrawRootBuffered to offset rcDst by (-175, -y) and
   render content at negative X — clipping or hiding it entirely.
   Fix: render each rootSite into a temp bitmap at local coords
   (0,0,w,h), then composite into the main bitmap at the correct
   DataTree-relative position.

2. EnsureAllSlicesInitialized uses BecomeRealInPlace (CompositeViewCapture.cs):
   Replaced manual handle-forcing with the production ViewSlice
   initialization path, which sets AllowLayout=true and triggers
   rootBox.Layout with the correct width.

3. Trailing separator bar removal (VectorReferenceView.cs,
   PossibilityVectorReferenceView.cs):
   DisplayVec called AddSeparatorBar after every item including the
   last, causing VwSeparatorBox to draw unwanted grey bars after
   single/final items like 'Main Dictionary'. Added guard to only
   add separators between items.

Baselines regenerated — all 6 scenarios show 40-70% more rendered
content. All 23 DataTree tests pass (timing + optimization + snapshots).

# This is the commit message #5:

Added tests before virtualization

# This is the commit message #6:

update renders

# This is the commit message #7:

Hwnd implementation started

# This is the commit message #8:

upgrade openspec

# This is the commit message #9:

hwnd implementation
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.

5 participants