Added comment explaining new Gtk::Dialog idiom.
[ardour.git] / gtk2_ardour / ardour_ui2.cc
index f375594cc6e316e95ebabe019f5213f00b29686b..5196d13b61ab0fa10dd6c2cdd2877bbad75da72f 100644 (file)
@@ -41,6 +41,7 @@
 #include "ardour_ui.h"
 #include "public_editor.h"
 #include "audio_clock.h"
+#include "actions.h"
 #include "utils.h"
 
 #include "i18n.h"
@@ -66,11 +67,6 @@ ARDOUR_UI::setup_windows ()
                return -1;
        }
 
-       if (create_meter_bridge ()) {
-               error << _("UI: cannot setup meter_bridge") << endmsg;
-               return -1;
-       }
-
        /* all other dialogs are created conditionally */
 
        we_have_dependents ();
@@ -425,16 +421,24 @@ ARDOUR_UI::setup_clock ()
 {
        ARDOUR_UI::Clock.connect (bind (mem_fun (big_clock, &AudioClock::set), false));
        
-       big_clock_window = new ArdourDialog ("big clock window");
+       big_clock_window = new Gtk::Window (WINDOW_TOPLEVEL);
        
        big_clock_window->set_border_width (0);
        big_clock_window->add  (big_clock);
        big_clock_window->set_title (_("ardour: clock"));
        big_clock_window->set_type_hint (Gdk::WINDOW_TYPE_HINT_MENU);
+       big_clock_window->signal_realize().connect (bind (sigc::ptr_fun (set_decoration), big_clock_window,  (Gdk::DECOR_BORDER|Gdk::DECOR_RESIZEH)));
+       big_clock_window->signal_unmap().connect (mem_fun(*this, &ARDOUR_UI::big_clock_hiding));
 
-       big_clock_window->signal_delete_event().connect (bind (sigc::ptr_fun (just_hide_it), static_cast<Gtk::Window*>(big_clock_window)));
+       manage_window (*big_clock_window);
+}
 
-       big_clock_window->Hiding.connect (mem_fun(*this, &ARDOUR_UI::big_clock_hiding));
+void
+ARDOUR_UI::manage_window (Window& win)
+{
+       win.signal_delete_event().connect (bind (sigc::ptr_fun (just_hide_it), &win));
+       win.signal_enter_notify_event().connect (bind (mem_fun (Keyboard::the_keyboard(), &Keyboard::enter_window), &win));
+       win.signal_leave_notify_event().connect (bind (mem_fun (Keyboard::the_keyboard(), &Keyboard::leave_window), &win));
 }
 
 void
@@ -689,12 +693,18 @@ ARDOUR_UI::shuttle_box_expose (GdkEventExpose* event)
 void
 ARDOUR_UI::shuttle_style_clicked ()
 {
+       if (shuttle_style_menu == 0) {
+               shuttle_style_menu = dynamic_cast<Menu*> (ActionManager::get_widget ("ShuttleStylePopup"));
+       }
        shuttle_style_menu->popup (1, 0);
 }
 
 void
 ARDOUR_UI::shuttle_unit_clicked ()
 {
+       if (shuttle_unit_menu == 0) {
+               shuttle_unit_menu = dynamic_cast<Menu*> (ActionManager::get_widget ("ShuttleUnitPopup"));
+       }
        shuttle_unit_menu->popup (1, 0);
 }