Timeline: reorganise additional padding in TrackHeadWidget
- rearrange cell content and disable auto-expand to prevent the content area from becoming oversized initially - fix autocompletion error in signal binding, causing segfault when moving the scrollbar
This commit is contained in:
parent
61f0e2f6a7
commit
0a99e5dfc8
4 changed files with 203 additions and 10 deletions
|
|
@ -85,7 +85,7 @@ namespace timeline {
|
|||
// make the ZoomWindow react on changes to the horizontal scrollbar pos
|
||||
bodyCanvas_.get_hadjustment()->property_value().signal_changed().connect(
|
||||
sigc::bind(sigc::mem_fun(*this, &TimelineLayout::syncZoomWindow)
|
||||
,bodyCanvas_.get_focus_hadjustment()));
|
||||
,bodyCanvas_.get_hadjustment()));
|
||||
// make the ZoomWindow react on changes to the window geometry
|
||||
bodyCanvas_.signal_size_allocate().connect(
|
||||
sigc::mem_fun(*this, &TimelineLayout::sizeZoomWindow));
|
||||
|
|
@ -191,7 +191,7 @@ cout<<"|!| zoom-scroll pos="<<pos<<" start="<<windowStart<<" zoomWin="<<zoomWind
|
|||
int contentWidthPx = alloc.get_width();
|
||||
cout<<"|V| sigAlloc width="<<contentWidthPx<<endl;
|
||||
contentWidthPx = util::max (contentWidthPx - 100, 100); ////////////////////////////////////////TODO: visual debugging
|
||||
if (contentWidthPx != zoomWindow_.pxWidth())
|
||||
if (abs(contentWidthPx) != zoomWindow_.pxWidth())
|
||||
{////////////////////////////////////////////////////////////////TODO
|
||||
cout<<"|!| zoom-calibrateExtension("<<zoomWindow_.pxWidth()<<" ⟶ "<<contentWidthPx<<")"<<endl;
|
||||
zoomWindow_.calibrateExtension (contentWidthPx);
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ namespace stage {
|
|||
namespace timeline {
|
||||
|
||||
namespace {
|
||||
const uint DEFAULT_CONTENT_HEIGHT_px = 80;
|
||||
const uint DEFAULT_CONTENT_HEIGHT_px = 40;
|
||||
const uint TIMELINE_BOTTOM_PADDING_px = 5;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -72,13 +72,15 @@ namespace timeline {
|
|||
, childCnt_{0}
|
||||
{
|
||||
nameTODO_.set_xalign(0);
|
||||
nameTODO_.set_yalign(0);
|
||||
nameTODO_.set_yalign(1.0);
|
||||
treeTODO_.set_xalign(0);
|
||||
treeTODO_.set_yalign(0.5);
|
||||
headCtrl_.set_valign(Gtk::Align::ALIGN_CENTER);
|
||||
headCtrl_.set_halign(Gtk::Align::ALIGN_FILL);
|
||||
this->attach (nameTODO_, 0,0, 2,1);
|
||||
this->attach (treeTODO_, 0,1, 1,1);
|
||||
attachDirectContent();
|
||||
|
||||
this->property_expand() = false; // do not expand to fill
|
||||
this->show_all();
|
||||
}
|
||||
|
||||
|
|
@ -87,11 +89,9 @@ namespace timeline {
|
|||
: Gtk::Grid{}
|
||||
, ctrlTODO_{"💡"}
|
||||
{
|
||||
ctrlTODO_.set_xalign (0.0);
|
||||
ctrlTODO_.set_xalign (0.3);
|
||||
ctrlTODO_.set_yalign (0.5);
|
||||
this->attach (ctrlTODO_, 0,0, 1,1);
|
||||
// dynamically grab any available additional space
|
||||
ctrlTODO_.property_expand() = true;
|
||||
this->show_all();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -43497,8 +43497,8 @@
|
|||
<arrowlink COLOR="#4a449e" DESTINATION="ID_1189311522" ENDARROW="Default" ENDINCLINATION="1548;60;" ID="Arrow_ID_751989601" STARTARROW="None" STARTINCLINATION="1439;57;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1672798860387" ID="ID_981451006" MODIFIED="1672798872066" TEXT="Feedback auf Scrolling">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1672798860387" ID="ID_981451006" MODIFIED="1673747058376" TEXT="Feedback auf Scrolling">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1672798873057" ID="ID_133007183" MODIFIED="1672799054739" TEXT="horizontale Canvas-Breite kommt nicht korrekt an">
|
||||
<arrowlink COLOR="#ac3f80" DESTINATION="ID_1699842831" ENDARROW="Default" ENDINCLINATION="-1384;79;" ID="Arrow_ID_927325344" STARTARROW="None" STARTINCLINATION="-1848;-74;"/>
|
||||
<icon BUILTIN="broken-line"/>
|
||||
|
|
@ -43507,6 +43507,9 @@
|
|||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1672969412314" ID="ID_128441040" MODIFIED="1672969448542" TEXT="Fehler: horizontale Ausdehnung instabil">
|
||||
<icon BUILTIN="broken-line"/>
|
||||
<node CREATED="1673020358513" ID="ID_1745939268" MODIFIED="1673020364580" TEXT="Beobachtung(DUMP)">
|
||||
<node CREATED="1673020365563" ID="ID_1034029673" MODIFIED="1673020378010" TEXT="layout_.getPixSpan().delta() verhält sich "zyklisch""/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1672969457755" ID="ID_1145571154" MODIFIED="1672969483227" TEXT="Fehler: run-away in der Höhe bei wiederholter Display-Evaluation">
|
||||
<icon BUILTIN="broken-line"/>
|
||||
|
|
@ -43516,6 +43519,196 @@
|
|||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1672969501989" ID="ID_1513242412" MODIFIED="1672969532573" TEXT="Verdacht: da nun erstmals re-Evaluationen stattfinden, wird ein Init-Fehler sichtbar">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node CREATED="1673020204201" ID="ID_130901033" MODIFIED="1673020213759" TEXT="Beobachtung (DUMP)">
|
||||
<icon BUILTIN="info"/>
|
||||
<node CREATED="1673020215292" ID="ID_1472123011" MODIFIED="1673020256186" TEXT="in der Tat: accomodateContentHeight() fügt laufend hinzu"/>
|
||||
<node CREATED="1673020257307" ID="ID_1535375022" MODIFIED="1673020292144" TEXT="was allerdings wächst ist der Beitrag von head_.calcContentHeight()">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node CREATED="1673021362882" ID="ID_954750461" MODIFIED="1673021435861" TEXT="TrackHeadWidget::accommodateContentHeight -> increaseContentHeight() ; size-request + Δ">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node CREATED="1673022453591" ID="ID_1189073820" MODIFIED="1673022471744" TEXT="der tatsächliche Aufschlag stammt jeweils aus der 2.Phase: DisplayFrame::sync_and_balance"/>
|
||||
</node>
|
||||
<node CREATED="1673027617885" ID="ID_1539603067" MODIFIED="1673027627009" TEXT="Feststellungen">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1673027738477" ID="ID_910627159" MODIFIED="1673027741960" TEXT="Problem-1">
|
||||
<node CREATED="1673027628894" ID="ID_642294954" MODIFIED="1673027656160" TEXT="sync_and_balance schlägt zusätzliches Padding auf"/>
|
||||
<node CREATED="1673027656904" ID="ID_748230993" MODIFIED="1673027704972">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
im nächsten Zyklus wird das aber als Head-<b>content</b> gewertet ⟹ body-content wird erhöht
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1673027710473" ID="ID_1922165032" MODIFIED="1673027727174" TEXT="⟹ sync_and_balance erkennt wieder eine Diskrepanz"/>
|
||||
<node CREATED="1673027813155" ID="ID_217654042" MODIFIED="1673027871603" TEXT="padding und content im Head werden vermischt">
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1673029325047" ID="ID_460101701" MODIFIED="1673029337394" TEXT="au weia: diese Berechnungen sind aber noch relativ "vorläufig""/>
|
||||
<node CREATED="1673029338126" ID="ID_1059214961" MODIFIED="1673029685791">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
damals war ich <i>zufrieden, </i>sobald es „halbwegs“ funktioniert hat
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<ul>
|
||||
<li>
|
||||
erster Draft ab718ed6aa9d<br />hat nicht funktioniert, vmtl da ich letztlich auf widget.get_allocation().hight() aufgesetzt habe, und das kann initial noch null sein
|
||||
</li>
|
||||
<li>
|
||||
überarbeitet ab718ed6aa9db<br />dann habe ich rein auf Basis der einzelnen Zellen einen denfensiven Berechnungsweg verwendet: nimm MAX(preferred_height, reale Allokation); habe dies aber nicht angepaßt auf mehrere Kind-Tracks, oder vielleicht doch? oder die Logik verkehrt herum??
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1673029688327" ID="ID_1637216543" MODIFIED="1673029700984" TEXT="jedenfalls wurde nie klar definiert, was hier "content" sein soll">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1673303781860" ID="ID_1183053320" MODIFIED="1673303787059" TEXT="Belegung der Felder">
|
||||
<node CREATED="1673303792878" ID="ID_15099340" MODIFIED="1673303858649" TEXT="0.Zeile / span=2 : Name (ElementBox)"/>
|
||||
<node CREATED="1673303859525" ID="ID_1941277838" MODIFIED="1673303874479" TEXT="1.Zeile: Tree-Graph">
|
||||
<node CREATED="1673303876412" ID="ID_1855860657" MODIFIED="1673303929005" TEXT="»Content« (falls leer)"/>
|
||||
<node CREATED="1673303930118" ID="ID_450860952" MODIFIED="1673303937582" TEXT="1. Kind"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1673031545264" ID="ID_52427355" MODIFIED="1673031561329" TEXT="das Padding wird aufgeschlagen auf (left=1, top=0)"/>
|
||||
<node CREATED="1673031562629" ID="ID_1138131947" MODIFIED="1673031633192" TEXT="die calcContentHeitght() wertet aus MAX( (0,0), (1,0))">
|
||||
<node CREATED="1673031610727" ID="ID_1604141819" MODIFIED="1673031618290" TEXT="also alle Zellen in der 1.Zeile"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1673312714420" ID="ID_152822454" MODIFIED="1673312733027" STYLE="fork" TEXT="das ist wohl die Inkonsistenz hier">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1673314655497" ID="ID_525789725" MODIFIED="1673314662292" TEXT="also beides getrennt handhaben">
|
||||
<node CREATED="1673314663880" ID="ID_935563695" MODIFIED="1673314699327" TEXT="die contentHeight wirklich im 4.Quadranten anwenden"/>
|
||||
<node CREATED="1673314701753" ID="ID_1401546681" MODIFIED="1673314779597" TEXT="zusätzlich eine Expansion einführen, die aber nicht in die contentHeight eingeht!">
|
||||
<node CREATED="1673745725545" ID="ID_527844757" MODIFIED="1673745739164" TEXT="für die "content height" wirklich nur die Content-Felder auswerten"/>
|
||||
<node CREATED="1673745740224" ID="ID_321245152" MODIFIED="1673745785441" TEXT="zusätzliche Expansion in einem anderen Feld machen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
z.B. in (0,1) = Struktur-Graph
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1673320252819" ID="ID_754862223" MODIFIED="1673747131064" TEXT="bricht noch nicht den Zyklus">
|
||||
<icon BUILTIN="broken-line"/>
|
||||
<node CREATED="1673320275690" ID="ID_1903820221" MODIFIED="1673745681092" TEXT="jetzt ist der Head-content von Anfang an zu groß">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1673320299575" ID="ID_1836748064" MODIFIED="1673392645658" TEXT="aber warum stabilisiert sich dieser nicht?">
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1673745636138" ID="ID_1839905420" MODIFIED="1673745695183" TEXT="Grund-1: weil der Head-content sich selbständig expandiert"/>
|
||||
</node>
|
||||
<node CREATED="1673705464388" ID="ID_1052559390" MODIFIED="1673705515338" TEXT="hilfreich ist: property_expand() = false im Content-Bereich"/>
|
||||
<node COLOR="#338800" CREATED="1673747106233" ID="ID_830917303" MODIFIED="1673747119474" TEXT="damit ist das Problem für Blatt-Tracks gelöst">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1673747138573" ID="ID_1650195806" MODIFIED="1673747159901" TEXT="aber Tracks mit Content und Kind-Tracks wachsen weiterhin">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1673027746843" ID="ID_484113914" MODIFIED="1673027750543" TEXT="Problem-2">
|
||||
<node CREATED="1673027751867" ID="ID_1170742278" MODIFIED="1673027768260" TEXT="size-request im Head wächst monoton"/>
|
||||
<node CREATED="1673027770065" ID="ID_1809846655" MODIFIED="1673027783498" TEXT="body content-height wächst monoton"/>
|
||||
<node CREATED="1673027796693" ID="ID_162051390" MODIFIED="1673027805715" TEXT="es fehlt ein reset">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#435e98" CREATED="1673746034872" ID="ID_66895155" MODIFIED="1673747049281" TEXT="Segfault bei horizontalem Scroling">
|
||||
<icon BUILTIN="broken-line"/>
|
||||
<node CREATED="1673746067311" ID="ID_154133331" MODIFIED="1673746074945" TEXT="Beobachtung">
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1673746076315" ID="ID_1475835480" MODIFIED="1673746096996" TEXT="TimelineLayout::syncZoomWindow(PAdjustment)"/>
|
||||
<node CREATED="1673746101072" ID="ID_1560542600" MODIFIED="1673746109872" TEXT="Argument ist ein Null-ptr"/>
|
||||
<node CREATED="1673746264291" ID="ID_920699526" MODIFIED="1673746274572" TEXT="Argument im Funktor gebunden auf: bodyCanvas_.get_focus_hadjustment()">
|
||||
<node CREATED="1673746420584" ID="ID_175121956" MODIFIED="1673746454675" TEXT="was ist ein "focus_hadjustment"???">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
<font face="Monospaced" size="2">  /** Hooks up an adjustment to focus handling in a container, so when a child </font>
|
||||
</p>
|
||||
<p>
|
||||
<font face="Monospaced" size="2">   * of the container is focused, the adjustment is scrolled to show that </font>
|
||||
</p>
|
||||
<p>
|
||||
<font face="Monospaced" size="2">   * widget. This function sets the horizontal alignment. </font>
|
||||
</p>
|
||||
<p>
|
||||
<font face="Monospaced" size="2">   * See Gtk::ScrolledWindow::get_hadjustment() for a typical way of obtaining </font>
|
||||
</p>
|
||||
<p>
|
||||
<font face="Monospaced" size="2">   * the adjustment and set_focus_vadjustment() for setting </font>
|
||||
</p>
|
||||
<p>
|
||||
<font face="Monospaced" size="2">   * the vertical adjustment. </font>
|
||||
</p>
|
||||
<p>
|
||||
<font face="Monospaced" size="2">   * </font>
|
||||
</p>
|
||||
<p>
|
||||
<font face="Monospaced" size="2">   * The adjustments have to be in pixel units and in the same coordinate </font>
|
||||
</p>
|
||||
<p>
|
||||
<font face="Monospaced" size="2">   * system as the allocation for immediate children of the container. </font>
|
||||
</p>
|
||||
<p>
|
||||
<font face="Monospaced" size="2">   * </font>
|
||||
</p>
|
||||
<p>
|
||||
<font face="Monospaced" size="2">   * @param adjustment An adjustment which should be adjusted when the focus is </font>
|
||||
</p>
|
||||
<p>
|
||||
<font face="Monospaced" size="2">   * moved among the descendents of @a container. </font>
|
||||
</p>
|
||||
<p>
|
||||
<font face="Monospaced" size="2">   */ </font>
|
||||
</p>
|
||||
<p>
|
||||
<font face="Monospaced" size="2">  void set_focus_hadjustment(const Glib::RefPtr<Adjustment>& adjustment); </font>
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1673746457176" ID="ID_1981285766" MODIFIED="1673746728481" TEXT="da hab ich wohl die falsche Funktion erwischt???">
|
||||
<icon BUILTIN="smiley-oh"/>
|
||||
<node CREATED="1673746730444" ID="ID_582249986" MODIFIED="1673746734951" TEXT="auto-complete...."/>
|
||||
<node CREATED="1673746736759" ID="ID_893437203" MODIFIED="1673746739029" TEXT="bodyCanvas_.get_hadjustment()"/>
|
||||
<node CREATED="1673746741315" ID="ID_513265997" MODIFIED="1673746750093" TEXT="das geht dann auf die contentArea"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1673747021254" ID="ID_1805274819" MODIFIED="1673747047575" TEXT="richtig binden ⟹ Scrollbar reagiert">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
|
|||
Loading…
Reference in a new issue