Skip to content

Version 1.1.0

Choose a tag to compare

@NickPittas NickPittas released this 08 Nov 17:46
· 79 commits to main since this release

KAsset Manager v1.1.0 — Full change report since v1.0.5

User‑visible and technical changes since v1.0.5, focused on drag‑and‑drop, preview UI/behavior, and sequence handling.

Highlights

  • External drag‑and‑drop for sequences is now adaptive by target:
    • Explorer/Desktop: copies individual frames (not parent folders)
    • Nuke/After Effects: imports as a single sequence (by dragging the folder path)
  • Internal operations remain unchanged: in‑app drags still use the full expanded frame list for copy/move.
  • Consistent DnD behavior across File Manager and Asset Manager, including their preview panes and full‑screen overlay.
  • Preview Overlay: improved DnD from overlay, fixed event handling, refined control behavior.
  • File Manager preview pane: DnD now correctly exports full sequences (adaptive by target).
  • Installer packaging updated for 1.1.0 (NSIS script, build script)—not user‑facing in app but included for release completeness.

User‑facing changes

1) External DnD for sequences (Explorer vs DCCs)

  • Windows Explorer/Desktop:
    • Dropping a sequence now sends the individual frame files via CF_HDROP, so Explorer performs the file operation on frames, not the parent folder.
  • Nuke and After Effects:
    • Dropping a sequence now sends the folder path(s), so both apps import a single sequence item.
  • Single files:
    • Unchanged: Explorer and DCCs receive the single file as expected.
  • Internal in‑app operations:
    • Still use a custom MIME with the full frame list; copy/move semantics unchanged.

Applies to ALL drag sources:

  • File Manager grid (thumbnails) and list (details)
  • File Manager right preview pane (image/video)
  • Full‑screen Preview Overlay
  • Asset Manager grid and list

What you’ll notice:

  • Explorer no longer copies parent folders when dragging sequences—only frames.
  • Nuke/AE now always import sequences as one item when dragging sequences.

2) File Manager: drop targeting and behavior

  • Drops onto specific subfolders/items are honored (both tree and view).
  • Drops onto empty space of the same folder are blocked to avoid no‑op moves/copies (per your spec).
  • Shift modifies drop action (move vs copy) as before.
  • Works in both Grid and List view modes.

3) Preview Overlay (UI/behavior)

  • DnD from the Overlay now uses adaptive external DnD (same rules as above).
  • Controls/layout polish:
    • Lifted bottom controls area to avoid OS/taskbar overlap (keeps controls visible).
    • Alpha channel toggle retained for images with alpha.
    • Wheel zoom events routed through event filters to prevent parent scroll when zooming images/video.
  • Stability/behavior fixes:
    • Fixed event/braces issues that could break builds.
    • Space toggles overlay close; on close, focus/selection is restored to the source view (FM/AM), so arrow navigation continues smoothly.

4) File Manager preview pane (sequences)

  • Dragging from the right preview pane exports sequences properly:
    • Explorer gets frame files, DCCs get the folder path.
  • When previewing sequence representatives (grouped sequences), the preview overlay opens the entire sequence with an informative “[start‑end]” label.

Technical details

Adaptive DnD implementation

  • New native IDataObject (Windows OLE) adapts CF_HDROP payload at request time:
    • Explorer/Desktop/self‑drop → returns expanded frame files
    • DCC apps (Nuke/AE) → returns folder path(s)
  • Target detection logic:
    • Checks root window class: CabinetWClass (Explorer), Progman/WorkerW (Desktop)
    • Falls back to process name check: explorer.exe/FileExplorer.exe
    • Treats our own process as “frames mode” (internal drags copy/move frames)
  • Internal drag remains via “application/x-kasset-sequence-urls” with the expanded frame list for reliable in‑app file operations.

Integration points

  • Asset Manager grid (custom AssetGridView::startDrag)
  • File Manager grid/list (FmGridViewEx/FmListViewEx::startDrag)
  • File Manager preview pane drag handler
  • Preview Overlay drag handler (image/video)

Event/behavior fixes

  • Corrected brace/structure issues in preview overlay and FM preview event filters (resolved build breaks).
  • Wheel/drag event filters on QGraphicsView/QVideoWidget to avoid unintended parent scroll while zooming/dragging.

Affected files (key changes)

  • native/qt6/src/virtual_drag.h

    • Public API: startAdaptivePathsDrag(framePaths, folderPaths) for adaptive external CF_HDROP drags
  • native/qt6/src/virtual_drag.cpp

    • Implemented AdaptivePathsDataObject (IDataObject)
    • Explorer/Desktop/self detection (by window class and process image name)
    • CF_HDROP and CFSTR_PREFERREDDROPEFFECT wiring
    • startAdaptivePathsDrag orchestration
  • native/qt6/src/mainwindow.cpp

    • Asset Manager and File Manager drag sources now call VirtualDrag::startAdaptivePathsDrag
    • File Manager preview pane drag sends full sequence (adaptive by target)
    • File Manager drop handling refined:
      • Allow drops onto specific subfolders/items (tree and view)
      • Block drops onto empty space of same folder (no‑op)
      • Map proxy to source correctly; honor Shift for Move
    • Overlay open/close integration ensures playback stops and focus/selection restoration
  • native/qt6/src/preview_overlay.cpp

    • Overlay drag handler integrated with VirtualDrag adaptive logic
    • Event filter fixes (wheel/drag) and stability fixes
    • Controls layout kept visible (margins), alpha toggle behavior maintained
  • Build/packaging (release completeness)

    • installer/kassetmanager.nsi — OutFile set to 1.1.0; VIProductVersion/ProductVersion/FileVersion to 1.1.0.0; DisplayVersion registry to 1.1.0
    • scripts/build-installer.ps1 — uses Ninja; selects newest installer; writes matching .sha256 filename
  • Docs (release completeness)

    • CHANGELOG.md — 1.1.0 notes + packaging bullets
    • docs/USER_GUIDE.md / README.md / TECH.md — external DnD behavior and version history updates

Behavior matrix (summary)

  • Dragging a sequence to Explorer/Desktop: copies individual frames (not folder)
  • Dragging a sequence to Nuke/AE: imports as a single sequence via folder path
  • Dragging a single file anywhere: unchanged
  • Internal copy/move within KAssetManager: unchanged (full frame lists used)
  • File Manager drops: subfolder targeting supported; empty space/same folder blocked
  • Preview Overlay:
    • Dragging from overlay follows adaptive rules
    • Space closes overlay; focus restored to source view

Testing scenarios you can run

  • Sequence → Explorer/Desktop
    • Expect frames copied individually; folder not copied
  • Sequence → Nuke/After Effects
    • Expect a single sequence item
  • Single file → Explorer/Nuke/AE
    • Expect the single file behavior (unchanged)
  • FM preview pane drag of a sequence
    • Explorer gets frames; Nuke/AE get folder
  • Overlay drag of a sequence
    • Same adaptive behavior as above
  • Drops onto FM:
    • Drop onto a subfolder item: accepts
    • Drop onto empty space within same folder: blocked (ignore)
    • Shift modifies Move/Copy

Known limitations and notes

  • Explorer detection covers CabinetWClass, Desktop (Progman/WorkerW), and explorer.exe/FileExplorer.exe. If a third‑party shell replaces Explorer, we can extend detection.
  • For in‑app operations, we intentionally preserve full frame lists for correctness and parity with existing copy/move queues.