diff --git a/include/modules/user.hpp b/include/modules/user.hpp index 38b09c41..68eef521 100644 --- a/include/modules/user.hpp +++ b/include/modules/user.hpp @@ -14,6 +14,8 @@ class User : public AIconLabel { ~User() = default; auto update() -> void; + bool handleToggle(GdkEventButton* const& e) override; + private: util::SleeperThread thread_; @@ -22,8 +24,6 @@ class User : public AIconLabel { static constexpr inline int defaultUserImageWidth_ = 20; static constexpr inline int defaultUserImageHeight_ = 20; - bool signal_label(GdkEventButton* button) const; - long uptime_as_seconds(); std::string get_user_login() const; std::string get_user_home_dir() const; diff --git a/src/modules/user.cpp b/src/modules/user.cpp index 7e3223c9..1118634c 100644 --- a/src/modules/user.cpp +++ b/src/modules/user.cpp @@ -20,25 +20,21 @@ #include #endif -#define LEFT_MOUSE_BUTTON 1 - namespace waybar::modules { User::User(const std::string& id, const Json::Value& config) - : AIconLabel(config, "user", id, "{user} {work_H}:{work_M}", 60, false, false, true) { + : AIconLabel(config, "user", id, "{user} {work_H}:{work_M}", 60, false, true, true) { if (AIconLabel::iconEnabled()) { this->init_avatar(AIconLabel::config_); } this->init_update_worker(); - AModule::event_box_.signal_button_press_event().connect(sigc::mem_fun(this, &User::signal_label)); } -bool User::signal_label(GdkEventButton* button) const { - if (button->type != GDK_BUTTON_PRESS) return true; - - if (button->button == LEFT_MOUSE_BUTTON) { +bool User::handleToggle(GdkEventButton* const& e) { + if (AIconLabel::config_["open-on-click"].isBool() && + AIconLabel::config_["open-on-click"].asBool()) { Gio::AppInfo::launch_default_for_uri("file:///" + this->get_user_home_dir()); } - return false; + return ALabel::handleToggle(e); } long User::uptime_as_seconds() {