diff --git a/include/components/bar.hpp b/include/components/bar.hpp index feeebc09..2fcf1ff1 100644 --- a/include/components/bar.hpp +++ b/include/components/bar.hpp @@ -34,7 +34,7 @@ namespace sig_ev = signals::eventqueue; class bar : public xpp::event::sink, - public signal_receiver { public: using make_type = unique_ptr; @@ -63,6 +63,7 @@ class bar : public xpp::event::sink { + using base_type::base_type; + }; struct exit_terminate : public detail::base_signal { using base_type::base_type; }; diff --git a/include/events/signal_fwd.hpp b/include/events/signal_fwd.hpp index 69969298..7b4f6b07 100644 --- a/include/events/signal_fwd.hpp +++ b/include/events/signal_fwd.hpp @@ -15,6 +15,7 @@ namespace signals { } namespace eventqueue { + struct start; struct exit_terminate; struct exit_reload; struct notify_change; diff --git a/src/components/bar.cpp b/src/components/bar.cpp index f8bd72f1..57ea3514 100644 --- a/src/components/bar.cpp +++ b/src/components/bar.cpp @@ -281,11 +281,6 @@ bar::bar(connection& conn, signal_emitter& emitter, const config& config, const m_renderer->fill_background(); m_renderer->end(); - m_log.trace("bar: Setup tray manager"); - m_tray->setup(static_cast(m_opts)); - - broadcast_visibility(); - m_sig.attach(this); } @@ -619,6 +614,13 @@ void bar::handle(const evt::property_notify& evt) { } } +bool bar::on(const sig_ev::start&) { + m_log.trace("bar: Setup tray manager"); + m_tray->setup(static_cast(m_opts)); + broadcast_visibility(); + return true; +} + bool bar::on(const sig_ui::unshade_window&) { m_opts.shaded = false; m_opts.shade_size.w = m_opts.size.w; diff --git a/src/components/controller.cpp b/src/components/controller.cpp index fa4034bb..a2da0ddf 100644 --- a/src/components/controller.cpp +++ b/src/components/controller.cpp @@ -183,6 +183,8 @@ bool controller::run(bool writeback) { throw application_error("No modules started"); } + m_sig.emit(signals::eventqueue::start{}); + m_connection.flush(); m_event_thread = thread(&controller::process_eventqueue, this); @@ -531,7 +533,7 @@ bool controller::on(const sig_ev::check_state&) { } } m_log.warn("No running modules..."); - on(exit_terminate{}); + on(sig_ev::exit_terminate{}); return true; }