fix merge errors with master
[ardour.git] / libs / gtkmm2ext / gtkmm2ext / tearoff.h
index 70146fa3dbe1411850ce7c70f0e087620f1e0171..f6742ea5d619080b32c09ac407325b295832e0ce 100644 (file)
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-    $Id$
 */
 
 #ifndef __gtkmm2ext_tearoff_h__
 #define __gtkmm2ext_tearoff_h__
 
-#include <gtkmm.h>
+#include <gtkmm/window.h>
+#include <gtkmm/arrow.h>
+#include <gtkmm/box.h>
+#include <gtkmm/eventbox.h>
+
+#include "gtkmm2ext/visibility.h"
+
+class XMLNode;
 
 namespace Gtkmm2ext {
 
-class TearOff : public Gtk::HBox
+class LIBGTKMM2EXT_API TearOff : public Gtk::HBox
 {
   public:
-       TearOff (Gtk::Widget& contents);
+       TearOff (Gtk::Widget& contents, bool allow_resize = false);
        virtual ~TearOff ();
 
+       void set_visible (bool yn, bool force = false);
+       void set_can_be_torn_off (bool);
+       bool can_be_torn_off () const { return _can_be_torn_off; }
+       bool visible () const { return _visible; }
+
        sigc::signal<void> Detach;
        sigc::signal<void> Attach;
+       sigc::signal<void> Visible;
+       sigc::signal<void> Hidden;
 
-       Gtk::Window* tearoff_window() const { return own_window; }
+       Gtk::Window& tearoff_window() { return own_window; }
        bool torn_off() const;
+        void tear_it_off ();
+        void put_it_back ();
+        void hide_visible ();
 
+        void set_state (const XMLNode&);
+        void add_state (XMLNode&) const;
 
   private:
        Gtk::Widget&   contents;
-       Gtk::Window*   own_window;
+       Gtk::Window    own_window;
        Gtk::Arrow     tearoff_arrow;
        Gtk::Arrow     close_arrow;
        Gtk::HBox      window_box;
@@ -49,6 +67,13 @@ class TearOff : public Gtk::HBox
        double         drag_x;
        double         drag_y;
        bool           dragging;
+       bool          _visible;
+       bool          _torn;
+       bool          _can_be_torn_off;
+        int            own_window_width;
+        int            own_window_height;
+        int            own_window_xpos;
+        int            own_window_ypos;
 
        gint tearoff_click (GdkEventButton*);
        gint close_click (GdkEventButton*);
@@ -57,6 +82,9 @@ class TearOff : public Gtk::HBox
        gint window_button_press (GdkEventButton*);
        gint window_button_release (GdkEventButton*);
        gint window_delete_event (GdkEventAny*);
+
+        void own_window_realized ();
+        bool own_window_configured (GdkEventConfigure*);
 };
 
 } /* namespace */