fix up dragging notes in percussive mode
git-svn-id: svn://localhost/ardour2/branches/3.0@5749 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
@@ -22,39 +22,7 @@ CanvasHit::on_event(GdkEvent* ev)
|
||||
void
|
||||
CanvasHit::move_event(double dx, double dy)
|
||||
{
|
||||
move (dx, dy);
|
||||
|
||||
#if 0
|
||||
cerr << "Move event by " << dx << " " << dy << endl;
|
||||
|
||||
points->coords[0] += dx;
|
||||
points->coords[1] += dy;
|
||||
|
||||
points->coords[2] += dx;
|
||||
points->coords[3] += dy;
|
||||
|
||||
points->coords[4] += dx;
|
||||
points->coords[5] += dy;
|
||||
|
||||
points->coords[6] += dx;
|
||||
points->coords[7] += dy;
|
||||
|
||||
cerr << "Coords now " << endl
|
||||
<< '\t' << points->coords[0] << ", " << points->coords[1] << endl
|
||||
<< '\t' << points->coords[2] << ", " << points->coords[3] << endl
|
||||
<< '\t' << points->coords[4] << ", " << points->coords[5] << endl
|
||||
<< '\t' << points->coords[6] << ", " << points->coords[7] << endl
|
||||
;
|
||||
|
||||
if (_text) {
|
||||
_text->property_x() = _text->property_x() + dx;
|
||||
_text->property_y() = _text->property_y() + dy;
|
||||
}
|
||||
|
||||
hide ();
|
||||
show ();
|
||||
// request_update ();
|
||||
#endif
|
||||
move_by (dx, dy);
|
||||
}
|
||||
|
||||
} // namespace Gnome
|
||||
|
||||
@@ -24,10 +24,13 @@ using namespace Gnome::Art;
|
||||
|
||||
Diamond::Diamond(Group& group, double height)
|
||||
: Polygon(group)
|
||||
, _x (0)
|
||||
, _y (0)
|
||||
, _h (height)
|
||||
{
|
||||
points = gnome_canvas_points_new (4);
|
||||
g_object_set (gobj(), "points", points, NULL);
|
||||
set_height (height);
|
||||
move_to (0, 0);
|
||||
}
|
||||
|
||||
Diamond::~Diamond ()
|
||||
@@ -36,24 +39,47 @@ Diamond::~Diamond ()
|
||||
}
|
||||
|
||||
void
|
||||
Diamond::set_height(double height)
|
||||
Diamond::set_height (double height)
|
||||
{
|
||||
double x1, y1, x2, y2;
|
||||
|
||||
get_bounds (x1, y1, x2, y2);
|
||||
_h = height;
|
||||
move_to (_x, _y);
|
||||
}
|
||||
|
||||
points->coords[0] = x1;
|
||||
points->coords[1] = y1 + height*2.0;
|
||||
void
|
||||
Diamond::move_to (double x, double y)
|
||||
{
|
||||
_x = x;
|
||||
_y = y;
|
||||
|
||||
points->coords[2] = x2 + height;
|
||||
points->coords[3] = y1 + height;
|
||||
points->coords[0] = _x;
|
||||
points->coords[1] = _y + (_h * 2.0);
|
||||
|
||||
points->coords[4] = x1;
|
||||
points->coords[5] = y2;
|
||||
|
||||
points->coords[6] = x2 -height;
|
||||
points->coords[7] = y2 + height;
|
||||
points->coords[2] = _x + _h;
|
||||
points->coords[3] = _y + _h;
|
||||
|
||||
points->coords[4] = _x;
|
||||
points->coords[5] = _y;
|
||||
|
||||
points->coords[6] = _x - _h;
|
||||
points->coords[7] = _y + _h;
|
||||
|
||||
g_object_set (gobj(), "points", points, NULL);
|
||||
}
|
||||
|
||||
void
|
||||
Diamond::move_by (double dx, double dy)
|
||||
{
|
||||
points->coords[0] += dx;
|
||||
points->coords[1] += dy;
|
||||
|
||||
points->coords[2] += dx;
|
||||
points->coords[3] += dy;
|
||||
|
||||
points->coords[4] += dx;
|
||||
points->coords[5] += dy;
|
||||
|
||||
points->coords[6] += dx;
|
||||
points->coords[7] += dy;
|
||||
|
||||
g_object_set (gobj(), "points", points, NULL);
|
||||
}
|
||||
|
||||
@@ -34,9 +34,14 @@ class Diamond : public Polygon
|
||||
Diamond(Group& group, double height);
|
||||
~Diamond ();
|
||||
|
||||
void move_to (double x, double y);
|
||||
void move_by (double dx, double dy);
|
||||
void set_height(double height);
|
||||
|
||||
protected:
|
||||
double _x;
|
||||
double _y;
|
||||
double _h;
|
||||
GnomeCanvasPoints* points;
|
||||
};
|
||||
|
||||
|
||||
@@ -1235,7 +1235,7 @@ MidiRegionView::update_hit (CanvasHit* ev)
|
||||
const double diamond_size = midi_stream_view()->note_height() / 2.0;
|
||||
const double y = midi_stream_view()->note_to_y(note->note()) + ((diamond_size-2) / 4.0);
|
||||
|
||||
ev->move_event (x, y);
|
||||
ev->move_to (x, y);
|
||||
}
|
||||
|
||||
/** Add a MIDI note to the view (with length).
|
||||
|
||||
Reference in New Issue
Block a user