Waybar: update to 0.9.22

This commit is contained in:
cinerea0 2023-08-16 23:00:51 -04:00 committed by Duncan Overbruck
parent a491ff76a7
commit bc6062df3b
2 changed files with 101 additions and 3 deletions

View File

@ -0,0 +1,98 @@
# https://github.com/Alexays/Waybar/pull/2414, should be in next release
diff --git a/include/AModule.hpp b/include/AModule.hpp
index 9b16076bd3..479755b77b 100644
--- a/include/AModule.hpp
+++ b/include/AModule.hpp
@@ -36,26 +36,34 @@ class AModule : public IModule {
virtual bool handleToggle(GdkEventButton *const &ev);
virtual bool handleScroll(GdkEventScroll *);
+ virtual bool handleRelease(GdkEventButton *const &ev);
private:
+ bool handleUserEvent(GdkEventButton *const &ev);
+
std::vector<int> pid_;
gdouble distance_scrolled_y_;
gdouble distance_scrolled_x_;
std::map<std::string, std::string> eventActionMap_;
static const inline std::map<std::pair<uint, GdkEventType>, std::string> eventMap_{
{std::make_pair(1, GdkEventType::GDK_BUTTON_PRESS), "on-click"},
+ {std::make_pair(1, GdkEventType::GDK_BUTTON_RELEASE), "on-click-release"},
{std::make_pair(1, GdkEventType::GDK_2BUTTON_PRESS), "on-double-click"},
{std::make_pair(1, GdkEventType::GDK_3BUTTON_PRESS), "on-triple-click"},
{std::make_pair(2, GdkEventType::GDK_BUTTON_PRESS), "on-click-middle"},
+ {std::make_pair(2, GdkEventType::GDK_BUTTON_RELEASE), "on-click-middle-release"},
{std::make_pair(2, GdkEventType::GDK_2BUTTON_PRESS), "on-double-click-middle"},
{std::make_pair(2, GdkEventType::GDK_3BUTTON_PRESS), "on-triple-click-middle"},
{std::make_pair(3, GdkEventType::GDK_BUTTON_PRESS), "on-click-right"},
+ {std::make_pair(3, GdkEventType::GDK_BUTTON_RELEASE), "on-click-right-release"},
{std::make_pair(3, GdkEventType::GDK_2BUTTON_PRESS), "on-double-click-right"},
{std::make_pair(3, GdkEventType::GDK_3BUTTON_PRESS), "on-triple-click-right"},
{std::make_pair(8, GdkEventType::GDK_BUTTON_PRESS), "on-click-backward"},
+ {std::make_pair(8, GdkEventType::GDK_BUTTON_RELEASE), "on-click-backward-release"},
{std::make_pair(8, GdkEventType::GDK_2BUTTON_PRESS), "on-double-click-backward"},
{std::make_pair(8, GdkEventType::GDK_3BUTTON_PRESS), "on-triple-click-backward"},
{std::make_pair(9, GdkEventType::GDK_BUTTON_PRESS), "on-click-forward"},
+ {std::make_pair(9, GdkEventType::GDK_BUTTON_RELEASE), "on-click-forward-release"},
{std::make_pair(9, GdkEventType::GDK_2BUTTON_PRESS), "on-double-click-forward"},
{std::make_pair(9, GdkEventType::GDK_3BUTTON_PRESS), "on-triple-click-forward"}};
};
diff --git a/src/AModule.cpp b/src/AModule.cpp
index 2626cd89f2..398fa5187f 100644
--- a/src/AModule.cpp
+++ b/src/AModule.cpp
@@ -27,20 +27,28 @@ AModule::AModule(const Json::Value& config, const std::string& name, const std::
}
// configure events' user commands
- if (enable_click) {
+ // hasUserEvent is true if any element from eventMap_ is satisfying the condition in the lambda
+ bool hasUserEvent =
+ std::find_if(eventMap_.cbegin(), eventMap_.cend(), [&config](const auto& eventEntry) {
+ // True if there is any non-release type event
+ return eventEntry.first.second != GdkEventType::GDK_BUTTON_RELEASE &&
+ config[eventEntry.second].isString();
+ }) != eventMap_.cend();
+
+ if (enable_click || hasUserEvent) {
event_box_.add_events(Gdk::BUTTON_PRESS_MASK);
event_box_.signal_button_press_event().connect(sigc::mem_fun(*this, &AModule::handleToggle));
- } else {
- std::map<std::pair<uint, GdkEventType>, std::string>::const_iterator it{eventMap_.cbegin()};
- while (it != eventMap_.cend()) {
- if (config_[it->second].isString()) {
- event_box_.add_events(Gdk::BUTTON_PRESS_MASK);
- event_box_.signal_button_press_event().connect(
- sigc::mem_fun(*this, &AModule::handleToggle));
- break;
- }
- ++it;
- }
+ }
+
+ bool hasReleaseEvent =
+ std::find_if(eventMap_.cbegin(), eventMap_.cend(), [&config](const auto& eventEntry) {
+ // True if there is any non-release type event
+ return eventEntry.first.second == GdkEventType::GDK_BUTTON_RELEASE &&
+ config[eventEntry.second].isString();
+ }) != eventMap_.cend();
+ if (hasReleaseEvent) {
+ event_box_.add_events(Gdk::BUTTON_RELEASE_MASK);
+ event_box_.signal_button_release_event().connect(sigc::mem_fun(*this, &AModule::handleRelease));
}
if (config_["on-scroll-up"].isString() || config_["on-scroll-down"].isString() || enable_scroll) {
event_box_.add_events(Gdk::SCROLL_MASK | Gdk::SMOOTH_SCROLL_MASK);
@@ -72,7 +80,11 @@ auto AModule::doAction(const std::string& name) -> void {
}
}
-bool AModule::handleToggle(GdkEventButton* const& e) {
+bool AModule::handleToggle(GdkEventButton* const& e) { return handleUserEvent(e); }
+
+bool AModule::handleRelease(GdkEventButton* const& e) { return handleUserEvent(e); }
+
+bool AModule::handleUserEvent(GdkEventButton* const& e) {
std::string format{};
const std::map<std::pair<uint, GdkEventType>, std::string>::const_iterator& rec{
eventMap_.find(std::pair(e->button, e->type))};

View File

@ -1,7 +1,7 @@
# Template file for 'Waybar'
pkgname=Waybar
version=0.9.20
revision=3
version=0.9.22
revision=1
build_style=meson
configure_args="-Dgtk-layer-shell=enabled -Dlibudev=enabled -Dman-pages=enabled
-Dsystemd=disabled -Drfkill=enabled
@ -30,7 +30,7 @@ license="MIT"
homepage="https://github.com/Alexays/Waybar"
changelog="https://github.com/Alexays/Waybar/releases"
distfiles="https://github.com/Alexays/Waybar/archive/refs/tags/${version}.tar.gz"
checksum=e300183defece4799b6dfb7aea72400492ec6e330217c22158a334f35532d014
checksum=61e8d934c178b9da8212162398d2be44c5606c92b9a3503526993bb204206c6b
conf_files="/etc/xdg/waybar/config /etc/xdg/waybar/style.css"
build_options="libnl pulseaudio dbusmenugtk mpd sndio jack pipewire"