Inv(#1020): place widgets irregularily

- partially overlapping
- beyond the scrollable area
This commit is contained in:
Fischlurch 2016-10-29 00:51:28 +02:00
parent e7d284783b
commit 94a0adcb5b
4 changed files with 20 additions and 11 deletions

View file

@ -119,8 +119,8 @@ namespace panel {
ChildEx* chld = makeChld();
childz_.push_back(chld);
uint x = rand() % 1000;
uint y = rand() % 500;
uint x = rand() % 2000;
uint y = rand() % 1000;
canvas_.put(*chld, x, y);
chld->show();
}

View file

@ -78,7 +78,7 @@ namespace panel {
* 1. place some simple widgets (Buttons) ✔
* 2. learn how to draw
* 3. place a huge number of widgets, to scrutinise scrolling and performance
* 4. place widgets overlapping
* 4. place widgets overlapping and irregularily, beyond the scrollable area ✔
* 5. bind signals to those widgets, to verify event dispatching
* 6. bind some further signal(s) to the ~GtkLayout container
* 7. hide and re-show a partially and a totally overlapped widget

View file

@ -2635,7 +2635,7 @@ In the most general case, there can be per-track content and nested content at t
→ important question: how to [[organise the widgets|GuiTimelineWidgetStructure]]
</pre>
</div>
<div title="GuiTimelineWidgetStructure" creator="Ichthyostega" modifier="Ichthyostega" created="201410250002" modified="201610281529" tags="GuiPattern discuss decision impl" changecount="37">
<div title="GuiTimelineWidgetStructure" creator="Ichthyostega" modifier="Ichthyostega" created="201410250002" modified="201610282248" tags="GuiPattern discuss decision impl" changecount="38">
<pre>The Timeline is probably the most prominent place in the GUI where we need to come up with a custom UI design.
Instead of combining standard components in one of the well-known ways, here we need to come up with our own handling solution -- which also means to write one or several custom GTK widgets. Thus the question of layout and screen space division and organisation becomes a crucial design decision. The ~GTK-2 Gui, as implemented currently, did already take some steps along this route, yet this kind of decision should be cast and documented explicitly (be it after the fact).
@ -2689,12 +2689,15 @@ In order to build a sensible plan for our timeline structure, we need to investi
# retrofit all preceding tests to use this &quot;''clip''&quot; widget
!!!Observations
* the size of the scrollable area needs to be setup beforehand, otherwise children won't show up
* children need to be made visible, otherwise they are added, but remain hidden
* the coordinate of children (upper left corner) is within the scrollable area, but the extension might well be beyond
* the size of the scrollable area is independent of the actual size extension of the canvas
* the scrollable area determines when scrollbars are visible and what area can be reached through them
* but children can well be placed beyond; they are fully functional then, just covered and out of sight
* enlarging the enclosing window and thus enlarging the layout canvas will uncover such stray children.
* when in sight, children receive events and are fully functional, even when placed out of the scrollable area.
* the coordinate of children is their upper left corner, but they may extend beyond that and even beyond the scrollable area
* children may be so close to the boundary, that it is not possible to click on them
* after receiving an onClic event, the scrollable area jumps back to (left, top).
* when overall window is enlarged, the visible area seems to be expanded. Then even children close to boundary come into sight and are clickable.
* when children close to the boundary receive an onClick event, the scrollable area might jumps back slightly..
</pre>
</div>

View file

@ -9360,13 +9360,19 @@
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="full-3"/>
</node>
<node CREATED="1477595418670" ID="ID_423514526" MODIFIED="1477668704361" TEXT="# place widgets overlapping / irregularily">
<node CREATED="1477595418670" ID="ID_423514526" MODIFIED="1477694999159" TEXT="# place widgets overlapping / irregularily">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="full-4"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1477668663507" ID="ID_1576657272" MODIFIED="1477668671481" TEXT="order: later on top">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1477668674577" ID="ID_431152757" MODIFIED="1477668679556" TEXT="place widgets out of sight"/>
<node CREATED="1477668674577" ID="ID_431152757" MODIFIED="1477694925233" TEXT="place widgets out of sight">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1477694911349" ID="ID_93004070" MODIFIED="1477694932280" TEXT="widgets beyond the scrollable area">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1477595418670" ID="ID_1370967982" MODIFIED="1477596119220" TEXT="# bind signals to those widgets, to verify event dispatching">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
@ -9380,7 +9386,7 @@
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="full-7"/>
</node>
<node CREATED="1477595418670" ID="ID_1516591439" MODIFIED="1477596119219" TEXT="# find a way to move a widget">
<node CREATED="1477595418670" ID="ID_1516591439" MODIFIED="1477694985862" TEXT="# move and delete widgets">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="full-8"/>
</node>