diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2013-04-11 20:19:22 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2013-04-11 20:19:22 -0400 |
commit | ee1f0520a820fb829ef3c1dbfcbb57e37242c2c8 (patch) | |
tree | 66ce908eff7680bd3b1e28732d598ecab5a6875a /gtk2_ardour | |
parent | 1fda7b293ac3435526e3992a37b19f9ada19a3bd (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.cc | 9 | ||||
-rw-r--r-- | gtk2_ardour/editor.h | 1 | ||||
-rw-r--r-- | gtk2_ardour/editor_drag.cc | 3 | ||||
-rw-r--r-- | gtk2_ardour/editor_mouse.cc | 32 | ||||
-rw-r--r-- | gtk2_ardour/editor_summary.cc | 1 |
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 |