parent
5458c433b6
commit
6925415501
@ -33,7 +33,8 @@ namespace sig_ev = signals::eventqueue;
|
||||
|
||||
class bar : public xpp::event::sink<evt::button_press, evt::expose, evt::property_notify, evt::enter_notify,
|
||||
evt::leave_notify, evt::destroy_notify, evt::client_message>,
|
||||
public signal_receiver<SIGN_PRIORITY_BAR, sig_ui::tick, sig_ui::shade_window, sig_ui::unshade_window, sig_ui::dim_window> {
|
||||
public signal_receiver<SIGN_PRIORITY_BAR, sig_ui::tick, sig_ui::shade_window, sig_ui::unshade_window,
|
||||
sig_ui::dim_window> {
|
||||
public:
|
||||
using make_type = unique_ptr<bar>;
|
||||
static make_type make(bool only_initialize_values = false);
|
||||
@ -44,7 +45,7 @@ class bar : public xpp::event::sink<evt::button_press, evt::expose, evt::propert
|
||||
|
||||
const bar_settings settings() const;
|
||||
|
||||
void parse(string&& data);
|
||||
void parse(string&& data, bool force = false);
|
||||
|
||||
protected:
|
||||
void restack_window();
|
||||
|
@ -8,8 +8,8 @@
|
||||
#include "events/signal_receiver.hpp"
|
||||
#include "events/types.hpp"
|
||||
#include "utils/file.hpp"
|
||||
#include "x11/types.hpp"
|
||||
#include "x11/events.hpp"
|
||||
#include "x11/types.hpp"
|
||||
|
||||
POLYBAR_NS
|
||||
|
||||
@ -44,8 +44,8 @@ namespace sig_ui = signals::ui;
|
||||
namespace sig_ipc = signals::ipc;
|
||||
|
||||
class controller : public signal_receiver<SIGN_PRIORITY_CONTROLLER, sig_ev::exit_terminate, sig_ev::exit_reload,
|
||||
sig_ev::update, sig_ev::notify_change, sig_ev::check_state, sig_ipc::action, sig_ipc::command,
|
||||
sig_ipc::hook, sig_ui::button_press> {
|
||||
sig_ev::notify_change, sig_ev::notify_forcechange, sig_ev::check_state, sig_ipc::action,
|
||||
sig_ipc::command, sig_ipc::hook, sig_ui::button_press> {
|
||||
public:
|
||||
using make_type = unique_ptr<controller>;
|
||||
static make_type make(unique_ptr<ipc>&& ipc, unique_ptr<inotify_watch>&& config_watch);
|
||||
@ -63,9 +63,10 @@ class controller : public signal_receiver<SIGN_PRIORITY_CONTROLLER, sig_ev::exit
|
||||
void read_events();
|
||||
void process_eventqueue();
|
||||
void process_inputdata();
|
||||
bool process_update(bool force);
|
||||
|
||||
bool on(const sig_ev::notify_change& evt);
|
||||
bool on(const sig_ev::update& evt);
|
||||
bool on(const sig_ev::notify_forcechange& evt);
|
||||
bool on(const sig_ev::exit_terminate& evt);
|
||||
bool on(const sig_ev::exit_reload& evt);
|
||||
bool on(const sig_ev::check_state& evt);
|
||||
|
@ -86,10 +86,10 @@ namespace signals {
|
||||
struct notify_change : public detail::base_signal<notify_change> {
|
||||
using base_type::base_type;
|
||||
};
|
||||
struct check_state : public detail::base_signal<check_state> {
|
||||
struct notify_forcechange : public detail::base_signal<notify_forcechange> {
|
||||
using base_type::base_type;
|
||||
};
|
||||
struct update : public detail::base_signal<update> {
|
||||
struct check_state : public detail::base_signal<check_state> {
|
||||
using base_type::base_type;
|
||||
};
|
||||
}
|
||||
|
@ -18,8 +18,8 @@ namespace signals {
|
||||
struct exit_terminate;
|
||||
struct exit_reload;
|
||||
struct notify_change;
|
||||
struct notify_forcechange;
|
||||
struct check_state;
|
||||
struct update;
|
||||
}
|
||||
namespace ipc {
|
||||
struct command;
|
||||
|
@ -311,18 +311,18 @@ const bar_settings bar::settings() const {
|
||||
* @param data Input string
|
||||
* @param force Unless true, do not parse unchanged data
|
||||
*/
|
||||
void bar::parse(string&& data) {
|
||||
void bar::parse(string&& data, bool force) {
|
||||
if (!m_mutex.try_lock()) {
|
||||
return;
|
||||
}
|
||||
|
||||
std::lock_guard<std::mutex> guard(m_mutex, std::adopt_lock);
|
||||
|
||||
if (m_opts.shaded) {
|
||||
if (force) {
|
||||
m_log.trace("bar: Force update");
|
||||
} else if (m_opts.shaded) {
|
||||
return m_log.trace("bar: Ignoring update (shaded)");
|
||||
}
|
||||
|
||||
if (data == m_lastinput) {
|
||||
} else if (data == m_lastinput) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -350,7 +350,7 @@ void controller::process_eventqueue() {
|
||||
}
|
||||
|
||||
if (evt.type == event_type::UPDATE) {
|
||||
on(sig_ev::update{});
|
||||
process_update(evt.flag);
|
||||
} else if (evt.type == event_type::INPUT) {
|
||||
process_inputdata();
|
||||
} else if (evt.type == event_type::QUIT) {
|
||||
@ -401,18 +401,10 @@ void controller::process_inputdata() {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Process broadcast events
|
||||
*/
|
||||
bool controller::on(const sig_ev::notify_change&) {
|
||||
enqueue(make_update_evt(false));
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Process eventqueue update event
|
||||
*/
|
||||
bool controller::on(const sig_ev::update&) {
|
||||
bool controller::process_update(bool force) {
|
||||
const bar_settings& bar{m_bar->settings()};
|
||||
string contents;
|
||||
string separator{bar.separator};
|
||||
@ -484,7 +476,7 @@ bool controller::on(const sig_ev::update&) {
|
||||
|
||||
try {
|
||||
if (!m_writeback) {
|
||||
m_bar->parse(move(contents));
|
||||
m_bar->parse(move(contents), force);
|
||||
} else {
|
||||
std::cout << contents << std::endl;
|
||||
}
|
||||
@ -495,6 +487,20 @@ bool controller::on(const sig_ev::update&) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Process broadcast events
|
||||
*/
|
||||
bool controller::on(const sig_ev::notify_change&) {
|
||||
return enqueue(make_update_evt(false));
|
||||
}
|
||||
|
||||
/**
|
||||
* Process forced broadcast events
|
||||
*/
|
||||
bool controller::on(const sig_ev::notify_forcechange&) {
|
||||
return enqueue(make_update_evt(true));
|
||||
}
|
||||
|
||||
/**
|
||||
* Process eventqueue terminate event
|
||||
*/
|
||||
|
@ -286,7 +286,7 @@ void tray_manager::deactivate(bool clear_selection) {
|
||||
|
||||
m_connection.flush();
|
||||
|
||||
m_sig.emit(notify_change{});
|
||||
m_sig.emit(notify_forcechange{});
|
||||
}
|
||||
|
||||
/**
|
||||
@ -325,7 +325,7 @@ void tray_manager::reconfigure() {
|
||||
|
||||
m_connection.flush();
|
||||
|
||||
m_sig.emit(notify_change{});
|
||||
m_sig.emit(notify_forcechange{});
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user