From e8fc8aa992f7fad798935de227e2a15d0a075c71 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 30 Jun 2014 16:32:38 -0400 Subject: [PATCH] new UI config var to allow playhead to be optionally draggable (default is: yes, it can be dragged) --- gtk2_ardour/editor.cc | 12 +++++++++++- gtk2_ardour/editor_cursors.cc | 6 ++++++ gtk2_ardour/editor_cursors.h | 1 + gtk2_ardour/rc_option_editor.cc | 8 ++++++++ gtk2_ardour/ui_config_vars.h | 1 + 5 files changed, 27 insertions(+), 1 deletion(-) diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 042d03fa57..a837a5a429 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -121,6 +121,7 @@ #include "tempo_lines.h" #include "time_axis_view.h" #include "utils.h" +#include "verbose_cursor.h" #include "i18n.h" @@ -760,9 +761,14 @@ Editor::Editor () } constructed = true; - instant_save (); + + /* grab current parameter state */ + boost::function pc (boost::bind (&Editor::ui_parameter_changed, this, _1)); + ARDOUR_UI::config()->map_parameters (pc); setup_fade_images (); + + instant_save (); } Editor::~Editor() @@ -5506,5 +5512,9 @@ Editor::ui_parameter_changed (string parameter) _cursor_stack.pop(); } _cursors->set_cursor_set (ARDOUR_UI::config()->get_icon_set()); + } else if (parameter == "draggable-playhead") { + if (_verbose_cursor) { + playhead_cursor->set_sensitive (ARDOUR_UI::config()->get_draggable_playhead()); + } } } diff --git a/gtk2_ardour/editor_cursors.cc b/gtk2_ardour/editor_cursors.cc index 12dab1e83d..ffe6fc0d01 100644 --- a/gtk2_ardour/editor_cursors.cc +++ b/gtk2_ardour/editor_cursors.cc @@ -88,3 +88,9 @@ EditorCursor::set_color (ArdourCanvas::Color color) { _track_canvas_item->set_color (color); } + +void +EditorCursor::set_sensitive (bool yn) +{ + _track_canvas_item->set_ignore_events (!yn); +} diff --git a/gtk2_ardour/editor_cursors.h b/gtk2_ardour/editor_cursors.h index 7915e37205..50958d1ac0 100644 --- a/gtk2_ardour/editor_cursors.h +++ b/gtk2_ardour/editor_cursors.h @@ -37,6 +37,7 @@ class EditorCursor { void show (); void hide (); void set_color (ArdourCanvas::Color); + void set_sensitive (bool); framepos_t current_frame () const { return _current_frame; diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc index 8643bf136a..c843276683 100644 --- a/gtk2_ardour/rc_option_editor.cc +++ b/gtk2_ardour/rc_option_editor.cc @@ -2140,6 +2140,14 @@ RCOptionEditor::RCOptionEditor () /* INTERFACE */ + add_option (S_("Preferences|GUI"), + new BoolOption ( + "draggable-playhead", + _("Allow dragging of playhead"), + sigc::mem_fun (*ARDOUR_UI::config(), &UIConfiguration::get_draggable_playhead), + sigc::mem_fun (*ARDOUR_UI::config(), &UIConfiguration::set_draggable_playhead) + )); + add_option (S_("Preferences|GUI"), new BoolOption ( "widget-prelight", diff --git a/gtk2_ardour/ui_config_vars.h b/gtk2_ardour/ui_config_vars.h index e2141128cf..44c2837abe 100644 --- a/gtk2_ardour/ui_config_vars.h +++ b/gtk2_ardour/ui_config_vars.h @@ -26,4 +26,5 @@ UI_CONFIG_VARIABLE(bool, all_floating_windows_are_dialogs, "all-floating-windows UI_CONFIG_VARIABLE (bool, color_regions_using_track_color, "color-regions-using-track-color", false) 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 (bool, draggable_playhead, "draggable-playhead", true)