diff --git a/src/stage/timeline/body-canvas-widget.cpp b/src/stage/timeline/body-canvas-widget.cpp index 207bb8bb8..df3a7c964 100644 --- a/src/stage/timeline/body-canvas-widget.cpp +++ b/src/stage/timeline/body-canvas-widget.cpp @@ -427,6 +427,7 @@ namespace timeline { , profile_{} , rootBody_{nullptr} , contentArea_{} + , rulerArea_{contentArea_.get_hadjustment(), Gtk::Adjustment::create (0,0,0,0,0,0)} , rulerCanvas_{makeRenderer(layout_,getProfile), makeRenderer(layout_,getProfile)} , mainCanvas_ {makeRenderer (layout_,getProfile), makeRenderer (layout_,getProfile)} { @@ -448,9 +449,13 @@ namespace timeline { this->set_border_width (0); this->property_expand() = true; // dynamically grab any available additional space - this->pack_start (rulerCanvas_, Gtk::PACK_SHRINK); + this->pack_start (rulerArea_, Gtk::PACK_SHRINK); this->pack_start (contentArea_, Gtk::PACK_EXPAND_WIDGET); + rulerArea_.set_shadow_type (Gtk::SHADOW_NONE); + rulerArea_.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_NEVER); + rulerArea_.property_expand() = false; + rulerArea_.add (rulerCanvas_); contentArea_.set_shadow_type (Gtk::SHADOW_NONE); contentArea_.set_policy (Gtk::POLICY_ALWAYS, Gtk::POLICY_ALWAYS); // always use both scrollbars ////////////////TICKET #1208 : 2/2002 Gtk::POLICY_AUTOMATIC hides scrollbar after focus loss contentArea_.property_expand() = true; // dynamically grab additional space diff --git a/src/stage/timeline/body-canvas-widget.hpp b/src/stage/timeline/body-canvas-widget.hpp index 47ab0b0ec..3d5be5820 100644 --- a/src/stage/timeline/body-canvas-widget.hpp +++ b/src/stage/timeline/body-canvas-widget.hpp @@ -92,6 +92,7 @@ namespace timeline { using lib::time::TimeValue; + using PAdjustment = Glib::RefPtr; using CairoC = Cairo::RefPtr const&; class DisplayManager; @@ -139,7 +140,7 @@ namespace timeline { * as often as necessary by "playback" of this profile. * On the other hand, for attachment of sub-widgets onto the canvas (Clips, Effects, Markers) * we use the Interface model::CanvasHook, which allows us to break down the access hierarchically. - * Each sub-Track can be outfitted with its own "virtual canvas", exposed as delegating CanvasHook. + * Each sub-Track can be outfitted with its own "virtual canvas", exposed as delegating CanvasHook. * @todo WIP-WIP as of 6/2019 */ class BodyCanvasWidget @@ -152,6 +153,7 @@ namespace timeline { TrackBody* rootBody_; Gtk::ScrolledWindow contentArea_; + Gtk::ScrolledWindow rulerArea_; TimelineCanvas rulerCanvas_; TimelineCanvas mainCanvas_; diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm index 3772de15c..86646ff9b 100644 --- a/wiki/thinkPad.ichthyo.mm +++ b/wiki/thinkPad.ichthyo.mm @@ -25015,7 +25015,7 @@ - + @@ -28033,7 +28033,14 @@ - + + + + + + + + @@ -29305,7 +29312,7 @@ - + @@ -29407,28 +29414,19 @@ - + +

- im Moment setze ich einen brachialen Size-Request auf die gesamte Canvas-Größe. -

-

- Die umschließende Box handhabt das aber anscheinend korrekt, und kappt die übermäßige Weite -

-

- auf den Platz, der ihr selber zugewiesen wurde. Aber das erscheint mir fragil; -

-

- ich sollte diese Logik besser selber explizit ausprogrammieren + Eigentlich benötigt wird das »Aufspreizen« nur in der vertikalen Dimension, damit sich die umschließende Box sinngemäß anpaßt; im Grunde würde es sogar genügen, nur das obere (Ruler)-ScrolledWindow zu dimensionieren, aber ich halte es für sicherer, vom eigentlichen innen liegenden Canvas aus aufzuspreizen, schon wegen der ggfs. dynamischen Dekoration für die Scrollbar. Als Kompromiß setze ich jetzt horizontal eine Mindest-Ausdehnung von 100px (das erscheint ohnehin sinnvoll für eine Timeline), aber in vertikaler Richtung setze ich einen size-Request auf die berechnete Canvas-Höhe

- -
+
@@ -29525,13 +29523,22 @@
+ + + + - + + + + + + @@ -32680,7 +32687,7 @@ - +