diff --git a/src/stage/lumiera-light-theme-complement.css b/src/stage/lumiera-light-theme-complement.css index 4b9dd1864..ceab5c8ab 100644 --- a/src/stage/lumiera-light-theme-complement.css +++ b/src/stage/lumiera-light-theme-complement.css @@ -41,11 +41,23 @@ */ .timeline-page > .timeline-body fork.timeline { margin: 2ex 0; - border: 5px inset; - background-color: lime; + border: 5px inset IndianRed; + background-color: Lime; } fork.timeline frame.timeline.ruler { margin: 3ex 0; - border: 3px outset; - background-color: DarkCyan ; + border: 3px outset GoldenRod; + background-color: DarkCyan; +} + .track-slope-deep2 { + border-width: 10px; +} + .track-slope-deep3 { + border-width: 14px; +} + .track-slope-deep4 { + border-width: 17px; +} + .track-slope-verydeep { + border-width: 20px; } diff --git a/src/stage/timeline/body-canvas-widget.cpp b/src/stage/timeline/body-canvas-widget.cpp index 7edfb9953..758ecb82e 100644 --- a/src/stage/timeline/body-canvas-widget.cpp +++ b/src/stage/timeline/body-canvas-widget.cpp @@ -59,6 +59,7 @@ using Gdk::Rectangle; //using sigc::ptr_fun; //using std::cout; //using std::endl; +using std::string; using std::move; @@ -76,6 +77,19 @@ namespace timeline { lumiera::advice::Request trackBodyStyle{"style(trackBody)"}; lumiera::advice::Request trackRulerStyle{"style(trackRuler)"}; + string + slopeClassName(int depth) + { + switch (depth) + { + case 1: return "track-slope-deep1"; + case 2: return "track-slope-deep2"; + case 3: return "track-slope-deep3"; + case 4: return "track-slope-deep4"; + default:return "track-slope-verydeep"; + } + } + /** * @internal drawing routines to paint the nested system @@ -203,9 +217,15 @@ namespace timeline { void close (uint n) override { - int frameB = style_->get_border().get_bottom(); - int slopeWidth = n * style_->get_border().get_bottom(); - style_->get_border().set_bottom(slopeWidth); +// style_->context_save(); + style_->add_class(slopeClassName(n)); +// style_->invalidate(); +// string clzzs; +// for (auto& clzz : style_->list_classes()) +// clzzs += "."+clzz; +// string path = style_->get_path().to_string(); + int slopeWidth = 5*style_->get_border().get_bottom(); + INFO(stage, "n=%d class=%s -->slopeWidth=%d", n, util::cStr(slopeClassName(n)), slopeWidth); style_->render_frame_gap(cox_ ,visible_.b +20 ////////////////////////////////////////TODO: visual debugging @@ -216,8 +236,9 @@ namespace timeline { ,visible_.b ,visible_.e ); + style_->remove_class(slopeClassName(n)); +// style_->context_restore(); line_ += slopeWidth; - style_->get_border().set_bottom(frameB); } public: @@ -284,8 +305,11 @@ namespace timeline { void close (uint n) override { - int slopeWidth = n * style_->get_border().get_bottom(); + style_->context_save(); + style_->add_class(slopeClassName(n)); + int slopeWidth = style_->get_border().get_bottom(); line_ += slopeWidth; + style_->context_restore(); } public: diff --git a/src/stage/timeline/track-profile.hpp b/src/stage/timeline/track-profile.hpp index ff63e5295..a88f983cc 100644 --- a/src/stage/timeline/track-profile.hpp +++ b/src/stage/timeline/track-profile.hpp @@ -91,7 +91,7 @@ namespace timeline { Elements elements; - uint pinnedPrefixCnt = 0; + int pinnedPrefixCnt = 0; // default constructible, standard copy operations diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm index b0393988f..d3bc161f4 100644 --- a/wiki/thinkPad.ichthyo.mm +++ b/wiki/thinkPad.ichthyo.mm @@ -1131,7 +1131,7 @@ - + @@ -22362,22 +22362,7 @@ - - - - - - - - - - - - - - - - + @@ -22422,6 +22407,21 @@ + + + + + + + + + + + + + + + @@ -22554,9 +22554,274 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ den Zeichenvorgang für ein normales Frame-Widget analysieren +

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

+ Kommentar sagt: it is your responsibility that these two coordinates match +

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

+ /home/hiv/.local/share/themes/PanRosewoodHIV/gtk-3.0/gtk-contained.css +

+ + +
+ + + + + + + +

+ frame > border, +

+

+ .frame { +

+

+   box-shadow: none; +

+

+   margin: 0; +

+

+   padding: 0; +

+

+   border-radius: 0; +

+

+   border: 1px solid @borders; } +

+ + +
+
+ + + + + + +

+   box-shadow: inset 0px 0px 0px 1px shade (@theme_bg_color, 1.15), 0px 1px 2px rgba(0, 0, 0, 0.1); } +

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

+ herausfinden, warum er solid gezeichnet wird +

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

+ irrtümlich, denn +

+
    +
  • + per default ist outline:none +
  • +
  • + outline wird nur gesetzt, wenn ein Element fokus bekommt +
  • +
  • + Outline liegt um die Border, nimmt aber selber keinen Platz ein (sondern ist ein overlay) +
  • +
+ + +
+ + + +
+
+ + + + + + + +

+ g { +

+

+   border-bottom-style: outset; +

+

+   border-left-style: outset; +

+

+   border-right-style: outset; +

+

+   border-top-style: outset; +

+

+ } +

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

+ weil er dann mehr oder weniger hartverdrahtet ist +

+ + +
+
+ + +
@@ -22571,9 +22836,84 @@ - - - + + + + + + + + + + + + + + + + + + + +

+ und mehrfach gekapselt. +

+

+ Schaut alles so aus, als sollte man da nicht rumpfuschen +

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

+ da wird ggfs eine neue CSS-Kaskade erstellt, oder die bestehende Kaskade erweitert. +

+

+ Hierfür werden Einträge in Arrays verschoben. +

+

+ Schließlich wird über die ganze Kaskade iteriert, und die Werte werden aufgesammelt +

+ + +
+ +
+
+ + + + + + + + @@ -30925,7 +31265,7 @@
- +