Timeline: implement function to set the drawing canvas size

as can be verified with the debugger, it sets the correct sizes now.
And it is called only once (unless the content size actually changes).

TODO: however, the visible display of the GTK widgets is not adjusted
This commit is contained in:
Fischlurch 2019-08-21 19:13:55 +02:00
parent 8c0b3258cb
commit 2390385dc5
4 changed files with 100 additions and 30 deletions

View file

@ -72,6 +72,8 @@ namespace timeline {
namespace { // details of track background painting
const int INITIAL_TIMERULER_HEIGHT_px = 30;
const int INITIAL_CONTENT_HEIGHT_px = 100;
const int INITIAL_CONTENT_WIDTH_px = 200;
/** request a pre-defined CSS style context for the track body */
lumiera::advice::Request<PStyleContext> trackBodyStyle{"style(trackBody)"};
@ -364,22 +366,19 @@ namespace timeline {
return profile_;
};
// initially set up some dummy space. Will be updated to match on first draw() call...
adjustCanvasHeight(INITIAL_CONTENT_WIDTH_px, INITIAL_CONTENT_HEIGHT_px, INITIAL_TIMERULER_HEIGHT_px);
this->set_border_width (0);
this->property_expand() = true; // dynamically grab any available additional space
this->pack_start (rulerCanvas_);
this->pack_start (contentArea_);
this->property_expand() = true; // dynamically grab any available additional space
this->pack_start (rulerCanvas_, Gtk::PACK_SHRINK);
this->pack_start (contentArea_, Gtk::PACK_EXPAND_WIDGET);
contentArea_.set_shadow_type (Gtk::SHADOW_NONE);
contentArea_.set_policy (Gtk::POLICY_ALWAYS, Gtk::POLICY_AUTOMATIC); // always need a horizontal scrollbar
contentArea_.property_expand() = true; // dynamically grab additional space
contentArea_.add (mainCanvas_);
{ // for the initial empty canvas -- use all space the enclosing scrolled window got.
auto currSize = get_allocation();
int height = currSize.get_height();
adjustCanvasHeight(currSize.get_width(), height, INITIAL_TIMERULER_HEIGHT_px);
}
// realise all initially configured elements....
this->show_all();
}
@ -420,9 +419,10 @@ namespace timeline {
if (rootBody_ and isnil (profile_))
{
layout_.triggerDisplayEvaluation();
TODO("retrieve the vertical extension established by the triggerDisplayEvaluation() ");
// adjustCanvasHeight(currSize.get_width(), height, INITIAL_TIMERULER_HEIGHT_px); //////////////////////////TODO
rootBody_->establishTrackSpace (profile_);
adjustCanvasHeight(layout_.getPixSpan().delta(),
rootBody_->calcHeight(),
rootBody_->calcRulerHeight());
}
}
@ -437,8 +437,16 @@ namespace timeline {
void
BodyCanvasWidget::adjustCanvasHeight(int canvasWidth, int totalHeight, int rulerHeight)
{
rulerCanvas_.set_size (canvasWidth, rulerHeight);
mainCanvas_.set_size (canvasWidth, max(0, totalHeight-rulerHeight));
auto adjust = [](Gtk::Layout& canvas, guint newWidth, guint newHeight) -> void
{
guint currWidth{0}, currHeight{0};
canvas.get_size(currWidth, currHeight);
if (currWidth != newWidth or currHeight != newHeight)
canvas.set_size(newWidth, newHeight);
};
adjust (rulerCanvas_, canvasWidth, rulerHeight);
adjust (mainCanvas_, canvasWidth, max(0, totalHeight-rulerHeight));
}

View file

@ -103,6 +103,20 @@ namespace timeline {
*/
uint
TrackBody::calcHeight()
{
uint heightSum = calcRulerHeight() + contentHeight_;
for (TrackBody* subTrack : subTracks_)
heightSum += subTrack->calcHeight();
return heightSum;
}
/**
* sum up the vertical extension required by all overview rulers.
* @return height in pixels, including all gap space
*/
uint
TrackBody::calcRulerHeight()
{
uint overviewHeight = 0;
for (auto& ruler : rulers_)
@ -110,10 +124,7 @@ namespace timeline {
overviewHeight += ruler->calcHeight()
+ ruler->getGapHeight();
}
uint heightSum = overviewHeight + contentHeight_;
for (TrackBody* subTrack : subTracks_)
heightSum += subTrack->calcHeight();
return heightSum;
return overviewHeight;
}

View file

@ -89,6 +89,7 @@ namespace timeline {
void setTrackName (cuString&);
void establishTrackSpace (TrackProfile&);
void attachSubTrack (TrackBody*);
uint calcRulerHeight();
uint calcHeight();
DisplayManager::SignalStructureChange signalStructureChange_;

View file

@ -16598,7 +16598,7 @@
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1489777837120" ID="ID_466927949" MODIFIED="1557498707220" TEXT="Ort f&#xfc;r Command-Definitionen"/>
<node COLOR="#338800" CREATED="1489777846095" ID="ID_1401258681" MODIFIED="1562236719536" TEXT="Design Proc-Command-Framework vorantreiben">
<node COLOR="#338800" CREATED="1489777846095" ID="ID_1401258681" MODIFIED="1566407169479" TEXT="Design Proc-Command-Framework vorantreiben">
<arrowlink COLOR="#352c7d" DESTINATION="ID_1622574347" ENDARROW="Default" ENDINCLINATION="-240;-3336;" ID="Arrow_ID_1512127407" STARTARROW="None" STARTINCLINATION="1848;0;"/>
<font NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="button_ok"/>
@ -19390,9 +19390,9 @@
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1561036914961" ID="ID_318008470" MODIFIED="1561042586692" TEXT="der DisplayManager tr&#xe4;gt das &quot;Anker&quot;-Signal">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1561036987264" ID="ID_1799554074" MODIFIED="1565283189044" TEXT="signalStructureChange">
<node COLOR="#435e98" CREATED="1561036987264" ID="ID_1799554074" MODIFIED="1566407048588" TEXT="signalStructureChange">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1799554074" ENDARROW="Default" ENDINCLINATION="93;0;" ID="Arrow_ID_576839005" SOURCE="ID_1490359824" STARTARROW="None" STARTINCLINATION="169;0;"/>
<linktarget COLOR="#8db7cd" DESTINATION="ID_1799554074" ENDARROW="Default" ENDINCLINATION="816;264;" ID="Arrow_ID_1531606207" SOURCE="ID_833580972" STARTARROW="None" STARTINCLINATION="627;37;"/>
<linktarget COLOR="#8db7cd" DESTINATION="ID_1799554074" ENDARROW="Default" ENDINCLINATION="816;264;" ID="Arrow_ID_1531606207" SOURCE="ID_833580972" STARTARROW="None" STARTINCLINATION="629;34;"/>
<linktarget COLOR="#89adc8" DESTINATION="ID_1799554074" ENDARROW="Default" ENDINCLINATION="340;0;" ID="Arrow_ID_19787354" SOURCE="ID_1865072728" STARTARROW="None" STARTINCLINATION="1589;0;"/>
<icon BUILTIN="info"/>
</node>
@ -20213,7 +20213,9 @@
</node>
</node>
</node>
<node CREATED="1563457226008" ID="ID_104997878" MODIFIED="1563457229476" TEXT="rulerKind"/>
<node CREATED="1563457226008" ID="ID_104997878" MODIFIED="1566406624648" TEXT="rulerKind">
<arrowlink COLOR="#c178a8" DESTINATION="ID_1177786099" ENDARROW="Default" ENDINCLINATION="-1830;0;" ID="Arrow_ID_829837415" STARTARROW="None" STARTINCLINATION="576;-53;"/>
</node>
<node CREATED="1563456345999" ID="ID_411877946" MODIFIED="1563456383198" TEXT="presentationBinding">
<node CREATED="1563456386610" ID="ID_1590625879" MODIFIED="1563456393668" TEXT="wie erscheint der Ruler">
<node CREATED="1563456477213" ID="ID_214170046" MODIFIED="1563456480985" TEXT="sichtbar?"/>
@ -21430,11 +21432,25 @@
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1565282697992" ID="ID_1761874542" MODIFIED="1565282702979" TEXT="vertikal belegter Raum">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1565283074170" ID="ID_1990551085" MODIFIED="1565283084014" TEXT="Trigger/Berechnungsfunktion">
<node COLOR="#338800" CREATED="1565283074170" ID="ID_1990551085" MODIFIED="1566407001705" TEXT="Trigger/Berechnungsfunktion">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1565283089529" ID="ID_833580972" MODIFIED="1566407048588" TEXT="ausgel&#xf6;st durch allgemeine Struktur-&#xc4;nderungen">
<arrowlink COLOR="#8db7cd" DESTINATION="ID_1799554074" ENDARROW="Default" ENDINCLINATION="816;264;" ID="Arrow_ID_1531606207" STARTARROW="None" STARTINCLINATION="629;34;"/>
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1566407025586" ID="ID_1467953135" MODIFIED="1566407042985" TEXT="sicherstellen, da&#xdf; vorher der DisplayEvaluationPass gelaufen ist">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1566407006341" ID="ID_375041651" MODIFIED="1566407015727" TEXT="H&#xf6;he vom TrackBody beziehen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1566407055894" ID="ID_982642970" MODIFIED="1566407059861" TEXT="&#xc4;nderungen erkennen">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1566407136811" ID="ID_832049284" MODIFIED="1566407183538" TEXT="ge&#xe4;nderte Gr&#xf6;&#xdf;e wird nicht sichtbar">
<arrowlink COLOR="#df2014" DESTINATION="ID_1463503563" ENDARROW="Default" ENDINCLINATION="186;-101;" ID="Arrow_ID_29417298" STARTARROW="None" STARTINCLINATION="-60;173;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1565283089529" ID="ID_833580972" MODIFIED="1565283189044" TEXT="ausgel&#xf6;st durch allgemeine Struktur-&#xc4;nderungen">
<arrowlink COLOR="#8db7cd" DESTINATION="ID_1799554074" ENDARROW="Default" ENDINCLINATION="816;264;" ID="Arrow_ID_1531606207" STARTARROW="None" STARTINCLINATION="627;37;"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1555084648375" ID="ID_483631091" MODIFIED="1565283046031" TEXT="Thema: Struktur-Profil">
@ -21444,6 +21460,20 @@
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1566406980688" ID="ID_196847136" MODIFIED="1566406988165" TEXT="Layout-Anpsassungen">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1566407065037" ID="ID_548414744" MODIFIED="1566407093353" TEXT="Scrollbar anpassen nach Gr&#xf6;&#xdf;en&#xe4;nderung">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1566407096905" ID="ID_1463503563" MODIFIED="1566407183538" TEXT="reagiert noch nicht">
<linktarget COLOR="#df2014" DESTINATION="ID_1463503563" ENDARROW="Default" ENDINCLINATION="186;-101;" ID="Arrow_ID_29417298" SOURCE="ID_832049284" STARTARROW="None" STARTINCLINATION="-60;173;"/>
<icon BUILTIN="flag-pink"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1566407104280" ID="ID_1989341591" MODIFIED="1566407127648" TEXT="was hab ich seinerzeit beim Gtk-Canvas-Experiment gemacht?">
<icon BUILTIN="flag-yellow"/>
<icon BUILTIN="help"/>
</node>
</node>
</node>
</node>
<node CREATED="1560618609627" ID="ID_506564995" MODIFIED="1560618618079" TEXT="ben&#xf6;tigt ein Struktur-Profil der Spuren">
<node CREATED="1565282840443" ID="ID_19246515" MODIFIED="1565283046031" TEXT="was ist dieses Struktur-Profil?">
<arrowlink COLOR="#1b36ab" DESTINATION="ID_483631091" ENDARROW="Default" ENDINCLINATION="-88;6;" ID="Arrow_ID_1079857163" STARTARROW="None" STARTINCLINATION="-26;-28;"/>
@ -21672,8 +21702,8 @@
</node>
</node>
<node CREATED="1561151742029" ID="ID_857875045" MODIFIED="1561151755207" TEXT="repr&#xe4;sentiert als Ruler des top-level-Track"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1561151772593" ID="ID_1142063549" MODIFIED="1561151789167" TEXT="aber die Zahl der Pr&#xe4;fix-Elemente mu&#xdf; korrekt eingesetzt werden">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1561151772593" ID="ID_1142063549" MODIFIED="1566406715937" TEXT="aber die Zahl der Pr&#xe4;fix-Elemente mu&#xdf; korrekt eingesetzt werden">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1554995841966" ID="ID_1443277448" MODIFIED="1561151658998" TEXT="genaue Rolle der Session??">
<linktarget COLOR="#ce7c94" DESTINATION="ID_1443277448" ENDARROW="Default" ENDINCLINATION="509;0;" ID="Arrow_ID_1589685813" SOURCE="ID_725781646" STARTARROW="None" STARTINCLINATION="296;0;"/>
@ -21683,8 +21713,9 @@
</node>
</node>
</node>
<node CREATED="1544839288936" ID="ID_43593052" MODIFIED="1563143640658" TEXT="Ruler-Konfigs in das systematische UI-Modell">
<node CREATED="1544839288936" ID="ID_43593052" MODIFIED="1566406817964" TEXT="Ruler-Konfigs in das systematische UI-Modell">
<arrowlink COLOR="#5f84b0" DESTINATION="ID_1083901292" ENDARROW="Default" ENDINCLINATION="-746;-75;" ID="Arrow_ID_1167484185" STARTARROW="None" STARTINCLINATION="-981;0;"/>
<linktarget COLOR="#5287c5" DESTINATION="ID_43593052" ENDARROW="Default" ENDINCLINATION="-197;439;" ID="Arrow_ID_350259030" SOURCE="ID_1516897126" STARTARROW="None" STARTINCLINATION="-244;0;"/>
<node COLOR="#338800" CREATED="1544849869166" ID="ID_1025477379" MODIFIED="1557498707229" TEXT="Frage: wo ansiedeln?">
<icon BUILTIN="button_ok"/>
<node CREATED="1544849875744" ID="ID_27673928" MODIFIED="1557498707229" TEXT="im TrackPresenter">
@ -21725,6 +21756,24 @@
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1566406728259" ID="ID_763463375" MODIFIED="1566406748449" TEXT="konkrete Ausgestaltung">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563143002107" ID="ID_1177786099" MODIFIED="1566406652163" TEXT="verschiedene Ruler-Arten">
<linktarget COLOR="#c178a8" DESTINATION="ID_1177786099" ENDARROW="Default" ENDINCLINATION="-1830;0;" ID="Arrow_ID_829837415" SOURCE="ID_104997878" STARTARROW="None" STARTINCLINATION="576;-53;"/>
<linktarget COLOR="#622e7d" DESTINATION="ID_1177786099" ENDARROW="Default" ENDINCLINATION="556;0;" ID="Arrow_ID_1339566753" SOURCE="ID_1063302647" STARTARROW="Default" STARTINCLINATION="556;0;"/>
<icon BUILTIN="hourglass"/>
</node>
<node CREATED="1566406750272" ID="ID_1606625965" MODIFIED="1566406839560" TEXT="Steuerung der konkreten H&#xf6;he (gem&#xe4;&#xdf; Inhalt)">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1566406763774" ID="ID_764785834" MODIFIED="1566406772229" TEXT="verwende bisher Platzhalter-Konstanten">
<icon BUILTIN="flag-pink"/>
</node>
<node CREATED="1566406773325" ID="ID_1516897126" MODIFIED="1566406830389" TEXT="soll einmal aus dem systematischen UI-Modell bzw Session-Modell kommen">
<arrowlink COLOR="#5287c5" DESTINATION="ID_43593052" ENDARROW="Default" ENDINCLINATION="-197;439;" ID="Arrow_ID_350259030" STARTARROW="None" STARTINCLINATION="-244;0;"/>
<icon BUILTIN="bell"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1541814972977" HGAP="8" ID="ID_1482433902" MODIFIED="1557498707230" TEXT="offen..." VSHIFT="5">
@ -22616,7 +22665,8 @@
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563143002107" ID="ID_1177786099" MODIFIED="1563143014910" TEXT="verschiedene Ruler-Arten">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563143002107" ID="ID_1063302647" MODIFIED="1566406652162" TEXT="verschiedene Ruler-Arten">
<arrowlink COLOR="#622e7d" DESTINATION="ID_1177786099" ENDARROW="Default" ENDINCLINATION="556;0;" ID="Arrow_ID_1339566753" STARTARROW="Default" STARTINCLINATION="556;0;"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
@ -22694,8 +22744,8 @@
<node CREATED="1566401468573" ID="ID_636590903" MODIFIED="1566401510213" TEXT="Beschlu&#xdf;: direkt nach dem Display-Evaluation-Pass">
<icon BUILTIN="yes"/>
<node CREATED="1566401506391" ID="ID_116486175" MODIFIED="1566401506391" TEXT="BodyCanvasWidget::maybeRebuildLayout()"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1566401515511" ID="ID_1551253495" MODIFIED="1566401521816" TEXT="neue Funktion hierf&#xfc;r">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1566401515511" ID="ID_1551253495" MODIFIED="1566406332332" TEXT="neue Funktion hierf&#xfc;r">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>