mirror of
				https://github.com/rad4day/Waybar.git
				synced 2025-11-01 00:12:42 +01:00 
			
		
		
		
	feat(Tray): handle item unregister
This commit is contained in:
		| @@ -1,6 +1,7 @@ | ||||
| #pragma once | ||||
|  | ||||
| #include <gtkmm.h> | ||||
| #include <tuple> | ||||
| #include <dbus-status-notifier-watcher.h> | ||||
| #include "modules/sni/sni.hpp" | ||||
|  | ||||
| @@ -8,8 +9,7 @@ namespace waybar::modules::SNI { | ||||
|  | ||||
| class Host { | ||||
|   public: | ||||
|     Host(Glib::Dispatcher&); | ||||
|     ~Host(); | ||||
|     Host(Glib::Dispatcher*); | ||||
|     std::vector<Item> items; | ||||
|   private: | ||||
|     static void busAcquired(GDBusConnection*, const gchar*, gpointer); | ||||
| @@ -23,14 +23,14 @@ class Host { | ||||
|     static void itemUnregistered(SnOrgKdeStatusNotifierWatcher*, const gchar*, | ||||
|       gpointer); | ||||
|  | ||||
|     void getBusNameAndObjectPath(const gchar*, gchar**, gchar**); | ||||
|     std::tuple<std::string, std::string> getBusNameAndObjectPath(const gchar*); | ||||
|     void addRegisteredItem(const gchar* service); | ||||
|  | ||||
|     uint32_t bus_name_id_; | ||||
|     uint32_t watcher_id_; | ||||
|     std::string bus_name_; | ||||
|     std::string object_path_; | ||||
|     Glib::Dispatcher& dp_; | ||||
|     Glib::Dispatcher* dp_; | ||||
|     GCancellable* cancellable_ = nullptr; | ||||
|     SnOrgKdeStatusNotifierWatcher* watcher_ = nullptr; | ||||
| }; | ||||
|   | ||||
| @@ -7,8 +7,12 @@ namespace waybar::modules::SNI { | ||||
|  | ||||
| class Item { | ||||
|   public: | ||||
|     Item(std::string, std::string, Glib::Dispatcher&); | ||||
|     ~Item(); | ||||
|     Item(std::string, std::string, Glib::Dispatcher*); | ||||
|  | ||||
|     std::string bus_name; | ||||
|     std::string object_path; | ||||
|     Gtk::EventBox event_box; | ||||
|  | ||||
|     int icon_size; | ||||
|     int effective_icon_size; | ||||
|     Gtk::Image* image; | ||||
| @@ -31,9 +35,7 @@ class Item { | ||||
|  | ||||
|     void updateImage(); | ||||
|     Glib::RefPtr<Gdk::Pixbuf> getIconByName(std::string name, int size); | ||||
|     std::string bus_name_; | ||||
|     std::string object_path_; | ||||
|     Glib::Dispatcher& dp_; | ||||
|     Glib::Dispatcher* dp_; | ||||
|     GCancellable* cancellable_ = nullptr; | ||||
|     SnOrgKdeStatusNotifierItem* proxy_ = nullptr; | ||||
| }; | ||||
|   | ||||
| @@ -5,24 +5,25 @@ | ||||
|  | ||||
| namespace waybar::modules::SNI { | ||||
|  | ||||
| typedef enum { | ||||
|   GF_WATCH_TYPE_HOST, | ||||
|   GF_WATCH_TYPE_ITEM | ||||
| } GfWatchType; | ||||
|  | ||||
| typedef struct { | ||||
|   GfWatchType type; | ||||
|   gchar* service; | ||||
|   gchar* bus_name; | ||||
|   gchar* object_path; | ||||
|   guint watch_id; | ||||
| } GfWatch; | ||||
|  | ||||
| class Watcher { | ||||
|   public: | ||||
|     Watcher(); | ||||
|     ~Watcher(); | ||||
|   private: | ||||
|     typedef enum { | ||||
|       GF_WATCH_TYPE_HOST, | ||||
|       GF_WATCH_TYPE_ITEM | ||||
|     } GfWatchType; | ||||
|  | ||||
|     typedef struct { | ||||
|       GfWatchType type; | ||||
|       Watcher* watcher; | ||||
|       gchar* service; | ||||
|       gchar* bus_name; | ||||
|       gchar* object_path; | ||||
|       guint watch_id; | ||||
|     } GfWatch; | ||||
|  | ||||
|     static void busAcquired(GDBusConnection*, const gchar*, gpointer); | ||||
|     static gboolean handleRegisterHost(Watcher*, | ||||
|       GDBusMethodInvocation*, const gchar*); | ||||
| @@ -30,8 +31,8 @@ class Watcher { | ||||
|       GDBusMethodInvocation*, const gchar*); | ||||
|     static GfWatch* gfWatchFind(GSList* list, const gchar* bus_name, | ||||
|       const gchar* object_path); | ||||
|     static GfWatch* gfWatchNew(GfWatchType type, | ||||
|       const gchar* service, const gchar* bus_name, const gchar* object_path); | ||||
|     static GfWatch* gfWatchNew(GfWatchType, const gchar*, const gchar*, | ||||
|       const gchar*, Watcher*); | ||||
|     static void nameVanished(GDBusConnection* connection, const char* name, | ||||
|       gpointer data); | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Alexis
					Alexis