Fix transition overlap duplicates, trim slider sync, and drag performance
- Make each transition boundary symmetric (left_overlap controls MAIN→TRANS, right_overlap controls TRANS→MAIN) so frame indices map 1:1 with no repeats - Track committed frames per folder to cap overlaps and prevent over-allocation - Fix float truncation in frame mapping (int→round) that caused off-by-one dupes - Sync trim slider to follow frame selection in Sequence Order / With Transitions - Defer expensive file list rebuild to mouse release for smooth trim slider drag - Apply trim settings to transition folders in both display and export paths - Refresh trim slider after session restore to show correct file counts Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -15,6 +15,7 @@ class TrimSlider(QWidget):
|
||||
"""
|
||||
|
||||
trimChanged = pyqtSignal(int, int, str) # Emits (trim_start, trim_end, 'left' or 'right')
|
||||
trimDragFinished = pyqtSignal(int, int, str) # Emits final values on mouse release
|
||||
|
||||
def __init__(self, parent: Optional[QWidget] = None) -> None:
|
||||
"""Initialize the trim slider.
|
||||
@@ -287,5 +288,11 @@ class TrimSlider(QWidget):
|
||||
|
||||
def mouseReleaseEvent(self, event: QMouseEvent) -> None:
|
||||
"""Handle mouse release to stop dragging."""
|
||||
self._dragging = None
|
||||
self.setCursor(Qt.CursorShape.ArrowCursor)
|
||||
if self._dragging:
|
||||
handle = self._dragging
|
||||
self._dragging = None
|
||||
self.setCursor(Qt.CursorShape.ArrowCursor)
|
||||
self.trimDragFinished.emit(self._trim_start, self._trim_end, handle)
|
||||
else:
|
||||
self._dragging = None
|
||||
self.setCursor(Qt.CursorShape.ArrowCursor)
|
||||
|
||||
Reference in New Issue
Block a user