From bc6062df3bb9bd11987cfc0764111ce459ed889c Mon Sep 17 00:00:00 2001 From: cinerea0 Date: Wed, 16 Aug 2023 23:00:51 -0400 Subject: [PATCH] Waybar: update to 0.9.22 --- .../Waybar/patches/fix-button-release.patch | 98 +++++++++++++++++++ srcpkgs/Waybar/template | 6 +- 2 files changed, 101 insertions(+), 3 deletions(-) create mode 100644 srcpkgs/Waybar/patches/fix-button-release.patch diff --git a/srcpkgs/Waybar/patches/fix-button-release.patch b/srcpkgs/Waybar/patches/fix-button-release.patch new file mode 100644 index 00000000000..37301c7d20d --- /dev/null +++ b/srcpkgs/Waybar/patches/fix-button-release.patch @@ -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 pid_; + gdouble distance_scrolled_y_; + gdouble distance_scrolled_x_; + std::map eventActionMap_; + static const inline std::map, 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::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::string>::const_iterator& rec{ + eventMap_.find(std::pair(e->button, e->type))}; diff --git a/srcpkgs/Waybar/template b/srcpkgs/Waybar/template index c440672509f..14e81fa78ac 100644 --- a/srcpkgs/Waybar/template +++ b/srcpkgs/Waybar/template @@ -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"