Compare commits

...

3 Commits

Author SHA1 Message Date
Ben Loftis 3f15a3a402 set playhead sensitivity via config (defaulted insensitive)
* in the 'fake_drag' case (dragging the playhead from the ruler), the
 mouse events are delivered to the playhead during the drag so we need
 to temporarily sensitize the playhead during that operation, then reset
 the sensitivity via config
2023-05-01 08:49:27 -05:00
Ben Loftis dd08d12475 desensitize playhead by default, and make a new config variable 'sensitize-playhead'
Historically, it was possible to grab the 1-pix-wide red line, and drag the playhead
In rare but annoying cases, the red playhead interferes with mouse clicks, because it is on top
De-sensitize the playhead by default, and provide a new config var for those who want the old operation
2023-05-01 08:49:27 -05:00
Ben Loftis a7c4ab3247 fix thinko in canvas logic (fixes mouse cursor on desensitized playhead) 2023-05-01 08:49:27 -05:00
6 changed files with 16 additions and 9 deletions

View File

@ -13,7 +13,7 @@
<Option name="color-regions-using-track-color" value="0"/>
<Option name="show-waveform-clipping" value="1"/>
<Option name="lock-gui-after-seconds" value="0"/>
<Option name="draggable-playhead" value="1"/>
<Option name="sensitize-playhead" value="0"/>
<Option name="no-new-session-dialog" value="1"/>
<Option name="show-track-meters" value="1"/>
<Option name="default-narrow_ms" value="0"/>

View File

@ -6763,9 +6763,9 @@ Editor::ui_parameter_changed (string parameter)
edit_pane.set_drag_cursor (*_cursors->expand_left_right);
editor_summary_pane.set_drag_cursor (*_cursors->expand_up_down);
} else if (parameter == "draggable-playhead") {
if (_verbose_cursor) {
_playhead_cursor->set_sensitive (UIConfiguration::instance().get_draggable_playhead());
} else if (parameter == "sensitize-playhead") {
if (_playhead_cursor) {
_playhead_cursor->set_sensitive (UIConfiguration::instance().get_sensitize_playhead());
}
} else if (parameter == "use-note-bars-for-velocity") {
ArdourCanvas::Note::set_show_velocity_bars (UIConfiguration::instance().get_use_note_bars_for_velocity());

View File

@ -270,6 +270,7 @@ Editor::initialize_canvas ()
transport_marker_bar->Event.connect (sigc::bind (sigc::mem_fun (*this, &Editor::canvas_ruler_bar_event), transport_marker_bar, TransportMarkerBarItem, "transport marker bar"));
_playhead_cursor = new EditorCursor (*this, &Editor::canvas_playhead_cursor_event, X_("playhead"));
_playhead_cursor->set_sensitive (UIConfiguration::instance().get_sensitize_playhead());
_snapped_cursor = new EditorCursor (*this, X_("snapped"));

View File

@ -3997,6 +3997,9 @@ CursorDrag::start_grab (GdkEvent* event, Gdk::Cursor* c)
}
}
/* during fake-locate, the mouse position is delievered to the (red) playhead line, so we have to momentarily sensitize it */
_editor->playhead_cursor ()->set_sensitive(true);
fake_locate (where.earlier (snap_delta (event->button.state)).samples());
_last_mx = event->button.x;
@ -4069,6 +4072,8 @@ CursorDrag::finished (GdkEvent* event, bool movement_occurred)
s->request_locate (_editor->playhead_cursor ()->current_sample (), false, _was_rolling ? MustRoll : RollIfAppropriate);
s->request_resume_timecode_transmission ();
}
_editor->playhead_cursor ()->set_sensitive(UIConfiguration::instance().get_sensitize_playhead());
}
void
@ -4082,6 +4087,7 @@ CursorDrag::aborted (bool)
}
_editor->playhead_cursor()->set_position (adjusted_time (grab_time (), 0, false).samples());
_editor->playhead_cursor ()->set_sensitive(UIConfiguration::instance().get_sensitize_playhead());
}
FadeInDrag::FadeInDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list<RegionView*> const & v, Temporal::TimeDomain td)

View File

@ -39,7 +39,7 @@ UI_CONFIG_VARIABLE (bool, editor_stereo_only_meters, "editor-stereo-only-meters"
UI_CONFIG_VARIABLE (bool, show_waveform_clipping, "show-waveform-clipping", true)
UI_CONFIG_VARIABLE (uint32_t, lock_gui_after_seconds, "lock-gui-after-seconds", 0)
UI_CONFIG_VARIABLE (ARDOUR::ScreenSaverMode, screen_saver_mode, "screen-saver-mode", InhibitWhileRecording)
UI_CONFIG_VARIABLE (bool, draggable_playhead, "draggable-playhead", true)
UI_CONFIG_VARIABLE (bool, sensitize_playhead, "sensitize-playhead", false)
UI_CONFIG_VARIABLE (float, draggable_playhead_speed, "draggable-playhead-speed", 0.5)
UI_CONFIG_VARIABLE (float, extra_ui_extents_time, "extra-ui-extents-time", 1.0)
UI_CONFIG_VARIABLE (bool, new_automation_points_on_lane, "new-automation-points-on-lane", false)

View File

@ -637,7 +637,7 @@ GtkCanvas::pick_current_item (Duple const & point, int state)
if (within_items.empty()) {
/* no items at point, just send leave event below */
/* no items at point, do not send a LEAVE event in this case */
_new_current_item = 0;
} else {
@ -649,10 +649,10 @@ GtkCanvas::pick_current_item (Duple const & point, int state)
}
_new_current_item = const_cast<Item*> (within_items.front());
}
if (_new_current_item != _current_item) {
deliver_enter_leave (point, state);
if (_new_current_item != _current_item) {
deliver_enter_leave (point, state);
}
}
if (_current_item) {