X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fgtkmm2ext%2Fgtkmm2ext%2Ftearoff.h;h=f6742ea5d619080b32c09ac407325b295832e0ce;hb=d15fda6d751a465d278f477923075d4783f3b1ca;hp=70146fa3dbe1411850ce7c70f0e087620f1e0171;hpb=f69abbff90ac8b8426bb0c6e02a7f4d4a3fd5e6d;p=ardour.git diff --git a/libs/gtkmm2ext/gtkmm2ext/tearoff.h b/libs/gtkmm2ext/gtkmm2ext/tearoff.h index 70146fa3db..f6742ea5d6 100644 --- a/libs/gtkmm2ext/gtkmm2ext/tearoff.h +++ b/libs/gtkmm2ext/gtkmm2ext/tearoff.h @@ -15,32 +15,50 @@ 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 +#include +#include +#include +#include + +#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 Detach; sigc::signal Attach; + sigc::signal Visible; + sigc::signal 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 */