Mads Kiilerich
cb4e10683d
gtkmm: use size_request() function instead of deprecated Gtk::Widget::size_request(&)
2022-04-08 21:11:07 +02:00
Mads Kiilerich
91b08d5f45
gtkmm: use get_realized() instead of deprecated Gtk::Widget::is_realized()
2022-04-08 20:20:32 +02:00
b6d0f8f661
canvas: add a drawing-request-freeze/thaw API
...
If queue_draw is "frozen", we simply accumulate drawing
requests in a (union) rectangle, and when finally "thawed"
the canvas submits a single redraw request for the entire
accumulated rect.
Although in theory this is all that GTK/GDK does for
draw requests, callgrind reveals significant costs
associated with the actual calltree for GtkWidget::queue_draw_area().
One potential cost is that GDK also maintains a list of
invalidated rectangles in addition to the union, and
for MIDI regions with thousands of notes, this can represent
real overhead. This approach dispenses with the rect list,
since our Canvas drawing model only uses the union rectangle
anyway.
2022-04-05 20:52:09 -06:00
b58072f14c
Fix canvas tooltips
...
The tooltip should remain visible until the mouse leaves
the item's bounding box. Also do not start the tooltip
timeout if the item does not have a tooltip.
2022-04-04 20:50:49 +02:00
9e75235912
Fix crashes on ARM due to window-size overflow
...
On Intel systems ArdourCanvas::COORD_MAX (1.7e+307) was rounded
to (gint) -2147483648. gtk+ treats negative window size-requests
as 1px.
However on ARM, COORD_MAX was truncated to +2147483648, gtk+ limits
this to 65535. Most WM/Xwin systems cannot handle windows this large.
It also exceeds the max size of cairo [image] surfaces.
This issue was introduced in a1c67b4ad7
when "natural_size" was removed. Before that change infinitely large
canvas had a natural_size of 2x2 px.
2022-03-09 21:14:53 +01:00
200469dce8
Remove 18 month old debug messages
2022-02-01 22:01:41 +01:00
15bb91cf4f
canvas: fixing missing initializer for _scroll_translation in 3rd Item constructor
2022-01-27 14:02:34 -07:00
Mads Kiilerich
8bb91099c5
wscript: drop configure statements already present in the top level wscript
...
Avoid repeated pointless configure messages like:
Checking for 'g++' (C++ compiler!) : /usr/lib64/ccache/g++
Checking for 'gcc' (C compiler) : /usr/lib64/ccache/gcc
2022-01-22 22:19:03 +01:00
993c7c4bec
canvas: manually remove changes from 6f91dc0799
and implement same goal in a different way
...
The AudioClipEditor features a scroll bar that is a part of the canvas. Because scroll
groups are at the top level of a canvas, the scroll bar is necessary within a scroll
group, which causes it to get confused about the difference between its own
position within the canvas and that of the scroll group. This commit introduces
a per-Item flag, _scroll_translation, which is true by default. If false, the
item will not have coordinates translated to reflect scroll group position.
2022-01-20 09:45:47 -07:00
267229c03c
ArdourCanvas::Arc (i.e. Circle) should allow for child items to be drawn
2022-01-18 16:42:00 -06:00
b2bd748672
ruler: make ::set_metric() API consistent with constructor by using ptr
2021-12-24 15:34:18 -07:00
753d1c9754
rulers: change API to accept a pointer instead of a reference to a Metric
...
We need to be able to construct Metrics after the ruler is constructed
in order to deal with Triggers which are potentially short-lived. We
stored the reference as a pointer anyway, so it's not as much of a change
as it appears.
2021-12-24 14:17:23 -07:00
6f91dc0799
canvas: fix an issue with event coordinate translation by ScrollGroup
...
If there's a grabbed item (GtkCanvas only at present) then unless it belongs to the scroll
group used for scroll offset translation, the event coordinates should not be translated,
even if the mouse pointer moves into the scroll group.
2021-12-10 18:17:58 -07:00
08e50934c9
canvas: add scroll offset info to Item::dump()
2021-12-10 17:16:10 -07:00
972229a02f
Remove some spurious printouts
2021-12-08 13:39:38 -06:00
dc826c6521
ArdourCanvas Rectangle: allow subclasses access to _rect
2021-12-07 16:32:49 -06:00
7e80111d92
Canvas: Fix notification to parent of show/hide status
...
This was changed in fc9840f2a9
to hard code a "false" argument describing
whether or not the child bbox had changed. This causes the parent to not
recompute its own bounding box when a child is shown/hidden, which is
incorrect. We now force it to true, which may be overkill for some purposes,
but at worst will just force an unnecessary bbox re-computation and nothing
more.
2021-11-09 08:49:21 -07:00
0f0c5c7039
remove Kiwi constraint-based packing code from canvas library and users (library version)
2021-11-04 11:25:30 -06:00
211b3ea668
canvas text: generalize ::font_size_for_height() to handle different font families
2021-10-19 10:54:27 -06:00
ab22733fe4
canvas: continuously variable Canvas::Text height if packed inside a layout-sensitive container
2021-10-17 17:56:27 -06:00
a1699ff612
canvas: size_allocate() from GTK gives origin in parent coordinates.
...
Convert to canvas-relative origin when passing to root group for allocation
2021-10-03 19:47:18 -06:00
e670acbb0d
canvastable: fix logic error in ::compute_bounding_box()
...
Since the bbox is determined by ::compute(), do not unconditionally clear it here
2021-10-03 16:46:25 -06:00
747a49006c
canvastable: finish comment
2021-10-02 17:45:43 -06:00
a8cc0be45c
canvastable: change some variable names; don't add per-col/row spacing twice
2021-10-02 17:09:01 -06:00
df5699b03e
canvastable: fix comment to reflect split row/col homogeneity
2021-10-02 16:24:04 -06:00
8130d265fd
canvas table: separate out row & col homogeneity
2021-10-02 16:19:49 -06:00
590866f8c1
canvas table; move computation of bounding box
2021-10-02 16:19:49 -06:00
88443586ef
canvas table: clean up attach API; improve comments; move use of padding.right outside loop
2021-10-02 16:19:49 -06:00
cc09576ef5
canvas table: dramatic fixes/extensions of table packing algorithm
2021-10-01 18:38:18 -06:00
0e779fbec9
canvastable: if a cell is empty, still adjust horiz/vert coordinates so subsequent cells are aligned
2021-09-29 11:20:50 -06:00
378e4e7a03
canvastable: fix typo that led to mis-sized table (row/col mixup)
2021-09-29 11:20:50 -06:00
27ca49efd3
canvas: generic Item::_size_allocate() must adjust allocated space to parent-relative coords
2021-09-29 11:20:50 -06:00
d07436b15d
canvas: much more work on table layout
2021-09-23 11:48:29 -06:00
29f96ad13e
Fix cross-compile (undefined references for canvas-tests)
2021-09-19 23:38:44 +02:00
47f7958714
canvastable: remove unused vars; rename others
2021-09-17 14:36:09 -06:00
44b1cea54a
canvastable: minor optimization
2021-09-17 12:53:16 -06:00
59c8b99fee
canvastable: remove rows/cols members, reuse ::compute() for ::size_request()
2021-09-17 12:51:26 -06:00
98e0ad901a
canvas: significant design changes and implementation fixes for Table
2021-09-17 12:34:13 -06:00
999fe54ab8
canvas: a few variable cleanups in Table and more use of for (auto ..)
2021-09-14 22:39:59 -06:00
6aaba192a0
canvas: improve computation of Table bounding box
2021-09-14 21:39:24 -06:00
b3854c2e92
canvas: just use stack and size counter instead of std::vector<>
2021-09-14 21:22:56 -06:00
1c42c733f7
canvas: remove use of Table::Index from API of Table::attach()
2021-09-14 21:18:44 -06:00
c952c57a99
canvas: actually follow CSS conventions for 1/2/3/4 arguments in padding
2021-09-14 21:18:44 -06:00
473ef54614
canvas: fix initialization of FourDirections object
2021-09-14 18:49:41 -06:00
d6208eabd8
canvas: fix handling of expanding items in table layout
2021-09-14 18:42:59 -06:00
5def36f780
canvas: somewhat functional homogenous table layout
2021-09-14 18:29:39 -06:00
d71fcf1955
canvas: add Table debug bit
2021-09-14 18:29:39 -06:00
f05bb4afab
canvas: new type, to centralize CSS-style padding/spacing initialization (but only used by Table so far)
2021-09-14 18:29:39 -06:00
c5fcdc1119
canvas: more work on table layout, still incomplete
2021-09-14 18:29:39 -06:00
44b11802bf
canvas: initial (probably incorrect) implementation of Canvas::Table
2021-09-13 22:00:33 -06:00
d50693b97d
cnavas: add lots more debug traces to box, and an explanatory comment
2021-09-10 13:02:01 -06:00
107ff8466a
canvas: box should not try to reposition children for a zero-sized allocation
2021-09-10 13:01:26 -06:00
63a74d0911
Canvas: improve behavior of Widget::compute_bounding_box()
...
Firstly, ::compute_bounding_box() cannot allocate space, so do not try to do that here.
Secondly, if there is no allocation yet, use the CairoWidget's own size_request()
2021-09-10 12:59:29 -06:00
be461e95e1
canvas: remove debug output
2021-09-10 12:57:43 -06:00
300ca3124b
canvas; temporarily resurrect ConstraintPacker interactive tests
2021-09-10 12:15:24 -06:00
494bc8da14
canvas: add ::set_size_request_to_display_given_text() analogous to Gtkmm2ext utility
2021-09-10 12:15:24 -06:00
90322399fc
canvas: use fwd decl instead of header inclusion for CairoWidget
2021-09-10 12:15:24 -06:00
4bbfc60126
add 2 new canvas debug bits
2021-09-10 12:15:24 -06:00
51110a92d9
canvas: fix computation of Box bounding box
2021-08-31 13:21:12 -06:00
3734277263
canvas: improve box packing - compute child dimensions more correctly
2021-08-30 17:40:06 -06:00
b47fbc91e0
canvas: provide Rect::shrink () with four arguments
2021-08-30 17:39:39 -06:00
10253a6ae4
Fix Windows builds, remove unnecessary srandom() calls
...
Since fc90c92a49
Gtkmm2ext::random_color () uses g_random_int()
which is implicitly seeded when first used.
2021-08-14 01:29:49 +02:00
bf26be71aa
move constraint packing tests out of the way
2021-08-13 17:27:20 -06:00
fc90c92a49
Fix Windows builds (rand/random API)
2021-08-14 01:07:13 +02:00
0095681493
fix cast in call to time(2)
2021-08-13 14:11:41 -06:00
d2b2b73c82
canvas; provide Rectangle::{height,width}()
2021-08-13 12:51:37 -06:00
0296b0b0cb
canvas: don't call ::size_allocate() for children unless there is just one child and it is "layout sensitive
...
the dumb/Item version of ::size_allocate_children() doesn't do anything but give its full allocation to children, and if there
was more than one child, this could not be done in a "dumb" way. Likewise, if the sole child is not layout sensitive, it
doesn't care about size allocation
2021-08-13 12:51:37 -06:00
b416caf1bb
canvas: several steps further with box packing and size allocation
2021-08-13 12:51:37 -06:00
88b95bc8f8
canvas: size_allocate() as a way to set position is only for layout-sensitive item trees
2021-08-13 12:51:37 -06:00
a1c67b4ad7
canvas: remove intrinsic size concept, fall back to requested size; converge on gtk style size_request
2021-08-13 12:51:37 -06:00
9698de0212
canvas: missing method
2021-08-13 12:51:37 -06:00
1a70cf5b8e
canvasL Item gets packing options similar to GTK
2021-08-13 12:51:37 -06:00
5e3460aaae
canvas: start to extend size allocation process for box packing
2021-08-13 12:51:37 -06:00
4a700f270d
canvas: remove debug output
2021-08-13 12:51:37 -06:00
dc6a162ca1
canvas: remove Box::render() (it should just use Rectangle::render())
2021-08-13 12:51:37 -06:00
85edd83338
canvas: correctly set Box _rect after repositioning children
2021-08-13 12:51:37 -06:00
da3ea7e236
canvas: rename variable for clarity
2021-08-13 12:51:37 -06:00
6f883650d8
canvas: use combined outline enum value for clarity
2021-08-13 12:51:37 -06:00
71fe17a241
canvas: impl of Rectangle::dump()
2021-08-13 12:51:37 -06:00
b2aa14a90b
canvas; remove already-commented debug output
2021-08-13 12:51:37 -06:00
341a355de4
canvas: remove debug output
2021-08-13 12:51:37 -06:00
a55a004142
canvas: another fix to bounding box computation, this time for Item itself
2021-08-13 12:51:37 -06:00
b8b392f729
canvas: use whoami() instead of whatami() in some debugging output
2021-08-13 12:51:37 -06:00
a36d43c845
canvas: NOOP whitespace/indent a line
2021-08-13 12:51:37 -06:00
16bbf79cae
canvas: decl for Rectangle::dump()
2021-08-13 12:51:37 -06:00
dc48f55285
canvas: bounding box changes for Container
2021-08-13 12:51:37 -06:00
9095057675
canvas: call Item::bounding_box() to recompute bounding box when needed
...
Since 74fe396cc5 compute_bounding_box() by itself does not do the entire computation, so we
must call into Item::bounding_box() to get the result with children added also
2021-08-13 12:51:37 -06:00
c0425ba70f
canvas: items should not add child bboxes in their ::compute_bounding_box() method, Item::bounding_box() does that
2021-08-13 12:51:37 -06:00
ad6afbe68a
canvas: use Item::bb_clean() to mark _bounding_box_dirty false
2021-08-13 12:51:36 -06:00
5b123441f4
canvas; change operator<<() for Rect to show BIG instead of gigantic 64 bit numbers
2021-08-13 12:51:36 -06:00
ddcd004350
canvas: only reset _bounding_box_dirty in the parent if the child's bbox did change
2021-08-13 12:51:36 -06:00
c1fa1e1a29
canvas: when an item's position is set, its bounding box has changed
2021-08-13 12:51:36 -06:00
f5753dcd07
missing member initialization
2021-08-13 12:51:36 -06:00
7066db16bd
remove dangling method from rebase issues
2021-08-13 12:51:36 -06:00
14621f3634
add missing Box::set_homogenous() method
2021-08-13 12:51:36 -06:00
5153124664
change (GUI) Marker objects to accept any Canvas::Item as parent, and use this to draw BBT position markers in the BBT ruler
2021-08-13 12:51:34 -06:00
749a49c278
incorporating new tempo map API
2021-08-13 12:51:29 -06:00
82bad0725a
libcanvas: reapply LineSet::add_line -> add_coord change after rebase conflicts with master
2021-08-13 12:51:27 -06:00
54de7c70ee
Canvas: print item colors in hex when debugging
2021-08-13 12:51:27 -06:00
86a31e34ba
Canvas: fix recursive calling of Item::size_allocate()
...
ConstraintPacker is the one Item-derivative that should NOT call Item::size_allocate_children()
because it just did the size computation for its children and called their
::constrained() method, which in turns calls size_allocate() with the correct size
2021-08-13 12:51:27 -06:00
dbe37d2752
Canvas: make possible even more debugging of constraint packing
2021-08-13 12:51:27 -06:00
f118b3ab53
Canvas: remove dangling cairo path in Arc or ConstraintPacker if fill was requested but not outline
2021-08-13 12:51:27 -06:00
1d96bad59f
Canvas: remove cBox (API fully merged into ConstraintPacker)
2021-08-13 12:51:27 -06:00
1b66890547
Canvas: continuing move of cBox functionality into ConstraintPacker
2021-08-13 12:51:27 -06:00
4e82279ce4
Canvas: next step of merging cBox and ConstraintPacker
2021-08-13 12:51:27 -06:00
af60c50990
first steps in merging cBox into constraint packer
2021-08-13 12:51:27 -06:00
860d43697c
Canvas: propagate ::size_allocate() down the item tree
...
This previously wasn't done because of fear that it would affect the traditional fixed-sized canvas,
but only items that _layout_sensitive (i.e. are packed into a constraint packer directly) will
actually do anything in ::size_allocate().
Possibly might want to relax this to cover items that have a constraint packer between them
and a root group.
2021-08-13 12:51:27 -06:00
28f85747ca
Canvas: fix behavior of Rectangle when used in a constraint packer
...
::size_allocate() sets the _position *and* the "self" rect appropriately
2021-08-13 12:51:27 -06:00
3c2bd05750
Canvas: remove debug output
2021-08-13 12:51:27 -06:00
fa2885d2d6
Canvas: do not fill containers by default (added during constraint packing work; badly affects the regular canvas)
2021-08-13 12:51:27 -06:00
9909917976
Canvas: remove unnecessary and conflicting enum
2021-08-13 12:51:27 -06:00
2e4d228f54
manual fixes for constraint-packer -> newbbgui merge
2021-08-13 12:51:27 -06:00
93d2f6f433
remove debug output
2021-08-13 12:51:27 -06:00
b18aaf0c7c
Rectangle border/sizing behaves like CSS border-box
2021-08-13 12:51:27 -06:00
27919fec61
items should not round their bounding box when requesting a redraw
2021-08-13 12:51:27 -06:00
9c071cd6ef
Canvas::queue_draw_item_area() now expands the passed-in rect appropriately
...
This means that a request to (re)draw the Rect (0.5,0.5,9.5,9.5)
will actually generate an expose event for (0,0,10,10)
Note: the above rects are of the form (x0,y0,x1,y1)
2021-08-13 12:51:27 -06:00
35a9bcc409
add Rectangle::size_request() which returns actual rectangle size, not bounding box
2021-08-13 12:51:26 -06:00
12b4807bc9
add a very (very) basic resize/layout design to the canvas
...
Items call ::queue_resize(), which sets a flag in the canvas; at next idle, we call
Canvas::layout() which walks the item tree and recursively calls layout (depth first)
on all items needing a resize.
Only Container types implement layout, and so far only Box
2021-08-13 12:51:26 -06:00
03e32a22d0
make Item::add() virtual
2021-08-13 12:51:26 -06:00
9869b0266b
add support for rounded corners to Canvas::Rectangle
2021-08-13 12:51:26 -06:00
4f671a0950
make ArdourCanvas::Rectangle render its children
...
it is common to want to pack things inside a rectangle, so make it work
2021-08-13 12:51:26 -06:00
8fb67e15ea
steps in the evolution of beatbox
2021-08-13 12:51:26 -06:00
91de7ba60b
do not double-translate Canvas::Rectangle by _position; item_to_window() already includes it by calling item_to_canvas()
2021-08-13 12:51:26 -06:00
aca1db2d06
add step_button to wscript
2021-08-13 12:51:26 -06:00
e35e5ff3e5
step button for Canvas (used by BeatBox GUI)
2021-08-13 12:51:26 -06:00
ff6fe51d76
Canvas: improve implementation/design of ConstraintPacker::preferred_size()
2021-08-13 12:51:26 -06:00
502a9e80dc
Canvas: add a nice new syntax for constraint packing
2021-08-13 12:51:26 -06:00
d6745f043c
Canvas: clean up Constraint expressions to avoid compiler warnings
2021-08-13 12:51:26 -06:00
aa62460081
Canvas: re-use Solver as much as possible, with possible (but not substantive) speedup; remove debug output
2021-08-13 12:51:26 -06:00
815eb82882
Canvas: partially improve/fix cBox rendering
2021-08-13 12:51:26 -06:00
2598bdef2c
Canvas: mark constraint-layout containers as layout-sensitive (like their children)
2021-08-13 12:51:26 -06:00
f5d67e6520
Canvas: temporary easy way to get debug output from Canvas::render() in a test program
2021-08-13 12:51:26 -06:00
427998e2d2
Canvas: cleanup first constraint test
2021-08-13 12:51:26 -06:00
be481ec266
Canvas: fix fill/outline area for a cBox
2021-08-13 12:51:26 -06:00
0823a6328b
Canvas: third constraint test
2021-08-13 12:51:26 -06:00
a349d7e49b
remove debug output
2021-08-13 12:51:26 -06:00
94b44ceb52
Canvas: add second constraint tester
2021-08-13 12:51:26 -06:00
0d5725a63b
Canvas; fix rectangle rendering geometry
2021-08-13 12:51:26 -06:00
04d00da461
Canvas: fix text rendering geometry
2021-08-13 12:51:26 -06:00
7153544b52
Canvas: many changes to cBox implementation
2021-08-13 12:51:26 -06:00
d37202585f
Canvas: root group should not fill or outline itself
2021-08-13 12:51:26 -06:00
2e993c6f86
Canvas: tweak test script runner
2021-08-13 12:51:26 -06:00
61742ededf
Canvas: change behavior of Item::preferred_size() for items without an intrinsic size
2021-08-13 12:51:26 -06:00
ea96798ee9
Canvas: tweak debug output for canvas rendering
2021-08-13 12:51:26 -06:00
0434f00a47
remove debug output
2021-08-13 12:51:26 -06:00
711c1520b5
Revert "towards a very different constraint layout tester"
...
This reverts commit 7f65ffe57685304f59bb336c9701c3a9d5cdc1a7.
2021-08-13 12:51:26 -06:00
11931f5ffb
towards a very different constraint layout tester
2021-08-13 12:51:26 -06:00
f0a0104087
Canvas: add shell scrip to run cnnstraint_test
2021-08-13 12:51:26 -06:00
504d8fdab3
Canvas: size request using preferred_size() callstack
2021-08-13 12:51:26 -06:00
5650d4f5bb
Canvas: container supports option to do fill & outline
2021-08-13 12:51:26 -06:00