diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2006-01-01 17:23:34 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2006-01-01 17:23:34 +0000 |
commit | eb80050627e1d118880bb8108d0049b10d38a644 (patch) | |
tree | 58eb80b7e365b612c06b2b5d770d1b3940120158 /libs/gtkmm2ext/tearoff.cc | |
parent | ed1684dce503c9732a94f8e743f4090c14878522 (diff) |
fix segv
git-svn-id: svn://localhost/trunk/ardour2@222 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/gtkmm2ext/tearoff.cc')
-rw-r--r-- | libs/gtkmm2ext/tearoff.cc | 51 |
1 files changed, 26 insertions, 25 deletions
diff --git a/libs/gtkmm2ext/tearoff.cc b/libs/gtkmm2ext/tearoff.cc index cdc027d5da..d74a98cb3d 100644 --- a/libs/gtkmm2ext/tearoff.cc +++ b/libs/gtkmm2ext/tearoff.cc @@ -24,40 +24,42 @@ using namespace Gtkmm2ext; using namespace Gtk; +using namespace Gdk; +using namespace Glib; using namespace std; -TearOff::TearOff (Gtk::Widget& c) +TearOff::TearOff (Widget& c, bool allow_resize) : contents (c), - tearoff_arrow (Gtk::ARROW_DOWN, Gtk::SHADOW_OUT), - close_arrow (Gtk::ARROW_UP, Gtk::SHADOW_OUT) + own_window (Gtk::WINDOW_TOPLEVEL), + tearoff_arrow (ARROW_DOWN, SHADOW_OUT), + close_arrow (ARROW_UP, SHADOW_OUT) { dragging = false; tearoff_event_box.add (tearoff_arrow); - tearoff_event_box.set_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK); + 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)); close_event_box.add (close_arrow); - close_event_box.set_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK); + 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)); - own_window = new Gtk::Window (Gtk::WINDOW_TOPLEVEL); - own_window->add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::POINTER_MOTION_MASK|Gdk::POINTER_MOTION_HINT_MASK); - own_window->set_resizable (false); - own_window->set_type_hint (Gdk::WINDOW_TYPE_HINT_TOOLBAR); + own_window.add_events (BUTTON_PRESS_MASK|BUTTON_RELEASE_MASK|POINTER_MOTION_MASK|POINTER_MOTION_HINT_MASK); + own_window.set_resizable (allow_resize); + own_window.set_type_hint (WINDOW_TYPE_HINT_TOOLBAR); VBox* box1; box1 = manage (new VBox); box1->pack_start (close_event_box, false, false, 5); window_box.pack_end (*box1, false, false, 2); - own_window->add (window_box); + own_window.add (window_box); - own_window->signal_button_press_event().connect (mem_fun (*this, &TearOff::window_button_press)); - own_window->signal_button_release_event().connect (mem_fun (*this, &TearOff::window_button_release)); - own_window->signal_motion_notify_event().connect (mem_fun (*this, &TearOff::window_motion)); - own_window->signal_delete_event().connect (mem_fun (*this, &TearOff::window_delete_event)); - own_window->signal_realize().connect (bind (sigc::ptr_fun (Gtkmm2ext::set_decoration), own_window, Gdk::WMDecoration (Gdk::DECOR_BORDER|Gdk::DECOR_RESIZEH))); + own_window.signal_button_press_event().connect (mem_fun (*this, &TearOff::window_button_press)); + own_window.signal_button_release_event().connect (mem_fun (*this, &TearOff::window_button_release)); + own_window.signal_motion_notify_event().connect (mem_fun (*this, &TearOff::window_motion)); + own_window.signal_delete_event().connect (mem_fun (*this, &TearOff::window_delete_event)); + own_window.signal_realize().connect (bind (sigc::ptr_fun (Gtkmm2ext::set_decoration), &own_window, WMDecoration (DECOR_BORDER|DECOR_RESIZEH))); tearoff_arrow.set_name ("TearOffArrow"); close_arrow.set_name ("TearOffArrow"); @@ -73,7 +75,6 @@ TearOff::TearOff (Gtk::Widget& c) TearOff::~TearOff () { - delete own_window; } gint @@ -81,10 +82,10 @@ TearOff::tearoff_click (GdkEventButton* ev) { remove (contents); window_box.pack_start (contents); - own_window->set_name (get_name()); + own_window.set_name (get_name()); close_event_box.set_name (get_name()); - own_window->show_all (); -// own_window->realize (); + own_window.show_all (); +// own_window.realize (); hide (); Detach (); return TRUE; @@ -96,7 +97,7 @@ TearOff::close_click (GdkEventButton* ev) window_box.remove (contents); pack_start (contents); reorder_child (contents, 0); - own_window->hide (); + own_window.hide (); show_all (); Attach (); return TRUE; @@ -109,7 +110,7 @@ TearOff::window_button_press (GdkEventButton* ev) drag_x = ev->x_root; drag_y = ev->y_root; - own_window->add_modal_grab(); + own_window.add_modal_grab(); return TRUE; } @@ -118,7 +119,7 @@ gint TearOff::window_button_release (GdkEventButton* ev) { dragging = false; - own_window->remove_modal_grab(); + own_window.remove_modal_grab(); return TRUE; } @@ -136,9 +137,9 @@ TearOff::window_motion (GdkEventMotion* ev) gint mx, my; double x_delta; double y_delta; - Glib::RefPtr<Gdk::Window> win (own_window->get_window()); + RefPtr<Gdk::Window> win (own_window.get_window()); - own_window->get_pointer (mx, my); + own_window.get_pointer (mx, my); if (!dragging) { return TRUE; @@ -159,5 +160,5 @@ TearOff::window_motion (GdkEventMotion* ev) bool TearOff::torn_off() const { - return own_window->is_visible(); + return own_window.is_visible(); } |