diff --git a/src/stage/timeline/body-canvas-widget.cpp b/src/stage/timeline/body-canvas-widget.cpp index ffc1c44a9..7edfb9953 100644 --- a/src/stage/timeline/body-canvas-widget.cpp +++ b/src/stage/timeline/body-canvas-widget.cpp @@ -134,7 +134,6 @@ namespace timeline { { int topMargin = style_->get_margin().get_top(); fillBackground (topMargin); - line_ += 5; //////////////////////////////////////////////////////////////////TODO: visual debugging } /** finish painting the track body area @@ -151,14 +150,29 @@ namespace timeline { void ruler (uint h) override { - UNIMPLEMENTED ("draw ruler"); + int frameT = styleR_->get_border().get_top(); + int frameB = styleR_->get_border().get_bottom(); + styleR_->render_frame (cox_ + ,visible_.b + +20 ////////////////////////////////////////TODO: visual debugging + ,line_ + ,visible_.delta() + ,h + frameT + frameB + ); + styleR_->render_background (cox_ + ,visible_.b // left start of the rectangle + ,line_+frameT // top of the rectangle + ,visible_.delta() // width of the area + ,h // height to fill + ); + line_ += h + frameT + frameB; } /** render additional padding/gap */ void gap (uint h) override { - UNIMPLEMENTED ("draw gap"); + fillBackground (h); } /** fill background of track content area @@ -167,7 +181,6 @@ namespace timeline { content (uint h) override { fillBackground (h); - line_ += 8; //////////////////////////////////////////////////////////////////TODO: visual debugging } /** paint opening slope to enter nested sub tracks @@ -175,7 +188,14 @@ namespace timeline { void open() override { - UNIMPLEMENTED ("paint downward slope"); + int slopeWidth = style_->get_border().get_top(); + style_->render_frame (cox_ + ,visible_.b + ,line_ + ,visible_.delta() + ,2*slopeWidth + ); + line_ += slopeWidth; } /** paint closing slope to finish nested sub tracks @@ -183,7 +203,21 @@ namespace timeline { void close (uint n) override { - UNIMPLEMENTED ("paint upward slope"); + int frameB = style_->get_border().get_bottom(); + int slopeWidth = n * style_->get_border().get_bottom(); + style_->get_border().set_bottom(slopeWidth); + style_->render_frame_gap(cox_ + ,visible_.b + +20 ////////////////////////////////////////TODO: visual debugging + ,line_ + ,visible_.delta() + ,slopeWidth + ,Gtk::PositionType::POS_TOP + ,visible_.b + ,visible_.e + ); + line_ += slopeWidth; + style_->get_border().set_bottom(frameB); } public: @@ -218,7 +252,7 @@ namespace timeline { void ruler (uint h) override { - UNIMPLEMENTED ("overlays for ruler"); + line_ += h; } /** render overlays on top of padding/gap */ @@ -242,14 +276,16 @@ namespace timeline { void open() override { - UNIMPLEMENTED ("overlays for downward slope"); + int slopeWidth = style_->get_border().get_top(); + line_ += slopeWidth; } /** render overlays covering the closing slope towards nested tracks */ void close (uint n) override { - UNIMPLEMENTED ("overlays for upward slope"); + int slopeWidth = n * style_->get_border().get_bottom(); + line_ += slopeWidth; } public: diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm index 2f67e4d31..b0393988f 100644 --- a/wiki/thinkPad.ichthyo.mm +++ b/wiki/thinkPad.ichthyo.mm @@ -18250,8 +18250,7 @@ auf der rechten Seite, wo der Content angezeigt wird

- - + @@ -18643,8 +18642,7 @@ weil dies ggfs vom Theme her schon gestyled wird

- - +
@@ -18678,8 +18676,7 @@ in der C "class init function" passieren muß

- - +
@@ -19713,8 +19710,7 @@ und zwar der ctor-TrackPresenter

- - + @@ -19730,8 +19726,7 @@ alle anderen verschachtelten ctors aber von den TrackPresentern

- - +
@@ -19747,8 +19742,7 @@ weil nur sie sowohl durch ihren Display-Frame die beiden Kind-Widgets kennen

- - + @@ -19759,8 +19753,7 @@ inwiefern gibt es Beschränkungen, wenn man ein Kind-Widget von einem Container entfernt?

- -
+ @@ -19834,8 +19827,7 @@ aber verschachtelte sub-Tracks werden in dieser gehandhabt

- - +
@@ -19983,8 +19975,7 @@ weil der Ruler ja in die Präsentation mit einbezogen ist

- - +
@@ -20061,8 +20052,7 @@ ....ob es was sinnvolles in einem Overview-Ruler anzuzeigen gibt

- - +
@@ -21149,8 +21139,7 @@ ...ist klarer, und erlaubt nebenbei auch noch, zwei Methoden einzusparen

- - + @@ -21770,8 +21759,7 @@ ...jedenfalls nicht ohne Code-Änderung

- - + @@ -21790,8 +21778,7 @@ ...welches aber lokal auf die Anwendung angewendet wird, mit höherer Priorität

- - + @@ -21850,8 +21837,7 @@ widget->get_style_context();

- - +
@@ -21880,8 +21866,7 @@ es ruft den Konstruktor WidgetPath(gobject, make_copy=true) auf

- - + @@ -21898,8 +21883,7 @@ - - + @@ -21931,8 +21915,7 @@ }

- - +
@@ -21981,8 +21964,7 @@ StyleContext::create()

- - + @@ -22004,8 +21986,7 @@ As a consequence, the style will be regenerated to match the new given path.

- - +
@@ -22068,8 +22049,7 @@ -- ja dann kann man auch gleich direkt an den UiManager delegieren!

- - + @@ -22083,8 +22063,7 @@ window:backdrop:dir-ltr.background box:backdrop:dir-ltr.vertical box:backdrop:dir-ltr[2/3].horizontal widget:backdrop:dir-ltr[2/2] widget:backdrop:dir-ltr paned:backdrop:dir-ltr.vertical widget:backdrop:dir-ltr box:backdrop:dir-ltr.vertical notebook:backdrop:dir-ltr[1/1].frame paned:backdrop:dir-ltr.horizontal box:backdrop:dir-ltr.vertical fork.timeline

- - + @@ -22096,8 +22075,7 @@ "Widget is in a background toplevel window"

- -
+ @@ -22110,8 +22088,7 @@ nur der letzte Node wird gegen pseudo-Klassen gematcht

- - +
@@ -22126,8 +22103,7 @@       gtk_widget_path_iter_set_state(path.gobj(), i, GTK_STATE_FLAG_NORMAL);

- -
+
@@ -22141,8 +22117,7 @@ window.background box.vertical box[2/3].horizontal widget[2/2] widget paned.vertical widget box.vertical notebook[1/1].frame paned.horizontal.timeline-page box.vertical.timeline.timeline-body fork.timeline

- - +
@@ -22167,8 +22142,7 @@ spezielle Regel gesetzt auf: .timeline-page > .timeline-body fork.timeline

- - + @@ -22276,8 +22250,7 @@ und seinerzeit beschlossen, es vorerst im prelude() zu belassen...

- - +
@@ -22300,8 +22273,7 @@ nicht nur die Ruler, auch das Prelude selber ist ein solches gePinntes Element (selbst wenn es leer ist)

- - + @@ -22356,8 +22328,7 @@ - - + @@ -22369,8 +22340,7 @@ rein gefühlsmäßig wäre aber vorher wohl geschickter

- -
+ @@ -22380,8 +22350,7 @@ denn was passiert, wenn sich durch das Setzen einer neuen Größe der sichtbare Bereich ändert? Löst das dann nicht erneut einen draw()-Aufruf aus??

- -
+
@@ -22438,8 +22407,7 @@ speziell die Antwort von ebassi beachten...

- - + @@ -22449,8 +22417,7 @@ Core-Entwickler von GTK

- -
+ @@ -22478,13 +22445,12 @@ Nein. Es ist ein GDK-Wrapper/Adapter

- - + - + @@ -22587,6 +22553,12 @@ + + + + + + @@ -22597,6 +22569,13 @@ + + + + + + + @@ -42710,8 +42689,7 @@ das «Regel-System»

- - + @@ -42726,8 +42704,7 @@ das «Advice-System»

- - + @@ -42748,8 +42725,7 @@ - - + @@ -42761,8 +42737,7 @@ ein Whiteboard-System

- -
+
@@ -42804,8 +42779,7 @@ ....denn es gibt die default-Lösung

- - +
@@ -42833,8 +42807,7 @@ bloß jetzt etwas abstrakter

- - +
@@ -44115,8 +44088,7 @@ "Widget is in a background toplevel window"

- - +
@@ -44164,8 +44136,7 @@ indem man eine eigene XXX_class_init() - Funktion schreibt

- - +
@@ -44179,9 +44150,50 @@ in den Fällen, die ich mir angeschaut habe, steht dieser String hart codiert in der XXXX_class_init()-Funktion

+ +
+
+ + + + + + + + +

+ d.h. die angegebenen Abmessungen entsprechen der bounding box +

+
+ + + + + + +

+ es geht also nicht, daß man sagt +

+

+ border: solid yellow; +

+

+ border-left: 2px +

+

+ +

+

+ in diesem Falle würde die linke Border mit der geerben Farbe gezeichnet, und nicht gelb +

+ + +
+
+
@@ -44200,8 +44212,7 @@ d.h. wir haben Referenz-Semantik

- - +
@@ -44279,8 +44290,7 @@ this->set_name("my-widget")

- - + @@ -44337,8 +44347,7 @@   // changed or removed in the future.

- -
+ @@ -44351,8 +44360,7 @@ gtk_widget_class_set_css_name (GTK_WIDGET_GET_CLASS(gobj()), "body");

- - +
@@ -44389,38 +44397,9 @@
- - - - - - - - - -

- ein Widget kann einem GDK-Window zugeordnet sein -

- -
-
- - - - - - - - - - - - - - - - + + @@ -44515,8 +44494,7 @@ apply styles to that specific widget their gtkrc file.

- -
+
@@ -44545,8 +44523,7 @@ mit automatischem Refcounting

- - +
@@ -44564,8 +44541,7 @@ As a consequence, the style will be regenerated to match the new given path.

- - +
@@ -44573,6 +44549,39 @@
+ + + + + + + + +

+ ein Widget kann einem GDK-Window zugeordnet sein +

+ +
+
+ + + + + + + + + + + + + + + + + + + @@ -44607,8 +44616,7 @@ - - + @@ -44617,7 +44625,7 @@ - + @@ -44651,7 +44659,7 @@ - + @@ -44844,7 +44852,7 @@ - +