5044feec95
more canvas debugging for current item tracing
2014-07-18 10:43:52 -04:00
a1bc2cb10e
fix potential crash if certain Canvas methods are used before its window is realized
2014-07-07 08:00:20 -04:00
69a92e67f0
Add Canvas::re_enter() which picks the current item again based on mouse pointer position and generates an enter event for it
2014-07-07 07:53:17 -04:00
d816c225a4
more extensive canvas debug message for canvas-enter-leave tracing
2014-06-30 16:32:01 -04:00
cf075743e4
additional DEBUG_TRACE message for canvas current item selection
2014-06-30 08:32:26 -04:00
a0cb2f95f0
if CANVAS_DEBUG is defined, then the env variable CANVAS_HARLEQUIN_DEBUGGING will turn on drawing the expose areas for canvas render debugging
2014-06-27 10:27:04 -04:00
6cc673f0a6
in Canvas::window_to_canvas(), if either x or y coordinate is less than zero, search for the scroll group on the relevant edge.
...
If we don't do this then we find no scroll group covering the event coordinate, and the translation for scroll fails to be applied
2014-06-27 10:19:21 -04:00
3accf1d2af
new API for TrackingText and similar items
2014-06-26 15:10:24 -04:00
663f9827f9
last piece of scroll-wheel checkin, oops
2014-06-24 10:46:53 -05:00
2cc25a9d79
add scroll wheel handler to canvas
2014-06-24 10:33:28 -05:00
99f9b3456a
explicitly qualify cast to ArdourCanvas::Container so that it works.
...
I assume that gcc is failing to complain about ambiguity with Gtk::Container even though there should
really be no ambiguity
2014-06-22 09:29:16 -04:00
a8bd6ecc4f
refactor Canvas so that all Items have children; add Container abstract base class; rename Group as "Layout" and retain only drawing semantics
2014-06-21 11:43:42 -04:00
36a34dc1a4
Merge branch 'canvas_tweaks' of https://github.com/nmains/ardour into cairocanvas
2014-06-18 11:20:10 -04:00
becf857f48
a whole slew of changes related to centralizing and rationalizing cursor management.
...
Debugging output left in place to help address the reports that will come in as people test this more
2014-06-18 10:24:59 -04:00
nick_m
0bd17ed2e4
Canvas tweaks.
...
* Only queue a draw for changed items that are set visible and in-window.
2014-06-19 00:06:32 +10:00
f98e0a0707
use a different approach for indicating expose rects (from robin gareus). #ifdef'd out by default
2014-06-17 11:34:54 -04:00
8050712503
comment correction regarding Canvas::visible_area()
2014-06-15 12:18:47 -04:00
f0c18abf55
remove global canvas scroll offset, to provide no-scroll-parent == no-scroll behaviour
2014-06-09 08:39:48 -04:00
5e281d3b44
when delivering enter/leave events to canvas items, ensure that the event coordinates are in canvas space, not window space
...
This fixes a variety of borkage in the canvas at present
2014-06-08 11:26:32 -04:00
ef9bf58359
fix problems with expose/redraws from canvas where requested area goes way outside the integer range allowed by GTK/GDK
2014-06-05 14:42:46 -04:00
e0533e9dd7
more profound changes to canvas scrolling, in particular find appropriate ScrollGroup for Canvas::{window,canvas}_to_{canvas,window}()
2014-06-03 16:13:12 -04:00
d4989ed9ce
fix missing leftover Canvas::pick_current_item() which was confusing button release event coordinates
2014-06-03 16:12:00 -04:00
073df89c4d
use window-based coordinates when picking current item so that we get per-item (per-scroll-group,really) computation of position and coverage.
2014-06-03 16:12:00 -04:00
54a56cd3c6
various changes to get independent scrolling to work better in canvas. mostly tweaks relating to how scroll offsets are used during rendering.
...
Event handling offsets still require work.
2014-06-03 16:12:00 -04:00
c9f890bd7c
avoid recursing through the entire canvas when scrolling - only scroll explicitly identified ScrollGroups
2014-06-03 16:10:27 -04:00
6019f06bdf
different approach to independent scrolling, involving ArdourCanvas::ScrollGroup
...
The idea now is that a scroll group item can be added to the canvas which will causes its children to scroll in either or both
directions (horizontal or vertical). There are few complications: the position() of the ScrollGroup is ambiguous depending
on whether you want it with scroll taken into account or not, so Item::canvas_position() was added, which defaults to
the same value as Item::position() but is overridden by ScrollGroup to return the position independent of scrolling. This
method is used when translating between item/canvas/window coordinate systems.
Note that the basic idea is that we MOVE the scroll group when a scroll happens. This mirrors what happens in the GnomeCanvas,
where Nick Mainsbridge came up with a great idea that allowed unification of the time bar and track canvases.
2014-06-03 16:10:27 -04:00
97109672c7
initial redesign of canvas scrolling to facilitate independent x- and y-axis scrolling of specific groups within the canvas.
...
This commit should cause no change in behaviour, but contains all the code and changes necessary
for the next step
2014-06-03 16:09:06 -04:00
fed5599baa
smooth visual curve drawing
2014-05-30 03:04:02 +02:00
c2946ee00f
don't queue redraws when various canvas item properties are "reset" to the same value, plus supporting functions
2014-03-11 07:36:09 -04:00
a08c0ea1da
manually revert change to canvas expose handling in fee026c5ef
...
Breaking out the rectangles implies a z-axis ordering of drawing,because the rect drawn last will implicitly be "on top".
But redraw areas are not submitted with any z-axis information, and so drawing like this breaks canvas layering. It
would be more efficient to draw the rects separately, but we don't have any ordering information and so we cannot do it
correctly.
2014-03-05 13:12:18 -05:00
fee026c5ef
break down GdkEventExpose into distinct rectangles for canvas expose rather than drawing the entire region as a single rect
2014-03-04 21:58:16 -05:00
0cbf8f7dea
fix canvas enter/leave bug when point is over a group/ignore-event item and we fail to send a leave event to the previous item
2014-02-25 16:08:36 -05:00
f9a3e7f8bb
add DEBUG::CanvasEnterLeave to allow runtime toggling of canvas enter/leave events
2014-02-25 16:07:51 -05:00
a329a44cc1
when delivering canvas events, if an item is grabbed, use it in preference to Canvas::_current_item, but still propagate to its ancestors if left unhandled
2014-02-11 22:49:10 -05:00
3c5a870289
a better, more general fix for the previous Canvas::item_going_away() issue. There is no need to repick the current item if the item going away is NOT the current item
2014-01-20 10:59:44 -05:00
2691209050
When removing an item which is event-insensitive, there is no need to repick the current item, since it can never have been used as the current item.
...
This fixes crashes associated with ghost notes in midi regions.
2014-01-20 10:53:58 -05:00
620e1e6677
add event type string function to canvas (since it does not use gtkmm2ext)
2014-01-16 10:52:34 -05:00
9df593d823
clamp expose (queue_redraw()) requests to visible window area, some extra debugging details
2014-01-10 14:35:36 -05:00
ffdf3ed017
don't go through ::deliver_enter_leave() unnecessarily
2014-01-10 11:02:05 -05:00
a70edc5765
change rounding used for convert Rect from canvas to window coordinates
2014-01-08 10:31:14 -05:00
98dec658ee
Revert "remove unused code"
...
This reverts commit 2d283c17e1
.
2014-01-08 10:29:03 -05:00
2d283c17e1
remove unused code
2014-01-08 10:28:46 -05:00
2d50adaf3a
ignore invisible items when picking the current item
...
Also left behind some commented debug out that probably deserves a new PBD::Debug bit.
2013-12-30 14:02:43 -05:00
84f55440a3
fix redrawing of canvas with an optimized build
...
Best guess right now is that optimization does something bad when ceil() is called twice on a very large dbl-precision number,
which results in a zero (empty) redraw area. Without the removal of the redundant ceil & floor functions, no expose events
would be delivered to the canvas in an optimized build during drags (and maybe more).
2013-12-23 15:35:49 -05:00
9b6135b2e1
change enter/exit event delivery to follow X Window model (inferior, ancestor, virtual, nonlinear)
2013-12-12 20:44:04 -05:00
88732abd01
change event propagation to be based on parent/child lineage, not z-axis stacking, plus some more alterations to try to get enter/leave working
2013-12-12 10:03:33 -05:00
4780c84252
debug trace tweaks
2013-12-09 13:38:22 -05:00
6473cc7cb4
drop use of bounding box to determine whether an item covers a point; add Item::covers(Duple const&)
...
Default implementation for Item still uses bounding box, but specializations for Arc (Circle), Polygon, Line and PolyLine have been added
2013-11-04 11:56:10 -05:00
08b485db75
send enter events to EVERY newly entered item (ignore the bool return from the event handler); other canvas debugging aids;switch items_at_point() to use canvas coordinates
2013-11-03 10:07:00 -05:00
85daa31ab5
all events propagate out of the canvas in canvas coordinates now, so revert changes in editor_drags.cc that worked around this not being the case
2013-10-31 16:43:35 -04:00