[gnome-panel/wip/muktupavels/remove-panel-applet-private: 2/5] panel-applets-manager: there is only one manager
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-panel/wip/muktupavels/remove-panel-applet-private: 2/5] panel-applets-manager: there is only one manager
- Date: Mon, 13 Apr 2020 20:28:38 +0000 (UTC)
commit 217fb4d56412d1e74cfae40d4c3058d37f554e12
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Mon Apr 13 22:17:30 2020 +0300
panel-applets-manager: there is only one manager
gnome-panel/panel-applets-manager.c | 125 +++++-------------------------------
1 file changed, 16 insertions(+), 109 deletions(-)
---
diff --git a/gnome-panel/panel-applets-manager.c b/gnome-panel/panel-applets-manager.c
index 12723be10..3d98ed3bb 100644
--- a/gnome-panel/panel-applets-manager.c
+++ b/gnome-panel/panel-applets-manager.c
@@ -41,140 +41,72 @@ panel_applets_manager_class_init (PanelAppletsManagerClass *class)
/* Generic methods */
-static GSList *panel_applets_managers = NULL;
+static PanelAppletsManager *manager = NULL;
static void
_panel_applets_manager_cleanup (gpointer data)
{
- g_slist_free_full (panel_applets_managers, g_object_unref);
- panel_applets_managers = NULL;
+ g_clear_object (&manager);
}
static void
_panel_applets_managers_ensure_loaded (void)
{
- GObject *manager;
-
- if (panel_applets_managers != NULL)
+ if (manager != NULL)
return;
panel_cleanup_register (PANEL_CLEAN_FUNC (_panel_applets_manager_cleanup), NULL);
manager = g_object_new (GP_TYPE_APPLET_MANAGER, NULL);
- panel_applets_managers = g_slist_append (panel_applets_managers, manager);
}
GList *
panel_applets_manager_get_applets (void)
{
- GSList *l;
- GList *retval = NULL;
-
_panel_applets_managers_ensure_loaded ();
- for (l = panel_applets_managers; l != NULL; l = l->next) {
- GList *applets;
- PanelAppletsManager *manager = PANEL_APPLETS_MANAGER (l->data);
-
- applets = PANEL_APPLETS_MANAGER_GET_CLASS (manager)->get_applets (manager);
- if (applets)
- retval = g_list_concat (retval, applets);
- }
-
- return retval;
+ return PANEL_APPLETS_MANAGER_GET_CLASS (manager)->get_applets (manager);
}
gboolean
panel_applets_manager_factory_activate (const gchar *iid)
{
- GSList *l;
-
_panel_applets_managers_ensure_loaded ();
- for (l = panel_applets_managers; l != NULL; l = l->next) {
- PanelAppletsManager *manager = PANEL_APPLETS_MANAGER (l->data);
-
- if (PANEL_APPLETS_MANAGER_GET_CLASS (manager)->factory_activate (manager, iid))
- return TRUE;
- }
-
- return FALSE;
+ return PANEL_APPLETS_MANAGER_GET_CLASS (manager)->factory_activate (manager, iid);
}
void
panel_applets_manager_factory_deactivate (const gchar *iid)
{
- GSList *l;
-
_panel_applets_managers_ensure_loaded ();
- for (l = panel_applets_managers; l != NULL; l = l->next) {
- PanelAppletsManager *manager = PANEL_APPLETS_MANAGER (l->data);
-
- if (PANEL_APPLETS_MANAGER_GET_CLASS (manager)->factory_deactivate (manager, iid))
- return;
- }
+ PANEL_APPLETS_MANAGER_GET_CLASS (manager)->factory_deactivate (manager, iid);
}
PanelAppletInfo *
panel_applets_manager_get_applet_info (const gchar *iid)
{
- GSList *l;
- PanelAppletInfo *retval = NULL;
-
_panel_applets_managers_ensure_loaded ();
- for (l = panel_applets_managers; l != NULL; l = l->next) {
- PanelAppletsManager *manager = PANEL_APPLETS_MANAGER (l->data);
-
- retval = PANEL_APPLETS_MANAGER_GET_CLASS (manager)->get_applet_info (manager, iid);
-
- if (retval != NULL)
- return retval;
- }
-
- return NULL;
+ return PANEL_APPLETS_MANAGER_GET_CLASS (manager)->get_applet_info (manager, iid);
}
gboolean
panel_applets_manager_load_applet (const gchar *iid,
PanelAppletFrameActivating *frame_act)
{
- GSList *l;
-
_panel_applets_managers_ensure_loaded ();
- for (l = panel_applets_managers; l != NULL; l = l->next) {
- PanelAppletsManager *manager = PANEL_APPLETS_MANAGER (l->data);
-
- if (!PANEL_APPLETS_MANAGER_GET_CLASS (manager)->get_applet_info (manager, iid))
- continue;
-
- return PANEL_APPLETS_MANAGER_GET_CLASS (manager)->load_applet (manager, iid, frame_act);
- }
-
- return FALSE;
+ return PANEL_APPLETS_MANAGER_GET_CLASS (manager)->load_applet (manager, iid, frame_act);
}
gchar *
panel_applets_manager_get_new_iid (const gchar *old_iid)
{
- GSList *l;
- PanelAppletsManager *manager;
- gchar *new_iid;
-
_panel_applets_managers_ensure_loaded ();
- for (l = panel_applets_managers; l != NULL; l = l->next) {
- manager = PANEL_APPLETS_MANAGER (l->data);
-
- new_iid = PANEL_APPLETS_MANAGER_GET_CLASS (manager)->get_new_iid (manager, old_iid);
-
- if (new_iid != NULL)
- return new_iid;
- }
-
- return NULL;
+ return PANEL_APPLETS_MANAGER_GET_CLASS (manager)->get_new_iid (manager, old_iid);
}
gboolean
@@ -184,28 +116,16 @@ panel_applets_manager_open_initial_setup_dialog (const gchar *iid,
gpointer user_data,
GDestroyNotify free_func)
{
- GSList *l;
gboolean ret;
_panel_applets_managers_ensure_loaded ();
- ret = FALSE;
- for (l = panel_applets_managers; l != NULL; l = l->next) {
- PanelAppletsManager *manager = PANEL_APPLETS_MANAGER (l->data);
-
- if (!PANEL_APPLETS_MANAGER_GET_CLASS (manager)->get_applet_info (manager, iid))
- continue;
-
- ret = PANEL_APPLETS_MANAGER_GET_CLASS (manager)->open_initial_setup_dialog (manager,
- iid,
- parent,
- callback,
- user_data,
- free_func);
-
- if (ret)
- break;
- }
+ ret = PANEL_APPLETS_MANAGER_GET_CLASS (manager)->open_initial_setup_dialog (manager,
+ iid,
+ parent,
+ callback,
+ user_data,
+ free_func);
if (!ret && user_data != NULL && free_func != NULL)
free_func (user_data);
@@ -216,20 +136,7 @@ panel_applets_manager_open_initial_setup_dialog (const gchar *iid,
GtkWidget *
panel_applets_manager_get_standalone_menu (void)
{
- GSList *l;
- PanelAppletsManager *manager;
- GtkWidget *menu;
-
_panel_applets_managers_ensure_loaded ();
- for (l = panel_applets_managers; l != NULL; l = l->next) {
- manager = PANEL_APPLETS_MANAGER (l->data);
-
- menu = PANEL_APPLETS_MANAGER_GET_CLASS (manager)->get_standalone_menu (manager);
-
- if (menu != NULL)
- return menu;
- }
-
- return NULL;
+ return PANEL_APPLETS_MANAGER_GET_CLASS (manager)->get_standalone_menu (manager);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]