set window title of meterbridge window
authorRobin Gareus <robin@gareus.org>
Wed, 26 Jun 2013 13:10:26 +0000 (15:10 +0200)
committerRobin Gareus <robin@gareus.org>
Wed, 10 Jul 2013 13:27:02 +0000 (15:27 +0200)
gtk2_ardour/meterbridge.cc
gtk2_ardour/meterbridge.h

index 533e33d2e32561b57a61a2944bb22a6ef7e07e3e..47f12b331fe5f23053b2613df4c75d2d3c3adff4 100644 (file)
@@ -117,6 +117,8 @@ Meterbridge::Meterbridge ()
 {
        set_name ("Meter Bridge");
 
+       update_title ();
+
        set_wmclass (X_("ardour_mixer"), PROGRAM_NAME);
 
        Gdk::Geometry geom;
@@ -160,6 +162,36 @@ Meterbridge::show_window ()
        _visible = true;
 }
 
+/* code duplicated from gtk2_ardour/mixer_ui.cc  Mixer_UI::update_title() */
+void
+Meterbridge::update_title ()
+{
+       if (_session) {
+               string n;
+
+               if (_session->snap_name() != _session->name()) {
+                       n = _session->snap_name ();
+               } else {
+                       n = _session->name ();
+               }
+
+               if (_session->dirty ()) {
+                       n = "*" + n;
+               }
+
+               WindowTitle title (n);
+               title += S_("Window|Meterbridge");
+               title += Glib::get_application_name ();
+               set_title (title.get_string());
+
+       } else {
+
+               WindowTitle title (S_("Window|Meterbridge"));
+               title += Glib::get_application_name ();
+               set_title (title.get_string());
+       }
+}
+
 void
 Meterbridge::set_window_pos_and_size ()
 {
@@ -215,6 +247,8 @@ Meterbridge::set_session (Session* s)
                set_state (*node);
        }
 
+       update_title ();
+
        SignalOrderRouteSorter sorter;
        boost::shared_ptr<RouteList> routes = _session->get_routes();
 
@@ -223,6 +257,8 @@ Meterbridge::set_session (Session* s)
        add_strips(copy);
 
        _session->RouteAdded.connect (_session_connections, invalidator (*this), boost::bind (&Meterbridge::add_strips, this, _1), gui_context());
+       _session->DirtyChanged.connect (_session_connections, invalidator (*this), boost::bind (&Meterbridge::update_title, this), gui_context());
+       _session->StateSaved.connect (_session_connections, invalidator (*this), boost::bind (&Meterbridge::update_title, this), gui_context());
 
        if (_visible) {
                show_window();
@@ -246,6 +282,7 @@ Meterbridge::session_going_away ()
        SessionHandlePtr::session_going_away ();
 
        _session = 0;
+       update_title ();
 }
 
 int
index 79bbdb0dbf4300be43581400480862dbf20cc7e2..3b50d6f8aedf25993858430806a896e57bd2cf01 100644 (file)
@@ -81,6 +81,8 @@ class Meterbridge :
        static const int32_t default_width = 600;
        static const int32_t default_height = 400;
 
+       void update_title ();
+
        // for restoring window geometry.
        int m_root_x, m_root_y, m_width, m_height;