Timeline: investigate how to handle profile rebuilding

as it turns out, the core problem is that we need a way to detect and signal
structural changes to the logical UI model
This commit is contained in:
Fischlurch 2019-06-16 17:26:59 +02:00
parent d5af020520
commit 83c462abc3
5 changed files with 408 additions and 266 deletions

View file

@ -235,13 +235,6 @@ namespace timeline {
TimelineCanvas::TimelineCanvas (_Renderer groundingFac, _Renderer overlayFac)
: Gtk::Layout{}
, renderGrounding_{groundingFac}
, renderOverlay_{overlayFac}
{ }
BodyCanvasWidget::~BodyCanvasWidget() { }
@ -308,6 +301,15 @@ namespace timeline {
}
TimelineCanvas::TimelineCanvas (_Renderer groundingFac, _Renderer overlayFac)
: Gtk::Layout{}
, renderGrounding_{groundingFac}
, renderOverlay_{overlayFac}
{ }
/**
* Custom drawing of the timeline content area.
* The inherited `Gtk::Layout::on_raw(Context)` handles all drawing of child widgets placed onto the virtual canvas.

View file

@ -118,9 +118,8 @@ namespace timeline {
TrackBody::establishTrackSpace (TrackProfile& profile)
{
bool topLevel = isnil (profile);
if (topLevel)
profile.append_prelude(rulers_.size());
profile.append_prelude (rulers_.size());
for (auto& ruler : rulers_)
{
@ -130,7 +129,7 @@ namespace timeline {
profile.append_gap (gapHeight);
}
profile.append_content (this->contentHeight_);
if (not isnil(subTracks_))
if (not isnil (subTracks_))
{
profile.addSlopeDown();
for (TrackBody* subTrack : subTracks_)
@ -139,7 +138,7 @@ namespace timeline {
}
if (topLevel)
profile.append_coda(TIMELINE_BOTTOM_PADDING_px);
profile.append_coda (TIMELINE_BOTTOM_PADDING_px);
}

View file

@ -23,6 +23,10 @@
/** @file track-presenter.cpp
** Implementation details of track presentation management.
** Especially here we define the model binding of all sub-elements belonging
** to a given track. The TrackPresenter::buildMutator() implementation hooks up
** the necessary callbacks, to allow adding and removing of sub elements and properties
** of a track, by sending appropriate _mutation messages_ over the stage::UiBus.
**
** @todo WIP-WIP-WIP as of 12/2016
** @todo as of 10/2018 timeline display in the UI is rebuilt to match the architecture

View file

@ -93,7 +93,7 @@ namespace timeline {
~DisplayFrame()
{
TODO ("cause the managed presentation elements to detach from their parents");
}
} ///////////////////////////////////TICKET #1198 -- clarify to what extent esp. the header widgets need to be actively removed from the display structure. Is it sufficient just to kill the TrackHeadWidget
void
setTrackName (cuString& name)

File diff suppressed because it is too large Load diff