Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Multimedia
Kdenlive
Commits
7c4a8b0d
Commit
7c4a8b0d
authored
Nov 02, 2021
by
Jean-Baptiste Mardelle
Browse files
Keyframes: moving a keyframe in timeline will also move other selected keyframes
parent
12cbd496
Pipeline
#93358
canceled with stage
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
src/assets/keyframes/model/keyframemodel.cpp
View file @
7c4a8b0d
...
...
@@ -220,6 +220,12 @@ bool KeyframeModel::moveKeyframe(GenTime oldPos, GenTime pos, QVariant newVal, F
if
(
auto
ptr
=
m_model
.
lock
())
{
if
(
ptr
->
m_selectedKeyframes
.
size
()
>
1
)
{
// We have several selected keyframes, move them all
double
offset
=
0.
;
if
(
newVal
.
isValid
()
&&
newVal
.
type
()
==
QVariant
::
Double
)
{
int
row
=
static_cast
<
int
>
(
std
::
distance
(
m_keyframeList
.
begin
(),
m_keyframeList
.
find
(
oldPos
)));
double
oldVal
=
data
(
index
(
row
),
NormalizedValueRole
).
toDouble
();
offset
=
newVal
.
toDouble
()
-
oldVal
;
}
QVector
<
GenTime
>
positions
;
for
(
auto
&
kf
:
ptr
->
m_selectedKeyframes
)
{
if
(
kf
>
0
)
{
...
...
@@ -259,7 +265,14 @@ bool KeyframeModel::moveKeyframe(GenTime oldPos, GenTime pos, QVariant newVal, F
if
(
p
==
oldPos
)
{
res
=
res
&&
moveOneKeyframe
(
oldPos
,
oldPos
+
delta
,
newVal
,
undo
,
redo
,
updateView
);
}
else
{
res
=
res
&&
moveOneKeyframe
(
p
,
p
+
delta
,
QVariant
(),
undo
,
redo
,
updateView
);
if
(
!
qFuzzyIsNull
(
offset
))
{
// Calculate new value
int
row
=
static_cast
<
int
>
(
std
::
distance
(
m_keyframeList
.
begin
(),
m_keyframeList
.
find
(
p
)));
double
newVal2
=
qBound
(
0.
,
data
(
index
(
row
),
NormalizedValueRole
).
toDouble
()
+
offset
,
1.
);
res
=
res
&&
moveOneKeyframe
(
p
,
p
+
delta
,
newVal2
,
undo
,
redo
,
updateView
);
}
else
{
res
=
res
&&
moveOneKeyframe
(
p
,
p
+
delta
,
QVariant
(),
undo
,
redo
,
updateView
);
}
}
}
return
res
;
...
...
src/timeline2/view/qml/KeyframeView.qml
View file @
7c4a8b0d
...
...
@@ -164,7 +164,7 @@ Rectangle
}
}
onEntered
:
{
timeline
.
showKeyBinding
(
i18n
(
"
<b>Shift drag</b> to move all keyframes after this one.
"
))
timeline
.
showKeyBinding
(
i18n
(
"
<b>Drag</b> to move selected keyframes position.
<b>Shift drag</b> to move all keyframes after this one.
"
))
}
onExited
:
{
timeline
.
showKeyBinding
()
...
...
@@ -272,7 +272,7 @@ Rectangle
resetSelection
()
}
onEntered
:
{
timeline
.
showKeyBinding
(
i18n
(
"
<b>Shift drag</b> to change value o
nly
, <b>Ctrl click</b> for multiple keyframe selection.
"
))
timeline
.
showKeyBinding
(
i18n
(
"
<b>Shift drag</b> to change value o
f selected keyframes
, <b>Ctrl click</b> for multiple keyframe selection.
"
))
}
onExited
:
{
timeline
.
showKeyBinding
()
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment