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:
parent
8c0b3258cb
commit
2390385dc5
4 changed files with 100 additions and 30 deletions
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -89,6 +89,7 @@ namespace timeline {
|
|||
void setTrackName (cuString&);
|
||||
void establishTrackSpace (TrackProfile&);
|
||||
void attachSubTrack (TrackBody*);
|
||||
uint calcRulerHeight();
|
||||
uint calcHeight();
|
||||
|
||||
DisplayManager::SignalStructureChange signalStructureChange_;
|
||||
|
|
|
|||
|
|
@ -16598,7 +16598,7 @@
|
|||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node CREATED="1489777837120" ID="ID_466927949" MODIFIED="1557498707220" TEXT="Ort fü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ägt das "Anker"-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öst durch allgemeine Struktur-Ä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ß vorher der DisplayEvaluationPass gelaufen ist">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1566407006341" ID="ID_375041651" MODIFIED="1566407015727" TEXT="Höhe vom TrackBody beziehen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1566407055894" ID="ID_982642970" MODIFIED="1566407059861" TEXT="Änderungen erkennen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1566407136811" ID="ID_832049284" MODIFIED="1566407183538" TEXT="geänderte Größ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öst durch allgemeine Struktur-Ä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ößenä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ö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ä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äfix-Elemente muß korrekt eingesetzt werden">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1561151772593" ID="ID_1142063549" MODIFIED="1566406715937" TEXT="aber die Zahl der Präfix-Elemente muß 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öhe (gemäß 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ß: 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ür">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1566401515511" ID="ID_1551253495" MODIFIED="1566406332332" TEXT="neue Funktion hierfür">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
|
|||
Loading…
Reference in a new issue