From 0ca72b1afd4a67aa20466bb19dda1ab5c29fed16 Mon Sep 17 00:00:00 2001
From: ovf <ovf@mm.st>
Date: Fri, 10 Nov 2023 15:14:49 +0000
Subject: [PATCH] community/shotcut: backport a patch fixing timeline display

https://github.com/mltframework/shotcut/commit/4f92e2c3f4dc562fd92d631239a3203555c8ae52

via https://gitlab.archlinux.org/archlinux/packaging/packages/shotcut/-/commit/2427d19ffae0fe0a583b0daa00693b4f1673ee0c
---
 community/shotcut/APKBUILD                    |  4 +-
 ...3.09.29-dont-shadow-FINAL-properties.patch | 74 +++++++++++++++++++
 2 files changed, 77 insertions(+), 1 deletion(-)
 create mode 100644 community/shotcut/shotcut-23.09.29-dont-shadow-FINAL-properties.patch

diff --git a/community/shotcut/APKBUILD b/community/shotcut/APKBUILD
index 1c06fdbc46a6..8848e073bdfd 100644
--- a/community/shotcut/APKBUILD
+++ b/community/shotcut/APKBUILD
@@ -2,7 +2,7 @@
 # Maintainer: Kevin Daudt <kdaudt@alpinelinux.org>
 pkgname=shotcut
 pkgver=23.09.29
-pkgrel=0
+pkgrel=1
 pkgdesc="Cross-platform video editor"
 url="https://www.shotcut.org"
 arch="all !armhf !armv7 !aarch64" # no opengl1.1 support, only 2
@@ -20,6 +20,7 @@ makedepends="
 	"
 subpackages="$pkgname-doc $pkgname-lang"
 source="$pkgname-$pkgver.tar.xz::https://github.com/mltframework/shotcut/releases/download/v$pkgver/shotcut-src-${pkgver//./}.txz
+	shotcut-23.09.29-dont-shadow-FINAL-properties.patch
 	launcher
 	"
 builddir="$srcdir/src/shotcut"
