summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2013-04-11 20:19:22 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2013-04-11 20:19:22 -0400
commitee1f0520a820fb829ef3c1dbfcbb57e37242c2c8 (patch)
tree66ce908eff7680bd3b1e28732d598ecab5a6875a /gtk2_ardour
parent1fda7b293ac3435526e3992a37b19f9ada19a3bd (diff)
many changes to get the cairo-canvas version much, much more functional. still problems with a lot of subtle and not-so-subtle issues
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/editor.cc9
-rw-r--r--gtk2_ardour/editor.h1
-rw-r--r--gtk2_ardour/editor_drag.cc3
-rw-r--r--gtk2_ardour/editor_mouse.cc32
-rw-r--r--gtk2_ardour/editor_summary.cc1
5 files changed, 22 insertions, 24 deletions
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index 7f49c56d7b..6bae2674df 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -517,12 +517,6 @@ Editor::Editor ()
time_bars_event_box.set_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK);
time_bars_event_box.signal_button_release_event().connect (sigc::mem_fun(*this, &Editor::ruler_label_button_release));
- /* these enable us to have a dedicated window (for cursor setting, etc.)
- for the canvas areas.
- */
-
- track_canvas_event_box.add (*_track_canvas_viewport);
-
time_canvas_event_box.add (time_canvas_vbox);
time_canvas_event_box.set_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::POINTER_MOTION_MASK);
@@ -543,7 +537,7 @@ Editor::Editor ()
/* time bars canvas */
edit_packer.attach (*_time_bars_canvas_viewport, 2, 3, 1, 2, FILL, FILL, 0, 0);
/* track canvas */
- edit_packer.attach (track_canvas_event_box, 2, 3, 2, 3, FILL|EXPAND, FILL|EXPAND, 0, 0);
+ edit_packer.attach (*_track_canvas_viewport, 2, 3, 2, 3, FILL|EXPAND, FILL|EXPAND, 0, 0);
bottom_hbox.set_border_width (2);
bottom_hbox.set_spacing (3);
@@ -788,6 +782,7 @@ Editor::~Editor()
delete button_bindings;
delete _routes;
delete _route_groups;
+ delete _time_bars_canvas_viewport;
delete _track_canvas_viewport;
delete _drags;
}
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h
index 43d3fccedf..92f60acefa 100644
--- a/gtk2_ardour/editor.h
+++ b/gtk2_ardour/editor.h
@@ -732,7 +732,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
bool track_canvas_motion (GdkEvent*);
Gtk::EventBox time_canvas_event_box;
- Gtk::EventBox track_canvas_event_box;
Gtk::EventBox time_bars_event_box;
Gtk::EventBox ruler_label_event_box;
diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc
index 701181d009..8822548ca0 100644
--- a/gtk2_ardour/editor_drag.cc
+++ b/gtk2_ardour/editor_drag.cc
@@ -496,10 +496,9 @@ RegionMotionDrag::RegionMotionDrag (Editor* e, ArdourCanvas::Item* i, RegionView
_brushing (b),
_total_x_delta (0)
{
-
+ DEBUG_TRACE (DEBUG::Drags, "New RegionMotionDrag\n");
}
-
void
RegionMotionDrag::start_grab (GdkEvent* event, Gdk::Cursor* cursor)
{
diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc
index de22451422..220178d18a 100644
--- a/gtk2_ardour/editor_mouse.cc
+++ b/gtk2_ardour/editor_mouse.cc
@@ -104,7 +104,7 @@ Editor::mouse_frame (framepos_t& where, bool& in_track_canvas) const
int x, y;
double wx, wy;
Gdk::ModifierType mask;
- Glib::RefPtr<Gdk::Window> canvas_window = const_cast<Editor*>(this)->_track_canvas_viewport->get_bin_window();
+ Glib::RefPtr<Gdk::Window> canvas_window = const_cast<Editor*>(this)->_track_canvas_viewport->get_window();
Glib::RefPtr<const Gdk::Window> pointer_window;
if (!canvas_window) {
@@ -134,6 +134,8 @@ Editor::mouse_frame (framepos_t& where, bool& in_track_canvas) const
framepos_t
Editor::event_frame (GdkEvent const * event, double* pcx, double* pcy) const
{
+ using ArdourCanvas::Duple;
+ Duple d;
double cx, cy;
if (pcx == 0) {
@@ -146,32 +148,36 @@ Editor::event_frame (GdkEvent const * event, double* pcx, double* pcy) const
*pcx = 0;
*pcy = 0;
- /* The event coordinates will be canvas coordinates */
+ /* The event coordinates will be window coordinates and we need canvas
+ * coordinates (units are pixels as with the window, but scrolling is taken into account)
+ */
switch (event->type) {
case GDK_BUTTON_RELEASE:
case GDK_BUTTON_PRESS:
case GDK_2BUTTON_PRESS:
case GDK_3BUTTON_PRESS:
- *pcx = event->button.x;
- *pcy = event->button.y;
- _trackview_group->canvas_to_item (*pcx, *pcy);
+ d = _track_canvas->window_to_canvas (Duple (event->button.x, event->button.y));
+ *pcx = d.x;
+ *pcy = d.y;
break;
case GDK_MOTION_NOTIFY:
- *pcx = event->motion.x;
- *pcy = event->motion.y;
- _trackview_group->canvas_to_item (*pcx, *pcy);
+ d = _track_canvas->window_to_canvas (Duple (event->motion.x, event->motion.y));
+ *pcx = d.x;
+ *pcy = d.y;
break;
case GDK_ENTER_NOTIFY:
case GDK_LEAVE_NOTIFY:
- *pcx = event->crossing.x;
- *pcy = event->crossing.y;
- /* XXX: CANVAS */
-// track_canvas->w2c(event->crossing.x, event->crossing.y, *pcx, *pcy);
+ d = _track_canvas->window_to_canvas (Duple (event->crossing.x, event->crossing.y));
+ *pcx = d.x;
+ *pcy = d.y;
break;
case GDK_KEY_PRESS:
case GDK_KEY_RELEASE:
- // track_canvas->w2c(event->key.x, event->key.y, *pcx, *pcy);
+ // need to get pointer for this to work
+ // d = _track_canvas->window_to_canvas (Duple (event->key.x, event->key.y));
+ *pcx = 0;
+ *pcy = 0;
break;
default:
warning << string_compose (_("Editor::event_frame() used on unhandled event type %1"), event->type) << endmsg;
diff --git a/gtk2_ardour/editor_summary.cc b/gtk2_ardour/editor_summary.cc
index c7aef99389..b1fa984027 100644
--- a/gtk2_ardour/editor_summary.cc
+++ b/gtk2_ardour/editor_summary.cc
@@ -680,7 +680,6 @@ EditorSummary::on_scroll_event (GdkEventScroll* ev)
void
EditorSummary::set_editor (double const x, double const y)
{
- ArdourCanvas::checkpoint ("editor", "-> set editor");
if (_editor->pending_visual_change.idle_handler_id >= 0 && _editor->pending_visual_change.being_handled == true) {
/* As a side-effect, the Editor's visual change idle handler processes