redesign track drag so that we can start from anywhere in the header, including the name
This commit is contained in:
parent
40ef5f3b15
commit
c7b8840f8f
@ -7034,17 +7034,10 @@ Editor::start_track_drag (TimeAxisView& tav, int y, Gtk::Widget& w)
|
||||
{
|
||||
track_drag = new TrackDrag (dynamic_cast<RouteTimeAxisView*> (&tav), *_session);
|
||||
DEBUG_TRACE (DEBUG::TrackDrag, string_compose ("start track drag with %1\n", track_drag));
|
||||
PBD::stacktrace (std::cerr, 20);
|
||||
|
||||
track_drag->drag_cursor = _cursors->move->gobj();
|
||||
track_drag->predrag_cursor = gdk_window_get_cursor (edit_controls_vbox.get_window()->gobj());
|
||||
|
||||
gdk_window_set_cursor (edit_controls_vbox.get_toplevel()->get_window()->gobj(), track_drag->drag_cursor);
|
||||
|
||||
int xo, yo;
|
||||
w.translate_coordinates (edit_controls_vbox, 0, y, xo, yo);
|
||||
|
||||
track_drag->have_predrag_cursor = true;
|
||||
track_drag->bump_track = nullptr;
|
||||
track_drag->previous = yo;
|
||||
track_drag->start = yo;
|
||||
@ -7067,6 +7060,12 @@ Editor::mid_track_drag (GdkEventMotion* ev, Gtk::Widget& w)
|
||||
if (!track_drag->track->selected()) {
|
||||
set_selected_track (*track_drag->track, Selection::Set, false);
|
||||
}
|
||||
|
||||
track_drag->drag_cursor = _cursors->move->gobj();
|
||||
track_drag->predrag_cursor = gdk_window_get_cursor (edit_controls_vbox.get_window()->gobj());
|
||||
gdk_window_set_cursor (edit_controls_vbox.get_toplevel()->get_window()->gobj(), track_drag->drag_cursor);
|
||||
track_drag->have_predrag_cursor = true;
|
||||
|
||||
track_drag->first_move = false;
|
||||
}
|
||||
|
||||
|
@ -411,8 +411,28 @@ TimeAxisView::controls_ebox_scroll (GdkEventScroll* ev)
|
||||
bool
|
||||
TimeAxisView::controls_ebox_button_press (GdkEventButton* event)
|
||||
{
|
||||
if (event->button == 1) {
|
||||
/* double-click inside the name area */
|
||||
|
||||
if ((event->button == 1 && event->type == GDK_2BUTTON_PRESS) || Keyboard::is_edit_event (event)) {
|
||||
|
||||
/* Remember, for a dbl-click, X Window/GDK sends:
|
||||
|
||||
button press
|
||||
button release
|
||||
button press
|
||||
2button press
|
||||
(and later, button release)
|
||||
|
||||
since we would have "started" a track drag
|
||||
on the button press that precded the 2button press,
|
||||
we need to cancel it here.
|
||||
*/
|
||||
|
||||
_editor.end_track_drag ();
|
||||
|
||||
/* see if it is inside the name label */
|
||||
|
||||
|
||||
if (name_label.is_ancestor (controls_ebox)) {
|
||||
|
||||
int nlx;
|
||||
@ -426,13 +446,13 @@ TimeAxisView::controls_ebox_button_press (GdkEventButton* event)
|
||||
begin_name_edit ();
|
||||
_ebox_release_can_act = false;
|
||||
return true;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* double-click outside the name area */
|
||||
|
||||
if (event->button == 1 && event->type == GDK_2BUTTON_PRESS) {
|
||||
if (_effective_height < preset_height (HeightLargest)) {
|
||||
set_height_enum (HeightLargest);
|
||||
@ -447,10 +467,8 @@ TimeAxisView::controls_ebox_button_press (GdkEventButton* event)
|
||||
|
||||
_resize_drag_start = event->y_root;
|
||||
|
||||
} else {
|
||||
if (event->button == 1) {
|
||||
_editor.start_track_drag (*this, event->y, controls_ebox);
|
||||
}
|
||||
} else if (event->button == 1 && event->type == GDK_BUTTON_PRESS) {
|
||||
_editor.start_track_drag (*this, event->y, controls_ebox);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
Loading…
Reference in New Issue
Block a user