Present trim cursors over region view name bar.
git-svn-id: svn://localhost/ardour2/branches/3.0@8041 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
b21f4cab02
commit
f237b2e23b
@ -750,6 +750,7 @@ Editor::Editor ()
|
||||
_popup_region_menu_item = 0;
|
||||
|
||||
_show_marker_lines = false;
|
||||
_over_region_trim_target = false;
|
||||
|
||||
constructed = true;
|
||||
instant_save ();
|
||||
|
@ -1430,6 +1430,8 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
|
||||
friend class EditorRegions;
|
||||
|
||||
ArdourCanvas::Item *last_item_entered;
|
||||
/** true if the mouse is over a place where region trim can happen */
|
||||
bool _over_region_trim_target;
|
||||
|
||||
/* non-public event handlers */
|
||||
|
||||
@ -2097,6 +2099,8 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
|
||||
Gtk::MenuItem& action_menu_item (std::string const &);
|
||||
void action_pre_activated (Glib::RefPtr<Gtk::Action> const &);
|
||||
|
||||
void set_canvas_cursor_for_region_view (double, RegionView *);
|
||||
|
||||
friend class Drag;
|
||||
friend class RegionDrag;
|
||||
friend class RegionMoveDrag;
|
||||
|
@ -1576,7 +1576,8 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_
|
||||
|
||||
case RegionViewNameHighlight:
|
||||
if (is_drawable() && mouse_mode == MouseObject && !internal_editing()) {
|
||||
set_canvas_cursor (trimmer_cursor);
|
||||
set_canvas_cursor_for_region_view (event->crossing.x, entered_regionview);
|
||||
_over_region_trim_target = true;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -1636,7 +1637,8 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_
|
||||
|
||||
if (!reinterpret_cast<RegionView *> (item->get_data ("regionview"))->name_active()) {
|
||||
if (mouse_mode == MouseObject && is_drawable()) {
|
||||
set_canvas_cursor (trimmer_cursor);
|
||||
set_canvas_cursor_for_region_view (event->crossing.x, entered_regionview);
|
||||
_over_region_trim_target = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -1791,6 +1793,8 @@ Editor::leave_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_
|
||||
case MarkerViewHandleEndItem:
|
||||
#endif
|
||||
|
||||
_over_region_trim_target = false;
|
||||
|
||||
if (is_drawable()) {
|
||||
set_canvas_cursor (current_canvas_cursor);
|
||||
}
|
||||
@ -1811,6 +1815,8 @@ Editor::leave_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_
|
||||
|
||||
case RegionViewName:
|
||||
/* see enter_handler() for notes */
|
||||
_over_region_trim_target = false;
|
||||
|
||||
if (!reinterpret_cast<RegionView *> (item->get_data ("regionview"))->name_active()) {
|
||||
if (is_drawable() && mouse_mode == MouseObject) {
|
||||
set_canvas_cursor (current_canvas_cursor);
|
||||
@ -2007,6 +2013,10 @@ Editor::motion_handler (ArdourCanvas::Item* /*item*/, GdkEvent* event, bool from
|
||||
set_canvas_cursor ();
|
||||
}
|
||||
|
||||
if (_over_region_trim_target) {
|
||||
set_canvas_cursor_for_region_view (event->motion.x, entered_regionview);
|
||||
}
|
||||
|
||||
bool handled = false;
|
||||
if (_drags->active ()) {
|
||||
handled = _drags->motion_handler (event, from_autoscroll);
|
||||
@ -2704,3 +2714,25 @@ Editor::remove_midi_note (ArdourCanvas::Item* item, GdkEvent *)
|
||||
|
||||
e->region_view().delete_note (e->note ());
|
||||
}
|
||||
|
||||
void
|
||||
Editor::set_canvas_cursor_for_region_view (double x, RegionView* rv)
|
||||
{
|
||||
ArdourCanvas::Group* g = rv->get_canvas_group ();
|
||||
ArdourCanvas::Group* p = g->get_parent_group ();
|
||||
|
||||
/* Compute x in region view parent coordinates */
|
||||
double dy = 0;
|
||||
p->w2i (x, dy);
|
||||
|
||||
double x1, x2, y1, y2;
|
||||
g->get_bounds (x1, y1, x2, y2);
|
||||
|
||||
double const h = (x1 + x2) / 2;
|
||||
|
||||
if (x1 < x && x <= h) {
|
||||
set_canvas_cursor (left_side_trim_cursor);
|
||||
} else if (h < x && x <= x2) {
|
||||
set_canvas_cursor (right_side_trim_cursor);
|
||||
}
|
||||
}
|
||||
|
@ -679,8 +679,19 @@ RegionView::update_coverage_frames (LayerDisplay d)
|
||||
|
||||
if (frame_handle_start) {
|
||||
frame_handle_start->raise_to_top ();
|
||||
}
|
||||
|
||||
if (frame_handle_end) {
|
||||
frame_handle_end->raise_to_top ();
|
||||
}
|
||||
|
||||
if (name_highlight) {
|
||||
name_highlight->raise_to_top ();
|
||||
}
|
||||
|
||||
if (name_pixbuf) {
|
||||
name_pixbuf->raise_to_top ();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
Loading…
Reference in New Issue
Block a user