Only allow a single keyframe to be selected

Fix crash when adding keyframe exactly on top of another
This commit is contained in:
johni0702
2016-09-02 13:45:40 +02:00
parent cd1a53531b
commit 50ba370c1c
4 changed files with 32 additions and 40 deletions

View File

@@ -100,9 +100,7 @@ public class GuiKeyframeTimeline extends AbstractGuiTimeline<GuiKeyframeTimeline
if (keyframe.getTime() >= startTime && keyframe.getTime() <= endTime) {
double relativeTime = keyframe.getTime() - startTime;
int positonX = BORDER_LEFT + (int) (relativeTime / visibleTime * visibleWidth) - KEYFRAME_SIZE / 2;
int u = KEYFRAME_TEXTURE_X +
(mod.getSelectedTimeKeyframe() == keyframe || mod.getSelectedPositionKeyframe() == keyframe
? KEYFRAME_SIZE : 0);
int u = KEYFRAME_TEXTURE_X + (mod.getSelectedKeyframe() == keyframe ? KEYFRAME_SIZE : 0);
int v = KEYFRAME_TEXTURE_Y;
if (keyframe.getValue(CameraProperties.POSITION).isPresent()) {
if (keyframe.getValue(SpectatorProperty.PROPERTY).isPresent()) {
@@ -196,7 +194,7 @@ public class GuiKeyframeTimeline extends AbstractGuiTimeline<GuiKeyframeTimeline
lastClickedTime = now;
lastClickedKeyframe = keyframe;
lastClickedPath = pathKeyframePair.getLeft();
selectKeyframe(lastClickedPath, lastClickedKeyframe);
gui.getMod().setSelectedKeyframe(lastClickedKeyframe);
// We might be dragging
draggingStartX = position.getX();
dragging = true;
@@ -241,16 +239,6 @@ public class GuiKeyframeTimeline extends AbstractGuiTimeline<GuiKeyframeTimeline
}
}
private void selectKeyframe(int path, Keyframe keyframe) {
if (path == GuiPathing.POSITION_PATH) {
gui.getMod().setSelectedPositionKeyframe(keyframe);
gui.getMod().setSelectedTimeKeyframe(null);
} else {
gui.getMod().setSelectedPositionKeyframe(null);
gui.getMod().setSelectedTimeKeyframe(keyframe);
}
}
@Override
public boolean mouseDrag(ReadablePoint position, int button, long timeSinceLastCall) {
if (!dragging) {
@@ -293,7 +281,7 @@ public class GuiKeyframeTimeline extends AbstractGuiTimeline<GuiKeyframeTimeline
draggingChange = gui.moveKeyframe(path, lastClickedKeyframe, newTime);
// Selected keyframe has been replaced
selectKeyframe(lastClickedPath, path.getKeyframe(newTime));
gui.getMod().setSelectedKeyframe(path.getKeyframe(newTime));
// Path has been changed
path.updateAll();