disable Midi Audition Synth if it cannot be found
[ardour.git] / libs / gtkmm2ext / tearoff.cc
index e59a610aa2695b584d1653c2144acc90ef5af58e..f0bacb593b5e79ea09ad28b9140ffe497300f88d 100644 (file)
@@ -54,10 +54,13 @@ TearOff::TearOff (Widget& c, bool allow_resize)
        tearoff_event_box.set_events (BUTTON_PRESS_MASK|BUTTON_RELEASE_MASK);
        tearoff_event_box.signal_button_release_event().connect (mem_fun (*this, &TearOff::tearoff_click));
 
+       tearoff_event_box.set_tooltip_text (_("Click to tear this into its own window"));
+        
        close_event_box.add (close_arrow);
        close_event_box.set_events (BUTTON_PRESS_MASK|BUTTON_RELEASE_MASK);
        close_event_box.signal_button_release_event().connect (mem_fun (*this, &TearOff::close_click));
-       
+
+        close_event_box.set_tooltip_text (_("Click to put this back in the main window"));
 
        VBox* box1;
        box1 = manage (new VBox);
@@ -83,10 +86,10 @@ TearOff::TearOff (Widget& c, bool allow_resize)
 
        VBox* box2;
        box2 = manage (new VBox);
-       box2->pack_start (tearoff_event_box, false, false, 2);
+       box2->pack_start (tearoff_event_box, false, false);
 
        pack_start (contents);
-       pack_start (*box2, false, false, 2);
+       pack_start (*box2, false, false);
 }
 
 TearOff::~TearOff ()
@@ -109,7 +112,7 @@ TearOff::set_can_be_torn_off (bool yn)
 }
 
 void
-TearOff::set_visible (bool yn)
+TearOff::set_visible (bool yn, bool force)
 {
        /* don't change visibility if torn off */
 
@@ -117,7 +120,7 @@ TearOff::set_visible (bool yn)
                return;
        }
 
-       if (_visible != yn) {
+       if (_visible != yn || force) {
                _visible = yn;
                if (yn) {
                        show_all();
@@ -151,6 +154,9 @@ TearOff::tear_it_off ()
         window_box.pack_start (contents);
         own_window.set_name (get_name());
         close_event_box.set_name (get_name());
+        if (own_window_width == 0) {
+                own_window.set_position (WIN_POS_MOUSE);
+        }
         own_window.show_all ();
         own_window.present ();
         hide ();