From 99d504a3aa800d6ada9f817813495c470347b6f2 Mon Sep 17 00:00:00 2001 From: David Capello Date: Mon, 1 Feb 2016 15:21:17 -0300 Subject: [PATCH] Fix cel opacity slider enabled-status when we click a new cel in the Timeline The timeline must update its internal range before it fires an active site changed (Editor::setFrame/Layer()). So ContextObserver::onActiveSiteChange() observers can access the updated timeline range. --- src/app/ui/timeline.cpp | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/app/ui/timeline.cpp b/src/app/ui/timeline.cpp index e48b1e9a6..8b4260f99 100644 --- a/src/app/ui/timeline.cpp +++ b/src/app/ui/timeline.cpp @@ -354,10 +354,10 @@ bool Timeline::onProcessMessage(Message* msg) bool selectFrame = (mouseMsg->left() || !isFrameActive(m_clk.frame)); if (selectFrame) { - setFrame(m_clk.frame); - m_state = STATE_SELECTING_FRAMES; m_range.startRange(getLayerIndex(m_layer), m_clk.frame, Range::kFrames); + + setFrame(m_clk.frame); } break; } @@ -367,6 +367,9 @@ bool Timeline::onProcessMessage(Message* msg) bool selectLayer = (mouseMsg->left() || !isLayerActive(m_clk.layer)); if (selectLayer) { + m_state = STATE_SELECTING_LAYERS; + m_range.startRange(m_clk.layer, m_frame, Range::kLayers); + // Did the user select another layer? if (old_layer != m_clk.layer) { setLayer(m_layers[m_clk.layer]); @@ -376,11 +379,6 @@ bool Timeline::onProcessMessage(Message* msg) // Change the scroll to show the new selected layer/cel. showCel(m_clk.layer, m_frame); - - if (selectLayer) { - m_state = STATE_SELECTING_LAYERS; - m_range.startRange(m_clk.layer, m_frame, Range::kLayers); - } break; } case PART_LAYER_EYE_ICON: @@ -397,6 +395,11 @@ bool Timeline::onProcessMessage(Message* msg) || !isFrameActive(m_clk.frame)); frame_t old_frame = m_frame; + if (selectCel) { + m_state = STATE_SELECTING_CELS; + m_range.startRange(m_clk.layer, m_clk.frame, Range::kCels); + } + // Select the new clicked-part. if (old_layer != m_clk.layer || old_frame != m_clk.frame) { @@ -407,11 +410,6 @@ bool Timeline::onProcessMessage(Message* msg) // Change the scroll to show the new selected cel. showCel(m_clk.layer, m_frame); - - if (selectCel) { - m_state = STATE_SELECTING_CELS; - m_range.startRange(m_clk.layer, m_clk.frame, Range::kCels); - } invalidate(); break; }