diff --git a/src/util/wf-autohide-window.cpp b/src/util/wf-autohide-window.cpp index 541ae4ad..5031a98e 100644 --- a/src/util/wf-autohide-window.cpp +++ b/src/util/wf-autohide-window.cpp @@ -31,7 +31,7 @@ WayfireAutohidingWindow::WayfireAutohidingWindow(WayfireOutput *output, this->update_position(); auto pointer_gesture = Gtk::EventControllerMotion::create(); - pointer_gesture->signal_enter().connect([=] (double x, double y) + signals.push_back(pointer_gesture->signal_enter().connect([=] (double x, double y) { if (this->pending_hide.connected()) { @@ -41,15 +41,15 @@ WayfireAutohidingWindow::WayfireAutohidingWindow(WayfireOutput *output, this->input_inside_panel = true; y_position.animate(0); start_draw_timer(); - }); - pointer_gesture->signal_leave().connect([=] + })); + signals.push_back(pointer_gesture->signal_leave().connect([=] { this->input_inside_panel = false; if (this->should_autohide()) { this->schedule_hide(AUTOHIDE_HIDE_DELAY); } - }); + })); this->add_controller(pointer_gesture); this->setup_autohide(); @@ -90,6 +90,11 @@ WayfireAutohidingWindow::~WayfireAutohidingWindow() { zwf_hotspot_v2_destroy(this->panel_hotspot); } + + for (auto handler : signals) + { + handler.disconnect(); + } } wl_surface*WayfireAutohidingWindow::get_wl_surface() const diff --git a/src/util/wf-autohide-window.hpp b/src/util/wf-autohide-window.hpp index 2324c6d0..cd6cd6c5 100644 --- a/src/util/wf-autohide-window.hpp +++ b/src/util/wf-autohide-window.hpp @@ -79,6 +79,8 @@ class WayfireAutohidingWindow : public Gtk::Window private: WayfireOutput *output; + std::vector signals; + WfOption position; void update_position();