diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2009-09-03 14:50:21 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2009-09-03 14:50:21 +0000 |
commit | b7fe417f7096bc03c9f0f0a5db362196857e63f9 (patch) | |
tree | da6e876dd7bbde03c4ae72eb3b6a6ca9126fdbed /gtk2_ardour | |
parent | b0b584c2a595bfdf6bb4b980bd8d8fc7f3546fc5 (diff) |
better way to "engage" step edit, and extend region correctly as needed
git-svn-id: svn://localhost/ardour2/branches/3.0@5630 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/editor_mouse.cc | 18 | ||||
-rw-r--r-- | gtk2_ardour/midi_region_view.cc | 3 | ||||
-rw-r--r-- | gtk2_ardour/midi_time_axis.cc | 41 | ||||
-rw-r--r-- | gtk2_ardour/midi_time_axis.h | 7 | ||||
-rw-r--r-- | gtk2_ardour/route_ui.cc | 23 | ||||
-rw-r--r-- | gtk2_ardour/route_ui.h | 4 |
6 files changed, 25 insertions, 71 deletions
diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index 33054f2ca9..cffc4afd1b 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -2558,9 +2558,27 @@ Editor::set_internal_edit (bool yn) if (yn) { mouse_select_button.set_image (*(manage (new Image (::get_icon("midi_tool_pencil"))))); + + for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { + MidiTimeAxisView* mtv = dynamic_cast<MidiTimeAxisView*> (*i); + if (mtv) { + mtv->start_step_editing (); + } + } + } else { + mouse_select_button.set_image (*(manage (new Image (::get_xpm("tool_range.xpm"))))); + + for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { + MidiTimeAxisView* mtv = dynamic_cast<MidiTimeAxisView*> (*i); + if (mtv) { + mtv->stop_step_editing (); + } + } } set_canvas_cursor (); + + } diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc index d3af36ab92..9ad82707d7 100644 --- a/gtk2_ardour/midi_region_view.cc +++ b/gtk2_ardour/midi_region_view.cc @@ -2248,8 +2248,7 @@ MidiRegionView::add_note (uint8_t channel, uint8_t number, uint8_t velocity, /* potentially extend region to hold new note */ - - nframes64_t end_frame = _region->position() + beats_to_frames (new_note->length()); + nframes64_t end_frame = _region->position() + beats_to_frames (new_note->end_time()); nframes64_t region_end = _region->position() + _region->length() - 1; if (end_frame > region_end) { diff --git a/gtk2_ardour/midi_time_axis.cc b/gtk2_ardour/midi_time_axis.cc index 33315cfaa6..3b7ec82807 100644 --- a/gtk2_ardour/midi_time_axis.cc +++ b/gtk2_ardour/midi_time_axis.cc @@ -560,44 +560,6 @@ MidiTimeAxisView::route_active_changed () } void -MidiTimeAxisView::build_rec_context_menu () -{ - using namespace Menu_Helpers; - - if (!is_track()) { - return; - } - - rec_context_menu = manage (new Menu); - rec_context_menu->set_name ("ArdourContextMenu"); - - MenuList& items = rec_context_menu->items(); - - items.push_back (CheckMenuElem (_("Step Edit"), - (mem_fun (*this, &MidiTimeAxisView::toggle_step_editing)))); - _step_edit_item = dynamic_cast<CheckMenuItem*>(&items.back()); - _step_edit_item->set_active (midi_track()->step_editing()); -} - -void -MidiTimeAxisView::toggle_step_editing () -{ - if (!is_track()) { - return; - } - - bool yn = _step_edit_item->get_active(); - - if (yn) { - start_step_editing (); - } else { - stop_step_editing (); - } - - midi_track()->set_step_editing (yn); -} - -void MidiTimeAxisView::start_step_editing () { step_edit_connection = Glib::signal_timeout().connect (mem_fun (*this, &MidiTimeAxisView::check_step_edit), 20); @@ -611,12 +573,15 @@ MidiTimeAxisView::start_step_editing () } else { step_edit_region_view = 0; } + + midi_track()->set_step_editing (true); } void MidiTimeAxisView::stop_step_editing () { step_edit_connection.disconnect (); + midi_track()->set_step_editing (false); } bool diff --git a/gtk2_ardour/midi_time_axis.h b/gtk2_ardour/midi_time_axis.h index 850fb90e34..6635c3de41 100644 --- a/gtk2_ardour/midi_time_axis.h +++ b/gtk2_ardour/midi_time_axis.h @@ -88,6 +88,9 @@ class MidiTimeAxisView : public RouteTimeAxisView return _midi_patch_settings_changed; } + void start_step_editing (); + void stop_step_editing (); + private: sigc::signal<void, std::string, std::string> _midi_patch_settings_changed; @@ -104,7 +107,6 @@ class MidiTimeAxisView : public RouteTimeAxisView void set_note_range(MidiStreamView::VisibleNoteRange range); void route_active_changed (); - void build_rec_context_menu (); void add_insert_to_subplugin_menu (ARDOUR::Processor *); @@ -132,9 +134,6 @@ class MidiTimeAxisView : public RouteTimeAxisView boost::shared_ptr<ARDOUR::Region> step_edit_region; MidiRegionView* step_edit_region_view; - void toggle_step_editing (); - void start_step_editing (); - void stop_step_editing (); bool check_step_edit (); }; diff --git a/gtk2_ardour/route_ui.cc b/gtk2_ardour/route_ui.cc index 6c42de5848..f46450a0bc 100644 --- a/gtk2_ardour/route_ui.cc +++ b/gtk2_ardour/route_ui.cc @@ -95,7 +95,6 @@ RouteUI::init () mute_menu = 0; solo_menu = 0; sends_menu = 0; - rec_context_menu = 0; ignore_toggle = false; wait_for_release = false; route_active_menu_item = 0; @@ -512,31 +511,9 @@ RouteUI::rec_enable_press(GdkEventButton* ev) return true; } - -void -RouteUI::show_rec_context_menu () -{ - if (!rec_context_menu) { - cerr << "build menu\n"; - build_rec_context_menu (); - } - - if (rec_context_menu) { - /* only do this if build_rec_context_menu() actually did something */ - cerr << "show menu\n"; - rec_context_menu->popup (1, gtk_get_current_event_time()); - } -} - bool RouteUI::rec_enable_release (GdkEventButton* ev) { - cerr << "release\n"; - if (Keyboard::is_context_menu_event(ev)) { - cerr << "context\n"; - show_rec_context_menu (); - } - return true; } diff --git a/gtk2_ardour/route_ui.h b/gtk2_ardour/route_ui.h index 17e5f77cf6..1ac87a0404 100644 --- a/gtk2_ardour/route_ui.h +++ b/gtk2_ardour/route_ui.h @@ -98,10 +98,6 @@ class RouteUI : public virtual AxisView Gtk::Menu* mute_menu; Gtk::Menu* solo_menu; Gtk::Menu* sends_menu; - Gtk::Menu* rec_context_menu; - - virtual void build_rec_context_menu () { } - void show_rec_context_menu (); XMLNode *xml_node; void ensure_xml_node (); |