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);
|
track_drag = new TrackDrag (dynamic_cast<RouteTimeAxisView*> (&tav), *_session);
|
||||||
DEBUG_TRACE (DEBUG::TrackDrag, string_compose ("start track drag with %1\n", track_drag));
|
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;
|
int xo, yo;
|
||||||
w.translate_coordinates (edit_controls_vbox, 0, y, 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->bump_track = nullptr;
|
||||||
track_drag->previous = yo;
|
track_drag->previous = yo;
|
||||||
track_drag->start = yo;
|
track_drag->start = yo;
|
||||||
@ -7067,6 +7060,12 @@ Editor::mid_track_drag (GdkEventMotion* ev, Gtk::Widget& w)
|
|||||||
if (!track_drag->track->selected()) {
|
if (!track_drag->track->selected()) {
|
||||||
set_selected_track (*track_drag->track, Selection::Set, false);
|
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;
|
track_drag->first_move = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -411,8 +411,28 @@ TimeAxisView::controls_ebox_scroll (GdkEventScroll* ev)
|
|||||||
bool
|
bool
|
||||||
TimeAxisView::controls_ebox_button_press (GdkEventButton* event)
|
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 */
|
/* see if it is inside the name label */
|
||||||
|
|
||||||
|
|
||||||
if (name_label.is_ancestor (controls_ebox)) {
|
if (name_label.is_ancestor (controls_ebox)) {
|
||||||
|
|
||||||
int nlx;
|
int nlx;
|
||||||
@ -426,13 +446,13 @@ TimeAxisView::controls_ebox_button_press (GdkEventButton* event)
|
|||||||
begin_name_edit ();
|
begin_name_edit ();
|
||||||
_ebox_release_can_act = false;
|
_ebox_release_can_act = false;
|
||||||
return true;
|
return true;
|
||||||
} else {
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* double-click outside the name area */
|
||||||
|
|
||||||
if (event->button == 1 && event->type == GDK_2BUTTON_PRESS) {
|
if (event->button == 1 && event->type == GDK_2BUTTON_PRESS) {
|
||||||
if (_effective_height < preset_height (HeightLargest)) {
|
if (_effective_height < preset_height (HeightLargest)) {
|
||||||
set_height_enum (HeightLargest);
|
set_height_enum (HeightLargest);
|
||||||
@ -447,11 +467,9 @@ TimeAxisView::controls_ebox_button_press (GdkEventButton* event)
|
|||||||
|
|
||||||
_resize_drag_start = event->y_root;
|
_resize_drag_start = event->y_root;
|
||||||
|
|
||||||
} else {
|
} else if (event->button == 1 && event->type == GDK_BUTTON_PRESS) {
|
||||||
if (event->button == 1) {
|
|
||||||
_editor.start_track_drag (*this, event->y, controls_ebox);
|
_editor.start_track_drag (*this, event->y, controls_ebox);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user