diff --git a/include/modules/sni/item.hpp b/include/modules/sni/item.hpp index a6180db1..fc04673e 100644 --- a/include/modules/sni/item.hpp +++ b/include/modules/sni/item.hpp @@ -65,7 +65,7 @@ class Item : public sigc::trackable { Glib::RefPtr extractPixBuf(GVariant* variant); Glib::RefPtr getIconByName(const std::string& name, int size); static void onMenuDestroyed(Item* self, GObject* old_menu_pointer); - void makeMenu(GdkEventButton* const& ev); + void makeMenu(); bool handleClick(GdkEventButton* const& /*ev*/); Glib::RefPtr proxy_; diff --git a/src/modules/sni/item.cpp b/src/modules/sni/item.cpp index 51f97894..bcc66e22 100644 --- a/src/modules/sni/item.cpp +++ b/src/modules/sni/item.cpp @@ -128,6 +128,7 @@ void Item::setProperty(const Glib::ustring& name, Glib::VariantBase& value) { } } else if (name == "Menu") { menu = get_variant(value); + makeMenu(); } else if (name == "ItemIsMenu") { item_is_menu = get_variant(value); } @@ -319,7 +320,7 @@ void Item::onMenuDestroyed(Item* self, GObject* old_menu_pointer) { } } -void Item::makeMenu(GdkEventButton* const& ev) { +void Item::makeMenu() { if (gtk_menu == nullptr && !menu.empty()) { dbus_menu = dbusmenu_gtkmenu_new(bus_name.data(), menu.data()); if (dbus_menu != nullptr) { @@ -335,7 +336,7 @@ bool Item::handleClick(GdkEventButton* const& ev) { auto parameters = Glib::VariantContainerBase::create_tuple( {Glib::Variant::create(ev->x), Glib::Variant::create(ev->y)}); if ((ev->button == 1 && item_is_menu) || ev->button == 3) { - makeMenu(ev); + makeMenu(); if (gtk_menu != nullptr) { #if GTK_CHECK_VERSION(3, 22, 0) gtk_menu->popup_at_pointer(reinterpret_cast(ev));