fix merge errors with master
[ardour.git] / libs / gtkmm2ext / gtkmm2ext / tearoff.h
index 5e80892b98a7c3e0d083e434b9e612fd91d3f6f3..f6742ea5d619080b32c09ac407325b295832e0ce 100644 (file)
 #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, bool allow_resize = false);
        virtual ~TearOff ();
 
-       void set_visible (bool yn);
+       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;
@@ -42,6 +49,12 @@ class TearOff : public Gtk::HBox
 
        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;
@@ -55,6 +68,12 @@ class TearOff : public Gtk::HBox
        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*);
@@ -63,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 */