From e642704c3a41e9ce948a0b78a6173b79abef382b Mon Sep 17 00:00:00 2001 From: Colin Fletcher Date: Mon, 1 Jul 2013 18:56:10 +0100 Subject: Make CD track details visible whenever CD range is ticked. Make the CD track details visible whenever the CD range box has been ticked, rather than only when the user toggles the box on. --- gtk2_ardour/location_ui.cc | 54 ++++++++++++++++++++++++++++------------------ gtk2_ardour/location_ui.h | 1 + 2 files changed, 34 insertions(+), 21 deletions(-) diff --git a/gtk2_ardour/location_ui.cc b/gtk2_ardour/location_ui.cc index 9b9f3bfa22..d30327ad78 100644 --- a/gtk2_ardour/location_ui.cc +++ b/gtk2_ardour/location_ui.cc @@ -307,6 +307,10 @@ LocationEditRow::set_location (Location *loc) end_clock.show(); length_clock.show(); + if (location->is_cd_marker()) { + show_cd_track_details (); + } + ARDOUR_UI::instance()->set_tip (remove_button, _("Remove this range")); ARDOUR_UI::instance()->set_tip (start_clock, _("Start time - middle click to locate here")); ARDOUR_UI::instance()->set_tip (end_clock, _("End time - middle click to locate here")); @@ -446,6 +450,34 @@ LocationEditRow::clock_changed (LocationPart part) } } +void +LocationEditRow::show_cd_track_details () +{ + + if (location->cd_info.find("isrc") != location->cd_info.end()) { + isrc_entry.set_text(location->cd_info["isrc"]); + } + if (location->cd_info.find("performer") != location->cd_info.end()) { + performer_entry.set_text(location->cd_info["performer"]); + } + if (location->cd_info.find("composer") != location->cd_info.end()) { + composer_entry.set_text(location->cd_info["composer"]); + } + if (location->cd_info.find("scms") != location->cd_info.end()) { + scms_check_button.set_active(true); + } + if (location->cd_info.find("preemph") != location->cd_info.end()) { + preemph_check_button.set_active(true); + } + + + if (!cd_track_details_hbox.get_parent()) { + item_table.attach (cd_track_details_hbox, 0, 7, 1, 2, FILL | EXPAND, FILL, 4, 0); + } + // item_table.resize(2, 7); + cd_track_details_hbox.show_all(); +} + void LocationEditRow::cd_toggled () { @@ -469,27 +501,7 @@ LocationEditRow::cd_toggled () if (location->is_cd_marker() && !(location->is_mark())) { - if (location->cd_info.find("isrc") != location->cd_info.end()) { - isrc_entry.set_text(location->cd_info["isrc"]); - } - if (location->cd_info.find("performer") != location->cd_info.end()) { - performer_entry.set_text(location->cd_info["performer"]); - } - if (location->cd_info.find("composer") != location->cd_info.end()) { - composer_entry.set_text(location->cd_info["composer"]); - } - if (location->cd_info.find("scms") != location->cd_info.end()) { - scms_check_button.set_active(true); - } - if (location->cd_info.find("preemph") != location->cd_info.end()) { - preemph_check_button.set_active(true); - } - - if (!cd_track_details_hbox.get_parent()) { - item_table.attach (cd_track_details_hbox, 0, 7, 1, 2, FILL | EXPAND, FILL, 4, 0); - } - // item_table.resize(2, 7); - cd_track_details_hbox.show_all(); + show_cd_track_details (); } else if (cd_track_details_hbox.get_parent()){ diff --git a/gtk2_ardour/location_ui.h b/gtk2_ardour/location_ui.h index b01b63e8e4..395464e049 100644 --- a/gtk2_ardour/location_ui.h +++ b/gtk2_ardour/location_ui.h @@ -140,6 +140,7 @@ class LocationEditRow : public Gtk::HBox, public ARDOUR::SessionHandlePtr void position_lock_style_changed (ARDOUR::Location *); void set_clock_editable_status (); + void show_cd_track_details (); PBD::ScopedConnectionList connections; }; -- cgit v1.2.3 From da1e8701eb90f7e11c74e0104a5f97bf227aa2bd Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 3 Jul 2013 03:11:23 +0200 Subject: fix alignment of meters on midi-tracks --- gtk2_ardour/midi_time_axis.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gtk2_ardour/midi_time_axis.cc b/gtk2_ardour/midi_time_axis.cc index 6cdf63f033..a4ffc442a3 100644 --- a/gtk2_ardour/midi_time_axis.cc +++ b/gtk2_ardour/midi_time_axis.cc @@ -201,7 +201,7 @@ MidiTimeAxisView::set_route (boost::shared_ptr rt) v->pack_start (*manage (new Label ("")), true, true); v->show (); h->show (); - controls_hbox.pack_start(*v); + controls_hbox.pack_start(*v, false, false); controls_ebox.set_name ("MidiTrackControlsBaseUnselected"); controls_base_selected_name = "MidiTrackControlsBaseSelected"; -- cgit v1.2.3 From 4fea31fd78d44c3ef15fa76d6c7cbb12ad04f4a1 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 3 Jul 2013 13:16:43 +0200 Subject: adjust mixer meter metric scale --- gtk2_ardour/gain_meter.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc index 242396c93c..689f3d2408 100644 --- a/gtk2_ardour/gain_meter.cc +++ b/gtk2_ardour/gain_meter.cc @@ -969,7 +969,7 @@ GainMeter::render_metrics (Gtk::Widget& w, vector types) //font = w.get_style()->get_font(); font.set_weight (Pango::WEIGHT_NORMAL); - font.set_size (10.0 * PANGO_SCALE); + font.set_size (9.0 * PANGO_SCALE); font_attr = new Pango::AttrFontDesc (Pango::Attribute::create_attr_font_desc (font)); audio_font_attributes.change (*font_attr); delete font_attr; @@ -1057,10 +1057,11 @@ GainMeter::render_metrics (Gtk::Widget& w, vector types) } gint const pos = height - (gint) floor (height * fraction); + float const linepos = min((float) height, (float)(pos + .5f)); cairo_set_line_width (cr, 1.0); - cairo_move_to (cr, 0, pos); - cairo_line_to (cr, 3.5, pos); + cairo_move_to (cr, 0, linepos); + cairo_line_to (cr, 3.5, linepos); cairo_stroke (cr); snprintf (buf, sizeof (buf), "%2d", abs (*j)); -- cgit v1.2.3 From b28706852d9f6771ff37e794267c3e038055de08 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Thu, 4 Jul 2013 21:32:41 +0200 Subject: fix race/endless loop on exit: if gtk is going away while ardour updates the splash-screen: Gtk-CRITICAL **: IA__gtk_main_quit: assertion `main_loops != NULL' failed --- gtk2_ardour/splash.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gtk2_ardour/splash.cc b/gtk2_ardour/splash.cc index 99adff68e9..b606ec6050 100644 --- a/gtk2_ardour/splash.cc +++ b/gtk2_ardour/splash.cc @@ -236,7 +236,7 @@ Splash::message (const string& msg) } while (!expose_done) { - gtk_main_iteration (); + if(gtk_main_iteration ()) return; // quit was called } gdk_display_flush (gdk_display_get_default()); } -- cgit v1.2.3 From 398839f6e1471eb784a8267dfb5cf805b1fb33a4 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Fri, 5 Jul 2013 10:44:09 +0200 Subject: reset meters when changing metering-point or ports --- libs/ardour/meter.cc | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/libs/ardour/meter.cc b/libs/ardour/meter.cc index 38c5bb63de..4d096aae89 100644 --- a/libs/ardour/meter.cc +++ b/libs/ardour/meter.cc @@ -137,6 +137,18 @@ PeakMeter::reflect_inputs (const ChanCount& in) { current_meters = in; + const size_t limit = min (_peak_power.size(), (size_t) current_meters.n_total ()); + const size_t n_midi = min (_peak_power.size(), (size_t) current_meters.n_midi()); + + for (size_t n = 0; n < limit; ++n) { + if (n < n_midi) { + _visible_peak_power[n] = 0; + } else { + _visible_peak_power[n] = -INFINITY; + } + } + reset_max(); + ConfigurationChanged (in, in); /* EMIT SIGNAL */ } -- cgit v1.2.3 From 29108187edabb37eed4eec52cbcbcbb736ebb497 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sun, 7 Jul 2013 03:05:29 +0200 Subject: fix metering when monitoring track input. (ran twice) --- libs/ardour/track.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc index dd21819e47..6d153e1cbf 100644 --- a/libs/ardour/track.cc +++ b/libs/ardour/track.cc @@ -945,6 +945,6 @@ Track::set_monitoring (MonitorChoice mc) MeterState Track::metering_state () const { - return _diskstream->record_enabled() ? MeteringInput : MeteringRoute; + return (_diskstream->record_enabled() || _meter_point == MeterInput) ? MeteringInput : MeteringRoute; } -- cgit v1.2.3 From 539e58bf5dc4ef3a815e6ef3d277c2ddd00284e5 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sun, 7 Jul 2013 04:14:41 +0200 Subject: possible fix for crash on exit - err on the side of caution --- gtk2_ardour/ardour_ui.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index c664f870ce..7f72725af8 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -153,6 +153,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir) /* big clock */ , big_clock (new AudioClock (X_("bigclock"), false, "big", true, true, false, false)) + , video_timeline(0) /* start of private members */ @@ -900,6 +901,7 @@ If you still wish to quit, please use the\n\n\ } delete ARDOUR_UI::instance()->video_timeline; + ARDOUR_UI::instance()->video_timeline = NULL; stop_video_server(); /* Save state before deleting the session, as that causes some -- cgit v1.2.3 From 3c6ff2f02f66eca9796cdc4ced5e39d91b4e22b7 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sun, 7 Jul 2013 04:18:23 +0200 Subject: fix/workaround window-proxy session-management The window proxy defers construction of classes. set_session() is called before the instances are available. the proxy-manager only calls set_session() for SessionHandlePtr but not the class-specific method.. fixes http://tracker.ardour.org/view.php?id=5566 --- gtk2_ardour/ardour_ui.cc | 14 +++++++++++++- gtk2_ardour/ardour_ui.h | 3 ++- gtk2_ardour/ardour_ui_dialogs.cc | 14 ++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 7f72725af8..3432a3ccbf 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -188,13 +188,13 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir) , add_route_dialog (X_("add-routes"), _("Add Tracks/Busses")) , about (X_("about"), _("About")) , location_ui (X_("locations"), _("Locations")) - , route_params (X_("inspector"), _("Tracks and Busses")) , session_option_editor (X_("session-options-editor"), _("Properties"), boost::bind (&ARDOUR_UI::create_session_option_editor, this)) , add_video_dialog (X_("add-video"), _("Add Tracks/Busses"), boost::bind (&ARDOUR_UI::create_add_video_dialog, this)) , bundle_manager (X_("bundle-manager"), _("Bundle Manager"), boost::bind (&ARDOUR_UI::create_bundle_manager, this)) , big_clock_window (X_("big-clock"), _("Big Clock"), boost::bind (&ARDOUR_UI::create_big_clock_window, this)) , audio_port_matrix (X_("audio-connection-manager"), _("Audio Connections"), boost::bind (&ARDOUR_UI::create_global_port_matrix, this, ARDOUR::DataType::AUDIO)) , midi_port_matrix (X_("midi-connection-manager"), _("MIDI Connections"), boost::bind (&ARDOUR_UI::create_global_port_matrix, this, ARDOUR::DataType::MIDI)) + , route_params (X_("inspector"), _("Tracks and Busses"), boost::bind (&ARDOUR_UI::create_route_params_window, this)) , error_log_button (_("Errors")) @@ -363,6 +363,18 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir) and its functionality are separate */ + if (audio_port_matrix) { + audio_port_matrix->set_session (_session); + } + + if (midi_port_matrix) { + midi_port_matrix->set_session (_session); + } + + if (route_params) { + route_params->set_session (_session); + } + (void) theme_manager.get (true); starting.connect (sigc::mem_fun(*this, &ARDOUR_UI::startup)); diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 0ed5d145b4..e7bc5a2782 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -579,7 +579,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr WM::Proxy add_route_dialog; WM::Proxy about; WM::Proxy location_ui; - WM::Proxy route_params; /* Windows/Dialogs that require a creator method */ @@ -589,6 +588,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr WM::ProxyWithConstructor big_clock_window; WM::ProxyWithConstructor audio_port_matrix; WM::ProxyWithConstructor midi_port_matrix; + WM::ProxyWithConstructor route_params; /* creator methods */ @@ -597,6 +597,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr AddVideoDialog* create_add_video_dialog (); BigClockWindow* create_big_clock_window(); GlobalPortMatrixWindow* create_global_port_matrix (ARDOUR::DataType); + RouteParams_UI* create_route_params_window (); static UIConfiguration *ui_config; diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc index 02b1efaa2e..a8ff6305a2 100644 --- a/gtk2_ardour/ardour_ui_dialogs.cc +++ b/gtk2_ardour/ardour_ui_dialogs.cc @@ -73,6 +73,9 @@ ARDOUR_UI::set_session (Session *s) midi_port_matrix->set_session (s); } + if (route_params) { + route_params->set_session (s); + } if (!_session) { /* Session option editor cannot exist across change-of-session */ @@ -222,6 +225,9 @@ ARDOUR_UI::unload_session (bool hide_stuff) editor->hide (); mixer->hide (); theme_manager->hide (); + audio_port_matrix->hide(); + midi_port_matrix->hide(); + route_params->hide(); } second_connection.disconnect (); @@ -447,6 +453,14 @@ ARDOUR_UI::create_big_clock_window () return new BigClockWindow (*big_clock); } +RouteParams_UI* +ARDOUR_UI::create_route_params_window () +{ + RouteParams_UI *rv = new RouteParams_UI (); + rv->set_session(_session); + return rv; +} + void ARDOUR_UI::handle_locations_change (Location *) { -- cgit v1.2.3 From cb6f16ac2df2db18e4a87aa2617625a3195d45c9 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sun, 7 Jul 2013 19:29:42 +0200 Subject: fix save/restore [plugin] window pos&size (without save) --- gtk2_ardour/window_manager.cc | 27 +++++++++++++++++++++++++++ gtk2_ardour/window_manager.h | 2 ++ 2 files changed, 29 insertions(+) diff --git a/gtk2_ardour/window_manager.cc b/gtk2_ardour/window_manager.cc index b76958d4d4..730668d7e4 100644 --- a/gtk2_ardour/window_manager.cc +++ b/gtk2_ardour/window_manager.cc @@ -263,8 +263,27 @@ ProxyBase::toggle() _window->show_all(); /* we'd like to just call this and nothing else */ _window->present (); + + if (_width != -1 && _height != -1) { + _window->set_default_size (_width, _height); + } + if (_x_off != -1 && _y_off != -1) { + _window->move (_x_off, _y_off); + } + } else { + if (_window->is_mapped()) { + save_pos_and_size(); + } vistracker->cycle_visibility (); + if (_window->is_mapped()) { + if (_width != -1 && _height != -1) { + _window->set_default_size (_width, _height); + } + if (_x_off != -1 && _y_off != -1) { + _window->move (_x_off, _y_off); + } + } } } @@ -325,6 +344,7 @@ ProxyBase::setup () assert (_window); vistracker = new Gtkmm2ext::VisibilityTracker (*_window); + _window->signal_delete_event().connect (sigc::mem_fun (*this, &ProxyBase::handle_win_event)); if (_width != -1 || _height != -1 || _x_off != -1 || _y_off != -1) { /* cancel any mouse-based positioning */ @@ -379,10 +399,17 @@ ProxyBase::hide () { Gtk::Window* win = get (false); if (win) { + save_pos_and_size(); win->hide (); } } +void +ProxyBase::save_pos_and_size () +{ + _window->get_position (_x_off, _y_off); + _window->get_size (_width, _height); +} /*-----------------------*/ ProxyTemporary::ProxyTemporary (const string& name, Gtk::Window* win) diff --git a/gtk2_ardour/window_manager.h b/gtk2_ardour/window_manager.h index 7138a95e7b..404bfd69d3 100644 --- a/gtk2_ardour/window_manager.h +++ b/gtk2_ardour/window_manager.h @@ -120,6 +120,8 @@ class ProxyBase : public sigc::trackable { mutable int _width; ///< width mutable int _height; ///< height Gtkmm2ext::VisibilityTracker* vistracker; + + void save_pos_and_size (); void setup (); }; -- cgit v1.2.3 From a22e20133d0b5c1678fb41416f74283a93ab208f Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sun, 7 Jul 2013 17:44:00 +0200 Subject: make window-manager session-aware --- gtk2_ardour/window_manager.cc | 19 +++++++++++++++---- gtk2_ardour/window_manager.h | 27 +++++++++++++++++++++++---- 2 files changed, 38 insertions(+), 8 deletions(-) diff --git a/gtk2_ardour/window_manager.cc b/gtk2_ardour/window_manager.cc index 730668d7e4..d15028ac13 100644 --- a/gtk2_ardour/window_manager.cc +++ b/gtk2_ardour/window_manager.cc @@ -52,6 +52,10 @@ Manager::Manager () { } +Manager::~Manager () +{ +} + void Manager::register_window (ProxyBase* info) { @@ -120,11 +124,9 @@ Manager::add_state (XMLNode& root) const void Manager::set_session (ARDOUR::Session* s) { + SessionHandlePtr::set_session (s); for (Windows::const_iterator i = _windows.begin(); i != _windows.end(); ++i) { - ARDOUR::SessionHandlePtr* sp = (*i)->session_handle (); - if (sp) { - sp->set_session (s); - } + (*i)->set_session(s); } } @@ -358,6 +360,7 @@ ProxyBase::setup () if (_x_off != -1 && _y_off != -1) { _window->move (_x_off, _y_off); } + set_session(_session); } void @@ -404,6 +407,13 @@ ProxyBase::hide () } } +bool +ProxyBase::handle_win_event (GdkEventAny *ev) +{ + save_pos_and_size(); + return 0; +} + void ProxyBase::save_pos_and_size () { @@ -422,6 +432,7 @@ ProxyTemporary::~ProxyTemporary () { } + ARDOUR::SessionHandlePtr* ProxyTemporary::session_handle() { diff --git a/gtk2_ardour/window_manager.h b/gtk2_ardour/window_manager.h index 404bfd69d3..3a80840891 100644 --- a/gtk2_ardour/window_manager.h +++ b/gtk2_ardour/window_manager.h @@ -47,7 +47,7 @@ namespace WM { class ProxyBase; -class Manager +class Manager : public ARDOUR::SessionHandlePtr { public: static Manager& instance(); @@ -75,7 +75,7 @@ class Manager static Manager* _instance; }; -class ProxyBase : public sigc::trackable { +class ProxyBase : public ARDOUR::SessionHandlePtr, public sigc::trackable { public: ProxyBase (const std::string& name, const std::string& menu_name); ProxyBase (const std::string& name, const std::string& menu_name, const XMLNode&); @@ -106,7 +106,7 @@ class ProxyBase : public sigc::trackable { XMLNode& get_state () const; virtual ARDOUR::SessionHandlePtr* session_handle () = 0; - + operator bool() const { return _window != 0; } protected: @@ -122,6 +122,7 @@ class ProxyBase : public sigc::trackable { Gtkmm2ext::VisibilityTracker* vistracker; void save_pos_and_size (); + bool handle_win_event (GdkEventAny *ev); void setup (); }; @@ -139,7 +140,7 @@ class ProxyTemporary: public ProxyBase { Gtk::Window* operator->() { return _window; } - + ARDOUR::SessionHandlePtr* session_handle (); }; @@ -177,6 +178,15 @@ class ProxyWithConstructor: public ProxyBase { return dynamic_cast (_window); } + void set_session(ARDOUR::Session *s) { + SessionHandlePtr::set_session (s); + ARDOUR::SessionHandlePtr* sp = session_handle (); + if (sp) { + sp->set_session (s); + dynamic_cast(_window)->set_session(s); + } + } + private: boost::function creator; }; @@ -215,6 +225,15 @@ class Proxy : public ProxyBase { return dynamic_cast (_window); } + void set_session(ARDOUR::Session *s) { + SessionHandlePtr::set_session (s); + ARDOUR::SessionHandlePtr* sp = session_handle (); + if (sp) { + sp->set_session (s); + dynamic_cast(_window)->set_session(s); + } + } + private: boost::function creator; }; -- cgit v1.2.3 From 2b0fef5933e51a29d5b6bc0ef89146de35c88e81 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sun, 7 Jul 2013 17:42:49 +0200 Subject: revert 3c6ff2f0 now that WM-proxy is session-aware.. also includes a few additional tweaks on top of the revert: don't set sessions to windows managed by the WM::Manager, and also call WM::Manager's set_session (s); when closing session. --- gtk2_ardour/ardour_ui.cc | 14 +------------- gtk2_ardour/ardour_ui.h | 3 +-- gtk2_ardour/ardour_ui_dialogs.cc | 22 +--------------------- 3 files changed, 3 insertions(+), 36 deletions(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 3432a3ccbf..7f72725af8 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -188,13 +188,13 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir) , add_route_dialog (X_("add-routes"), _("Add Tracks/Busses")) , about (X_("about"), _("About")) , location_ui (X_("locations"), _("Locations")) + , route_params (X_("inspector"), _("Tracks and Busses")) , session_option_editor (X_("session-options-editor"), _("Properties"), boost::bind (&ARDOUR_UI::create_session_option_editor, this)) , add_video_dialog (X_("add-video"), _("Add Tracks/Busses"), boost::bind (&ARDOUR_UI::create_add_video_dialog, this)) , bundle_manager (X_("bundle-manager"), _("Bundle Manager"), boost::bind (&ARDOUR_UI::create_bundle_manager, this)) , big_clock_window (X_("big-clock"), _("Big Clock"), boost::bind (&ARDOUR_UI::create_big_clock_window, this)) , audio_port_matrix (X_("audio-connection-manager"), _("Audio Connections"), boost::bind (&ARDOUR_UI::create_global_port_matrix, this, ARDOUR::DataType::AUDIO)) , midi_port_matrix (X_("midi-connection-manager"), _("MIDI Connections"), boost::bind (&ARDOUR_UI::create_global_port_matrix, this, ARDOUR::DataType::MIDI)) - , route_params (X_("inspector"), _("Tracks and Busses"), boost::bind (&ARDOUR_UI::create_route_params_window, this)) , error_log_button (_("Errors")) @@ -363,18 +363,6 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir) and its functionality are separate */ - if (audio_port_matrix) { - audio_port_matrix->set_session (_session); - } - - if (midi_port_matrix) { - midi_port_matrix->set_session (_session); - } - - if (route_params) { - route_params->set_session (_session); - } - (void) theme_manager.get (true); starting.connect (sigc::mem_fun(*this, &ARDOUR_UI::startup)); diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index e7bc5a2782..0ed5d145b4 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -579,6 +579,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr WM::Proxy add_route_dialog; WM::Proxy about; WM::Proxy location_ui; + WM::Proxy route_params; /* Windows/Dialogs that require a creator method */ @@ -588,7 +589,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr WM::ProxyWithConstructor big_clock_window; WM::ProxyWithConstructor audio_port_matrix; WM::ProxyWithConstructor midi_port_matrix; - WM::ProxyWithConstructor route_params; /* creator methods */ @@ -597,7 +597,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr AddVideoDialog* create_add_video_dialog (); BigClockWindow* create_big_clock_window(); GlobalPortMatrixWindow* create_global_port_matrix (ARDOUR::DataType); - RouteParams_UI* create_route_params_window (); static UIConfiguration *ui_config; diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc index a8ff6305a2..e8d94bbe04 100644 --- a/gtk2_ardour/ardour_ui_dialogs.cc +++ b/gtk2_ardour/ardour_ui_dialogs.cc @@ -65,17 +65,7 @@ ARDOUR_UI::set_session (Session *s) { SessionHandlePtr::set_session (s); - if (audio_port_matrix) { - audio_port_matrix->set_session (s); - } - - if (midi_port_matrix) { - midi_port_matrix->set_session (s); - } - - if (route_params) { - route_params->set_session (s); - } + WM::Manager::instance().set_session (s); if (!_session) { /* Session option editor cannot exist across change-of-session */ @@ -98,7 +88,6 @@ ARDOUR_UI::set_session (Session *s) } AutomationWatch::instance().set_session (s); - WM::Manager::instance().set_session (s); if (shuttle_box) { shuttle_box->set_session (s); @@ -109,7 +98,6 @@ ARDOUR_UI::set_session (Session *s) big_clock->set_session (s); time_info_box->set_session (s); video_timeline->set_session (s); - location_ui->set_session (s); /* sensitize menu bar options that are now valid */ @@ -453,14 +441,6 @@ ARDOUR_UI::create_big_clock_window () return new BigClockWindow (*big_clock); } -RouteParams_UI* -ARDOUR_UI::create_route_params_window () -{ - RouteParams_UI *rv = new RouteParams_UI (); - rv->set_session(_session); - return rv; -} - void ARDOUR_UI::handle_locations_change (Location *) { -- cgit v1.2.3 From 07be5beee7941a193fd55b584e72dbd9c8bea6fb Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sun, 7 Jul 2013 22:24:15 +0200 Subject: window delete/hide is managed by WMProxy (amend to cb6f16ac) --- gtk2_ardour/ardour_window.cc | 1 - gtk2_ardour/io_selector.cc | 3 +-- gtk2_ardour/location_ui.cc | 3 +-- gtk2_ardour/plugin_ui.cc | 1 - gtk2_ardour/port_insert_ui.cc | 2 +- gtk2_ardour/region_editor.cc | 1 - gtk2_ardour/return_ui.cc | 1 - gtk2_ardour/route_params_ui.cc | 5 ----- gtk2_ardour/send_ui.cc | 4 ---- gtk2_ardour/step_editor.cc | 2 +- gtk2_ardour/window_manager.cc | 15 +++++++++------ 11 files changed, 13 insertions(+), 25 deletions(-) diff --git a/gtk2_ardour/ardour_window.cc b/gtk2_ardour/ardour_window.cc index 3d33b14e60..ab9d72dd53 100644 --- a/gtk2_ardour/ardour_window.cc +++ b/gtk2_ardour/ardour_window.cc @@ -84,7 +84,6 @@ ArdourWindow::on_unmap () bool ArdourWindow::on_delete_event (GdkEventAny*) { - hide (); return false; } diff --git a/gtk2_ardour/io_selector.cc b/gtk2_ardour/io_selector.cc index 544963f666..31f8cfa1cb 100644 --- a/gtk2_ardour/io_selector.cc +++ b/gtk2_ardour/io_selector.cc @@ -235,8 +235,7 @@ bool IOSelectorWindow::wm_delete (GdkEventAny* /*event*/) { _selector.Finished (IOSelector::Accepted); - hide (); - return true; + return false; } diff --git a/gtk2_ardour/location_ui.cc b/gtk2_ardour/location_ui.cc index d30327ad78..92f11da019 100644 --- a/gtk2_ardour/location_ui.cc +++ b/gtk2_ardour/location_ui.cc @@ -1165,8 +1165,7 @@ LocationUIWindow::on_map () bool LocationUIWindow::on_delete_event (GdkEventAny*) { - hide (); - return true; + return false; } void diff --git a/gtk2_ardour/plugin_ui.cc b/gtk2_ardour/plugin_ui.cc index 9a85b78454..d9741f5e39 100644 --- a/gtk2_ardour/plugin_ui.cc +++ b/gtk2_ardour/plugin_ui.cc @@ -148,7 +148,6 @@ PluginUIWindow::PluginUIWindow ( set_name ("PluginEditor"); add_events (Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK); - signal_delete_event().connect (sigc::bind (sigc::ptr_fun (just_hide_it), reinterpret_cast (this)), false); insert->DropReferences.connect (death_connection, invalidator (*this), boost::bind (&PluginUIWindow::plugin_going_away, this), gui_context()); gint h = _pluginui->get_preferred_height (); diff --git a/gtk2_ardour/port_insert_ui.cc b/gtk2_ardour/port_insert_ui.cc index 16beb75877..0511b357db 100644 --- a/gtk2_ardour/port_insert_ui.cc +++ b/gtk2_ardour/port_insert_ui.cc @@ -184,7 +184,7 @@ bool PortInsertWindow::wm_delete (GdkEventAny* /*event*/) { accept (); - return true; + return false; } void diff --git a/gtk2_ardour/region_editor.cc b/gtk2_ardour/region_editor.cc index 51e4deddc8..564938ad5c 100644 --- a/gtk2_ardour/region_editor.cc +++ b/gtk2_ardour/region_editor.cc @@ -161,7 +161,6 @@ RegionEditor::RegionEditor (Session* s, boost::shared_ptr r) set_name ("RegionEditorWindow"); add_events (Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK); - signal_delete_event().connect (sigc::bind (sigc::ptr_fun (just_hide_it), static_cast (this))); signal_response().connect (sigc::mem_fun (*this, &RegionEditor::handle_response)); set_title (string_compose (_("Region '%1'"), _region->name())); diff --git a/gtk2_ardour/return_ui.cc b/gtk2_ardour/return_ui.cc index 8120534b7d..592fff0a0e 100644 --- a/gtk2_ardour/return_ui.cc +++ b/gtk2_ardour/return_ui.cc @@ -111,7 +111,6 @@ ReturnUIWindow::ReturnUIWindow (boost::shared_ptr r, ARDOUR::Session* s) set_name ("ReturnUIWindow"); r->DropReferences.connect (going_away_connection, invalidator (*this), boost::bind (&ReturnUIWindow::return_going_away, this), gui_context()); - signal_delete_event().connect (sigc::bind (sigc::ptr_fun (just_hide_it), reinterpret_cast (this))); } ReturnUIWindow::~ReturnUIWindow () diff --git a/gtk2_ardour/route_params_ui.cc b/gtk2_ardour/route_params_ui.cc index 56ed380404..e9ddb54d41 100644 --- a/gtk2_ardour/route_params_ui.cc +++ b/gtk2_ardour/route_params_ui.cc @@ -146,11 +146,6 @@ RouteParams_UI::RouteParams_UI () add_events (Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::BUTTON_RELEASE_MASK); _plugin_selector = new PluginSelector (PluginManager::instance()); - _plugin_selector->signal_delete_event().connect (sigc::bind (ptr_fun (just_hide_it), - static_cast (_plugin_selector))); - - - signal_delete_event().connect(sigc::bind(ptr_fun(just_hide_it), static_cast(this))); } RouteParams_UI::~RouteParams_UI () diff --git a/gtk2_ardour/send_ui.cc b/gtk2_ardour/send_ui.cc index e9699f2cfe..4a16c57259 100644 --- a/gtk2_ardour/send_ui.cc +++ b/gtk2_ardour/send_ui.cc @@ -133,10 +133,6 @@ SendUIWindow::SendUIWindow (boost::shared_ptr s, Session* session) hpacker.show (); s->DropReferences.connect (going_away_connection, invalidator (*this), boost::bind (&SendUIWindow::send_going_away, this), gui_context()); - - signal_delete_event().connect (sigc::bind ( - sigc::ptr_fun (just_hide_it), - reinterpret_cast (this))); } SendUIWindow::~SendUIWindow () diff --git a/gtk2_ardour/step_editor.cc b/gtk2_ardour/step_editor.cc index a75f0f98e4..11ac6c3187 100644 --- a/gtk2_ardour/step_editor.cc +++ b/gtk2_ardour/step_editor.cc @@ -149,7 +149,7 @@ bool StepEditor::step_editor_hidden (GdkEventAny*) { step_editor_hide (); - return true; + return true; // XXX remember position ?! } void diff --git a/gtk2_ardour/window_manager.cc b/gtk2_ardour/window_manager.cc index d15028ac13..629e24419b 100644 --- a/gtk2_ardour/window_manager.cc +++ b/gtk2_ardour/window_manager.cc @@ -302,8 +302,10 @@ ProxyBase::get_state () const /* we have a window, so use current state */ _visible = vistracker->partially_visible (); - _window->get_position (_x_off, _y_off); - _window->get_size (_width, _height); + if (_visible) { + _window->get_position (_x_off, _y_off); + _window->get_size (_width, _height); + } } node->add_property (X_("visible"), _visible? X_("yes") : X_("no")); @@ -410,15 +412,16 @@ ProxyBase::hide () bool ProxyBase::handle_win_event (GdkEventAny *ev) { - save_pos_and_size(); - return 0; + hide(); + return true; } void ProxyBase::save_pos_and_size () { - _window->get_position (_x_off, _y_off); - _window->get_size (_width, _height); + Gtk::Window* win = get (false); + win->get_position (_x_off, _y_off); + win->get_size (_width, _height); } /*-----------------------*/ -- cgit v1.2.3