@@ -47,5 +48,6 @@ package() {
 
 sha512sums="
 7ea0d6e7e2f2439b590c724f9ebf55cea8dd02f528ec340e847e2bf04afcb32ff3d930bc1c2f24a7dfbe4285bf104dcf652041fd2abefbd56ccd809ebda53bf1  shotcut-23.09.29.tar.xz
+d24fabecd5d4fa4318854ed7d87efd86ed3898cbf662fcb1aba29063c0d5be6be468f951891ff7918e28c51584ae5992146292b835157a136741dad9a44b22ac  shotcut-23.09.29-dont-shadow-FINAL-properties.patch
 c9d4263cf5c4a1964ad73fb810353e338e6417e3241a177f444ef151c2da7970eaaa0ca94cfcf52da4d3fe9b1abc4d5fac78361c287aa7e10e3aab2026893cca  launcher
 "
diff --git a/community/shotcut/shotcut-23.09.29-dont-shadow-FINAL-properties.patch b/community/shotcut/shotcut-23.09.29-dont-shadow-FINAL-properties.patch
new file mode 100644
index 000000000000..57d368898195
--- /dev/null
+++ b/community/shotcut/shotcut-23.09.29-dont-shadow-FINAL-properties.patch
@@ -0,0 +1,74 @@
+Patch-Source: https://github.com/mltframework/shotcut/commit/4f92e2c3f4dc562fd92d631239a3203555c8ae52
+From 4f92e2c3f4dc562fd92d631239a3203555c8ae52 Mon Sep 17 00:00:00 2001
+From: "Jason E. Hale" <jhale@FreeBSD.org>
+Date: Thu, 19 Oct 2023 21:09:40 -0400
+Subject: [PATCH] Don't shadow FINAL properties. Fixes #1479 (#1481)
+
+---
+ .../views/timeline/CornerSelectionShadow.qml   |  4 ++--
+ src/qml/views/timeline/timeline.qml            | 18 +++++++++---------
+ 2 files changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/src/qml/views/timeline/CornerSelectionShadow.qml b/src/qml/views/timeline/CornerSelectionShadow.qml
+index 348fa780f6..2b3c8102f4 100644
+--- a/src/qml/views/timeline/CornerSelectionShadow.qml
++++ b/src/qml/views/timeline/CornerSelectionShadow.qml
+@@ -19,11 +19,11 @@ import QtQuick
+ Item {
+     id: root
+ 
+-    property Item clip
++    property Item clipN
+     property bool mirrorGradient: false
+ 
+     width: 100
+-    height: clip ? clip.height : 0
++    height: clipN ? clipN.height : 0
+ 
+     Rectangle {
+         id: shadowGradient
+diff --git a/src/qml/views/timeline/timeline.qml b/src/qml/views/timeline/timeline.qml
+index 98dbff27e1..bd2c60a049 100644
+--- a/src/qml/views/timeline/timeline.qml
++++ b/src/qml/views/timeline/timeline.qml
+@@ -534,16 +534,16 @@ Rectangle {
+                                 model: timeline.selection
+ 
+                                 Rectangle {
+-                                    property var clip: trackAt(modelData.y).clipAt(modelData.x)
+-                                    property var track: typeof clip !== 'undefined' && typeof dragDelta !== 'undefined' ? trackAt(clip.trackIndex + dragDelta.y) : 0
++                                    property var clipN: trackAt(modelData.y).clipAt(modelData.x)
++                                    property var track: typeof clipN !== 'undefined' && typeof dragDelta !== 'undefined' ? trackAt(clipN.trackIndex + dragDelta.y) : 0
+ 
+-                                    x: clip && typeof dragDelta !== 'undefined' ? clip.x + dragDelta.x : 0
++                                    x: clipN && typeof dragDelta !== 'undefined' ? clipN.x + dragDelta.x : 0
+                                     y: track ? track.y : 0
+-                                    width: clip ? clip.width : 0
++                                    width: clipN ? clipN.width : 0
+                                     height: track ? track.height : 0
+                                     color: 'transparent'
+                                     border.color: 'red'
+-                                    visible: clip && !clip.Drag.active && clip.trackIndex === clip.originalTrackIndex
++                                    visible: clipN && !clipN.Drag.active && clipN.trackIndex === clipN.originalTrackIndex
+                                 }
+                             }
+                         }
+@@ -574,14 +574,14 @@ Rectangle {
+ 
+             CornerSelectionShadow {
+                 y: tracksRepeater.count ? tracksRepeater.itemAt(timeline.currentTrack).y + ruler.height - tracksFlickable.contentY : 0
+-                clip: timeline.selection.length ? tracksRepeater.itemAt(timeline.selection[0].y).clipAt(timeline.selection[0].x) : null
+-                opacity: clip && clip.x + clip.width < tracksFlickable.contentX ? 1 : 0
++                clipN: timeline.selection.length ? tracksRepeater.itemAt(timeline.selection[0].y).clipAt(timeline.selection[0].x) : null
++                opacity: clipN && clipN.x + clipN.width < tracksFlickable.contentX ? 1 : 0
+             }
+ 
+             CornerSelectionShadow {
+                 y: tracksRepeater.count ? tracksRepeater.itemAt(timeline.currentTrack).y + ruler.height - tracksFlickable.contentY : 0
+-                clip: timeline.selection.length ? tracksRepeater.itemAt(timeline.selection[timeline.selection.length - 1].y).clipAt(timeline.selection[timeline.selection.length - 1].x) : null
+-                opacity: clip && clip.x > tracksFlickable.contentX + tracksFlickable.width ? 1 : 0
++                clipN: timeline.selection.length ? tracksRepeater.itemAt(timeline.selection[timeline.selection.length - 1].y).clipAt(timeline.selection[timeline.selection.length - 1].x) : null
++                opacity: clipN && clipN.x > tracksFlickable.contentX + tracksFlickable.width ? 1 : 0
+                 anchors.right: parent.right
+                 mirrorGradient: true
+             }
-- 
GitLab