[bugfix] idle_inhibitor handles click events correctly
- Declare event handler in ALabel virtual so the idle_inhibitor can overriding them - Handle the right click event in idle_inhibitor and call ALabel handler if neededpull/208/head
parent
7e4fed8218
commit
80ef63791d
|
@ -28,9 +28,8 @@ protected:
|
|||
bool alt_ = false;
|
||||
std::string default_format_;
|
||||
|
||||
private:
|
||||
bool handleToggle(GdkEventButton *const &ev);
|
||||
bool handleScroll(GdkEventScroll *);
|
||||
virtual bool handleToggle(GdkEventButton *const &ev);
|
||||
virtual bool handleScroll(GdkEventScroll *);
|
||||
};
|
||||
|
||||
} // namespace waybar
|
||||
|
|
|
@ -13,7 +13,7 @@ class IdleInhibitor: public ALabel {
|
|||
~IdleInhibitor();
|
||||
auto update() -> void;
|
||||
private:
|
||||
bool onClick(GdkEventButton* const& ev);
|
||||
bool handleToggle(GdkEventButton* const& e);
|
||||
|
||||
const Bar& bar_;
|
||||
std::string status_;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#include "modules/idle_inhibitor.hpp"
|
||||
|
||||
#include "util/command.hpp"
|
||||
|
||||
waybar::modules::IdleInhibitor::IdleInhibitor(const std::string& id, const Bar& bar, const Json::Value& config)
|
||||
: ALabel(config, "{status}"), bar_(bar), status_("deactivated"), idle_inhibitor_(nullptr)
|
||||
|
@ -10,7 +10,7 @@ waybar::modules::IdleInhibitor::IdleInhibitor(const std::string& id, const Bar&
|
|||
}
|
||||
event_box_.add_events(Gdk::BUTTON_PRESS_MASK);
|
||||
event_box_.signal_button_press_event().connect(
|
||||
sigc::mem_fun(*this, &IdleInhibitor::onClick));
|
||||
sigc::mem_fun(*this, &IdleInhibitor::handleToggle));
|
||||
dp.emit();
|
||||
}
|
||||
|
||||
|
@ -32,9 +32,8 @@ auto waybar::modules::IdleInhibitor::update() -> void
|
|||
}
|
||||
}
|
||||
|
||||
bool waybar::modules::IdleInhibitor::onClick(GdkEventButton* const& e)
|
||||
{
|
||||
if(e->button == 1) {
|
||||
bool waybar::modules::IdleInhibitor::handleToggle(GdkEventButton* const& e) {
|
||||
if (e->button == 1) {
|
||||
if (idle_inhibitor_) {
|
||||
zwp_idle_inhibitor_v1_destroy(idle_inhibitor_);
|
||||
idle_inhibitor_ = nullptr;
|
||||
|
@ -44,7 +43,13 @@ bool waybar::modules::IdleInhibitor::onClick(GdkEventButton* const& e)
|
|||
bar_.client.idle_inhibit_manager, bar_.surface);
|
||||
status_ = "activated";
|
||||
}
|
||||
if (config_["on-click"].isString() && e->button == 1) {
|
||||
waybar::util::command::forkExec(config_["on-click"].asString());
|
||||
}
|
||||
} else {
|
||||
ALabel::handleToggle(e);
|
||||
}
|
||||
|
||||
dp.emit();
|
||||
return true;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue