Paul Davis
4dc63966f0
globally remove all trailing whitespace from ardour code base.
...
Paul Davis was responsible for introducing almost all of this.
2015-10-04 14:51:05 -04:00
Robin Gareus
198c4d1d88
gfx-card & performance testing
2015-05-02 04:54:59 +02:00
John Emmas
b3fb73812c
Position (and size) canvas tooltips such that they better resemble Gtk tooltips
...
Mixbus in particular uses both types of tooltip so we might as well make them look the same.
N.B. The appearance is fine now on Windows but needs to be tested on the other platforms (i.e. some tweaking might be necessary).
2015-04-09 15:46:12 +01:00
John Emmas
2234fd4b8a
Delete a canvas tooltip after we've finished with it
...
All canvas objects share just one tooltip object which is based around Gtk::Label. The Label expands if the current tooltip text is wider than the previous text. However, it doesn't shrink again if the next tooltip has shorter text. Eventually, this results in some very strange looking tooltips (especially in Mixbus where they're used quite extensively).
Deleting the object after use will force a new object to get generated next time (at the correct size). There's still only ever one object per canvas but it's no longer persistent.
2015-04-09 15:42:00 +01:00
Ben Loftis
b8ec035b24
_single_exposure is now a member variable for each GtkCanvas.
...
Gtk coalesces multiple exposes into a single combined rect.
If _single_exposure is disabled, we break apart the individual expose rects for the canvas rendering.
2015-02-12 11:35:35 -06:00
Paul Davis
c679d616f6
correct drawing of rectangle borders.
...
They need to use fractional coordinates, and the border position needed
generalizing for other border widths. See verbose comment for details
2015-02-09 16:41:28 -05:00
Ben Loftis
b4a0136155
tweak to help with uncoalesced renders
2015-02-03 17:35:37 -06:00
Paul Davis
9fab39358a
render canvas using the GDK region rather than the GDK area.
...
The region is the un-coalesced set of rectangles that were requested for redraw. The area
is the coalesced single rectangle. In the worst cases, the coalesced rectangle could span
the entire window even though just two pixels in opposite corners were to be redrawn.
There is a problem with the verbose cursor as it is dragged across MIDI tracks. TO BE
FIXED.
2015-02-03 15:38:14 -05:00
Paul Davis
e84e1f7403
ScrollGroups are kept in their own list, so ::window_to_canvas() does not need to inspect root group children to find them
...
Conflicts:
libs/canvas/canvas.cc
2015-01-24 18:48:15 -05:00
David Robillard
b759fd5879
Put playhead on top of everything.
...
Achieve this by adding a new hscroll group just for cursors.
That requires a slightly smarter window_to_canvas() to deal with overlapping
sensitive scroll groups. New rule is that scroll groups can overlap, but the
most sensitive one found from the top down will be chosen to translate
coordinates. This basically means don't overlap scroll groups with different
sensitivities.
In the presence of scroll groups, having a canvas-wide window_to_canvas()
and/or canvas_to_window() fundamentally makes no sense. At some point in the
glorious future we should kill those and use only item-relative coordinate
translation.
2015-01-16 19:13:56 -05:00
David Robillard
55278fb3b0
Fix mouse event position offset bug.
...
Search scroll groups for event delivery from top to bottom rather than bottom
to top. Overlapping scroll groups still aren't properly supported by the
canvas, but currently all we care about is that the top one gets the event, so
the hscroll group (tempo lines) can be below the hvscroll group (tracks), but
the latter gets events.
2015-01-12 01:05:01 -05:00
David Robillard
2558e52e22
Fix alleged use of uninitialized variable.
...
Looks like a guaranteed else branch to me, but who am I to argue with gcc?
2014-12-31 17:32:21 -05:00
David Robillard
333c776e0e
Fix MIDI region keyboard editing (add key handling to canvas).
2014-11-15 02:04:28 -05:00
Robin Gareus
9a9a8f78ef
fix define
2014-11-13 19:05:58 +01:00
Paul Davis
12b715e6fa
tweak canvas on_expose_event() handler to avoid unnecessary save/paint/restore
2014-11-10 20:34:20 -05:00
Paul Davis
1317b57221
add required header for compilation
2014-11-10 11:46:17 -05:00
Paul Davis
ef56948d4a
add background color property to Canvas::Canvas ; rearrange expose handling and include background fill
...
Conflicts:
libs/canvas/canvas.cc
libs/canvas/canvas/canvas.h
2014-11-10 10:43:25 -05:00
Robin Gareus
0fedfab593
tentative fix for canvas background/image surface
2014-11-07 16:50:21 +01:00
Robin Gareus
b04414d170
allow to use cairo-image/software surface for canvas & cairowidgets
2014-10-28 02:15:10 +01:00
Robin Gareus
6dc3a4bf61
remove unused old API
2014-10-28 01:27:14 +01:00
Robin Gareus
1bde96be09
there's no random() on window, but no matter
2014-09-30 19:08:16 +02:00
Paul Davis
b4438942ca
fix compiler warning from missing default statement in switch
2014-09-27 18:09:22 -04:00
Paul Davis
2a53154892
end tooltip timeout and display for relevant leave notify events
2014-09-26 17:06:38 -04:00
Paul Davis
df5a188825
further tweaks to canvas tooltip mechanism
2014-09-26 12:24:47 -04:00
Paul Davis
bb68d83e43
display and position canvas tooltip window
2014-09-26 11:05:24 -04:00
Paul Davis
d0dafc171c
basic design of Canvas item tooltip mechanism.
...
No window yet to actually display the tooltip.
2014-09-25 21:43:15 -04:00
Paul Davis
5044feec95
more canvas debugging for current item tracing
2014-07-18 10:43:52 -04:00
Paul Davis
a1bc2cb10e
fix potential crash if certain Canvas methods are used before its window is realized
2014-07-07 08:00:20 -04:00
Paul Davis
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
Paul Davis
d816c225a4
more extensive canvas debug message for canvas-enter-leave tracing
2014-06-30 16:32:01 -04:00
Paul Davis
cf075743e4
additional DEBUG_TRACE message for canvas current item selection
2014-06-30 08:32:26 -04:00
Paul Davis
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
Paul Davis
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
Paul Davis
3accf1d2af
new API for TrackingText and similar items
2014-06-26 15:10:24 -04:00
Ben Loftis
663f9827f9
last piece of scroll-wheel checkin, oops
2014-06-24 10:46:53 -05:00
Ben Loftis
2cc25a9d79
add scroll wheel handler to canvas
2014-06-24 10:33:28 -05:00
Paul Davis
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
Paul Davis
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
Paul Davis
36a34dc1a4
Merge branch 'canvas_tweaks' of https://github.com/nmains/ardour into cairocanvas
2014-06-18 11:20:10 -04:00
Paul Davis
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
Paul Davis
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
Paul Davis
8050712503
comment correction regarding Canvas::visible_area()
2014-06-15 12:18:47 -04:00
Paul Davis
f0c18abf55
remove global canvas scroll offset, to provide no-scroll-parent == no-scroll behaviour
2014-06-09 08:39:48 -04:00
Paul Davis
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
Paul Davis
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
Paul Davis
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
Paul Davis
d4989ed9ce
fix missing leftover Canvas::pick_current_item() which was confusing button release event coordinates
2014-06-03 16:12:00 -04:00
Paul Davis
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
Paul Davis
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