Identify different Timeline areas with Site::Focus

This commit is contained in:
David Capello 2016-06-14 10:15:47 -03:00
parent 7ced1c791b
commit 147588ff6f
3 changed files with 21 additions and 8 deletions

View File

@ -60,7 +60,7 @@ void RemoveLayerCommand::onExecute(Context* context)
DocumentApi api = document->getApi(transaction);
const Site* site = writer.site();
if (site->focus() == Site::OnTimeline &&
if (site->inTimeline() &&
!site->selectedLayers().empty()) {
SelectedLayers selLayers = site->selectedLayers();
remove_children_if_parent_is_selected(selLayers);

View File

@ -227,7 +227,11 @@ void UIContext::onGetActiveSite(Site* site) const
Timeline* timeline = App::instance()->timeline();
if (timeline &&
timeline->range().enabled()) {
site->focus(Site::OnTimeline);
switch (timeline->range().type()) {
case DocumentRange::kCels: site->focus(Site::InCels); break;
case DocumentRange::kFrames: site->focus(Site::InFrames); break;
case DocumentRange::kLayers: site->focus(Site::InLayers); break;
}
site->selectedLayers(timeline->selectedLayers());
site->selectedFrames(timeline->selectedFrames());
}
@ -235,10 +239,10 @@ void UIContext::onGetActiveSite(Site* site) const
ColorBar* colorBar = ColorBar::instance();
if (colorBar &&
colorBar->getPaletteView()->getSelectedEntriesCount() > 0) {
site->focus(Site::OnColorBar);
site->focus(Site::InColorBar);
}
else {
site->focus(Site::OnEditor);
site->focus(Site::InEditor);
}
}
}

View File

@ -28,12 +28,14 @@ namespace doc {
public:
// Were is the user focus. E.g. If this focus is in the timeline,
// it means that commands should applied in the context of the
// timeline (layers + frames).
// timeline (layers, or frames, or cels).
enum Focus {
None,
OnEditor,
OnTimeline,
OnColorBar
InEditor,
InLayers,
InFrames,
InCels,
InColorBar
};
Site()
@ -44,6 +46,13 @@ namespace doc {
, m_frame(0) { }
const Focus focus() const { return m_focus; }
bool inEditor() const { return m_focus == InEditor; }
bool inLayers() const { return m_focus == InLayers; }
bool inFrames() const { return m_focus == InFrames; }
bool inCels() const { return m_focus == InCels; }
bool inColorBar() const { return m_focus == InColorBar; }
bool inTimeline() const { return (inLayers() || inFrames() || inCels()); }
const Document* document() const { return m_document; }
const Sprite* sprite() const { return m_sprite; }
const Layer* layer() const { return m_layer; }