[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;
|
bool alt_ = false;
|
||||||
std::string default_format_;
|
std::string default_format_;
|
||||||
|
|
||||||
private:
|
virtual bool handleToggle(GdkEventButton *const &ev);
|
||||||
bool handleToggle(GdkEventButton *const &ev);
|
virtual bool handleScroll(GdkEventScroll *);
|
||||||
bool handleScroll(GdkEventScroll *);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace waybar
|
} // namespace waybar
|
||||||
|
|
|
@ -13,7 +13,7 @@ class IdleInhibitor: public ALabel {
|
||||||
~IdleInhibitor();
|
~IdleInhibitor();
|
||||||
auto update() -> void;
|
auto update() -> void;
|
||||||
private:
|
private:
|
||||||
bool onClick(GdkEventButton* const& ev);
|
bool handleToggle(GdkEventButton* const& e);
|
||||||
|
|
||||||
const Bar& bar_;
|
const Bar& bar_;
|
||||||
std::string status_;
|
std::string status_;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#include "modules/idle_inhibitor.hpp"
|
#include "modules/idle_inhibitor.hpp"
|
||||||
|
#include "util/command.hpp"
|
||||||
|
|
||||||
waybar::modules::IdleInhibitor::IdleInhibitor(const std::string& id, const Bar& bar, const Json::Value& config)
|
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)
|
: 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_.add_events(Gdk::BUTTON_PRESS_MASK);
|
||||||
event_box_.signal_button_press_event().connect(
|
event_box_.signal_button_press_event().connect(
|
||||||
sigc::mem_fun(*this, &IdleInhibitor::onClick));
|
sigc::mem_fun(*this, &IdleInhibitor::handleToggle));
|
||||||
dp.emit();
|
dp.emit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,9 +32,8 @@ auto waybar::modules::IdleInhibitor::update() -> void
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool waybar::modules::IdleInhibitor::onClick(GdkEventButton* const& e)
|
bool waybar::modules::IdleInhibitor::handleToggle(GdkEventButton* const& e) {
|
||||||
{
|
if (e->button == 1) {
|
||||||
if(e->button == 1) {
|
|
||||||
if (idle_inhibitor_) {
|
if (idle_inhibitor_) {
|
||||||
zwp_idle_inhibitor_v1_destroy(idle_inhibitor_);
|
zwp_idle_inhibitor_v1_destroy(idle_inhibitor_);
|
||||||
idle_inhibitor_ = nullptr;
|
idle_inhibitor_ = nullptr;
|
||||||
|
@ -44,7 +43,13 @@ bool waybar::modules::IdleInhibitor::onClick(GdkEventButton* const& e)
|
||||||
bar_.client.idle_inhibit_manager, bar_.surface);
|
bar_.client.idle_inhibit_manager, bar_.surface);
|
||||||
status_ = "activated";
|
status_ = "activated";
|
||||||
}
|
}
|
||||||
|
if (config_["on-click"].isString() && e->button == 1) {
|
||||||
|
waybar::util::command::forkExec(config_["on-click"].asString());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ALabel::handleToggle(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
dp.emit();
|
dp.emit();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue