tray-manager: Mark as a final type
It was already declared as such, so get rid of the priv boilerplate. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3525>
This commit is contained in:
parent
e2a7d3753f
commit
910565a09a
@ -12,22 +12,16 @@
|
|||||||
#include "shell-tray-icon-private.h"
|
#include "shell-tray-icon-private.h"
|
||||||
#include "shell-global.h"
|
#include "shell-global.h"
|
||||||
|
|
||||||
typedef struct _ShellTrayManagerPrivate ShellTrayManagerPrivate;
|
typedef struct _ShellTrayManager
|
||||||
|
|
||||||
struct _ShellTrayManager
|
|
||||||
{
|
{
|
||||||
GObject parent_instance;
|
GObject parent_instance;
|
||||||
|
|
||||||
ShellTrayManagerPrivate *priv;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _ShellTrayManagerPrivate {
|
|
||||||
NaTrayManager *na_manager;
|
NaTrayManager *na_manager;
|
||||||
CoglColor bg_color;
|
CoglColor bg_color;
|
||||||
|
|
||||||
GHashTable *icons;
|
GHashTable *icons;
|
||||||
StWidget *theme_widget;
|
StWidget *theme_widget;
|
||||||
};
|
} ShellTrayManager;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
ShellTrayManager *manager;
|
ShellTrayManager *manager;
|
||||||
@ -49,7 +43,7 @@ enum
|
|||||||
LAST_SIGNAL
|
LAST_SIGNAL
|
||||||
};
|
};
|
||||||
|
|
||||||
G_DEFINE_TYPE_WITH_PRIVATE (ShellTrayManager, shell_tray_manager, G_TYPE_OBJECT);
|
G_DEFINE_FINAL_TYPE (ShellTrayManager, shell_tray_manager, G_TYPE_OBJECT);
|
||||||
|
|
||||||
static guint shell_tray_manager_signals [LAST_SIGNAL] = { 0 };
|
static guint shell_tray_manager_signals [LAST_SIGNAL] = { 0 };
|
||||||
|
|
||||||
@ -93,9 +87,9 @@ shell_tray_manager_set_property(GObject *object,
|
|||||||
{
|
{
|
||||||
CoglColor *color = g_value_get_boxed (value);
|
CoglColor *color = g_value_get_boxed (value);
|
||||||
if (color)
|
if (color)
|
||||||
manager->priv->bg_color = *color;
|
manager->bg_color = *color;
|
||||||
else
|
else
|
||||||
manager->priv->bg_color = default_color;
|
manager->bg_color = default_color;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -115,7 +109,7 @@ shell_tray_manager_get_property(GObject *object,
|
|||||||
switch (prop_id)
|
switch (prop_id)
|
||||||
{
|
{
|
||||||
case PROP_BG_COLOR:
|
case PROP_BG_COLOR:
|
||||||
g_value_set_boxed (value, &manager->priv->bg_color);
|
g_value_set_boxed (value, &manager->bg_color);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
@ -126,9 +120,7 @@ shell_tray_manager_get_property(GObject *object,
|
|||||||
static void
|
static void
|
||||||
shell_tray_manager_init (ShellTrayManager *manager)
|
shell_tray_manager_init (ShellTrayManager *manager)
|
||||||
{
|
{
|
||||||
manager->priv = shell_tray_manager_get_instance_private (manager);
|
manager->bg_color = default_color;
|
||||||
|
|
||||||
manager->priv->bg_color = default_color;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -190,28 +182,28 @@ shell_tray_manager_ensure_resources (ShellTrayManager *manager)
|
|||||||
MetaDisplay *display;
|
MetaDisplay *display;
|
||||||
MetaX11Display *x11_display;
|
MetaX11Display *x11_display;
|
||||||
|
|
||||||
if (manager->priv->na_manager != NULL)
|
if (manager->na_manager != NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
manager->priv->icons = g_hash_table_new_full (NULL, NULL,
|
manager->icons = g_hash_table_new_full (NULL, NULL,
|
||||||
NULL, free_tray_icon);
|
NULL, free_tray_icon);
|
||||||
|
|
||||||
display = shell_global_get_display (shell_global_get ());
|
display = shell_global_get_display (shell_global_get ());
|
||||||
x11_display = meta_display_get_x11_display (display);
|
x11_display = meta_display_get_x11_display (display);
|
||||||
|
|
||||||
manager->priv->na_manager = na_tray_manager_new (x11_display);
|
manager->na_manager = na_tray_manager_new (x11_display);
|
||||||
|
|
||||||
g_signal_connect (manager->priv->na_manager, "tray-icon-added",
|
g_signal_connect (manager->na_manager, "tray-icon-added",
|
||||||
G_CALLBACK (na_tray_icon_added), manager);
|
G_CALLBACK (na_tray_icon_added), manager);
|
||||||
g_signal_connect (manager->priv->na_manager, "tray-icon-removed",
|
g_signal_connect (manager->na_manager, "tray-icon-removed",
|
||||||
G_CALLBACK (na_tray_icon_removed), manager);
|
G_CALLBACK (na_tray_icon_removed), manager);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
shell_tray_manager_release_resources (ShellTrayManager *manager)
|
shell_tray_manager_release_resources (ShellTrayManager *manager)
|
||||||
{
|
{
|
||||||
g_clear_object (&manager->priv->na_manager);
|
g_clear_object (&manager->na_manager);
|
||||||
g_clear_pointer (&manager->priv->icons, g_hash_table_destroy);
|
g_clear_pointer (&manager->icons, g_hash_table_destroy);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -222,12 +214,12 @@ shell_tray_manager_style_changed (StWidget *theme_widget,
|
|||||||
StThemeNode *theme_node;
|
StThemeNode *theme_node;
|
||||||
StIconColors *icon_colors;
|
StIconColors *icon_colors;
|
||||||
|
|
||||||
if (manager->priv->na_manager == NULL)
|
if (manager->na_manager == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
theme_node = st_widget_get_theme_node (theme_widget);
|
theme_node = st_widget_get_theme_node (theme_widget);
|
||||||
icon_colors = st_theme_node_get_icon_colors (theme_node);
|
icon_colors = st_theme_node_get_icon_colors (theme_node);
|
||||||
na_tray_manager_set_colors (manager->priv->na_manager,
|
na_tray_manager_set_colors (manager->na_manager,
|
||||||
&icon_colors->foreground, &icon_colors->warning,
|
&icon_colors->foreground, &icon_colors->warning,
|
||||||
&icon_colors->error, &icon_colors->success);
|
&icon_colors->error, &icon_colors->success);
|
||||||
}
|
}
|
||||||
@ -236,7 +228,7 @@ static void
|
|||||||
shell_tray_manager_manage_screen_internal (ShellTrayManager *manager)
|
shell_tray_manager_manage_screen_internal (ShellTrayManager *manager)
|
||||||
{
|
{
|
||||||
shell_tray_manager_ensure_resources (manager);
|
shell_tray_manager_ensure_resources (manager);
|
||||||
na_tray_manager_manage (manager->priv->na_manager);
|
na_tray_manager_manage (manager->na_manager);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -245,7 +237,7 @@ shell_tray_manager_manage_screen (ShellTrayManager *manager,
|
|||||||
{
|
{
|
||||||
MetaDisplay *display = shell_global_get_display (shell_global_get ());
|
MetaDisplay *display = shell_global_get_display (shell_global_get ());
|
||||||
|
|
||||||
g_set_weak_pointer (&manager->priv->theme_widget, theme_widget);
|
g_set_weak_pointer (&manager->theme_widget, theme_widget);
|
||||||
|
|
||||||
if (meta_display_get_x11_display (display) != NULL)
|
if (meta_display_get_x11_display (display) != NULL)
|
||||||
shell_tray_manager_manage_screen_internal (manager);
|
shell_tray_manager_manage_screen_internal (manager);
|
||||||
@ -270,13 +262,13 @@ shell_tray_manager_unmanage_screen (ShellTrayManager *manager)
|
|||||||
|
|
||||||
g_signal_handlers_disconnect_by_data (display, manager);
|
g_signal_handlers_disconnect_by_data (display, manager);
|
||||||
|
|
||||||
if (manager->priv->theme_widget != NULL)
|
if (manager->theme_widget != NULL)
|
||||||
{
|
{
|
||||||
g_signal_handlers_disconnect_by_func (manager->priv->theme_widget,
|
g_signal_handlers_disconnect_by_func (manager->theme_widget,
|
||||||
G_CALLBACK (shell_tray_manager_style_changed),
|
G_CALLBACK (shell_tray_manager_style_changed),
|
||||||
manager);
|
manager);
|
||||||
}
|
}
|
||||||
g_set_weak_pointer (&manager->priv->theme_widget, NULL);
|
g_set_weak_pointer (&manager->theme_widget, NULL);
|
||||||
|
|
||||||
shell_tray_manager_release_resources (manager);
|
shell_tray_manager_release_resources (manager);
|
||||||
}
|
}
|
||||||
@ -289,13 +281,13 @@ on_plug_added (NaTrayChild *tray_child,
|
|||||||
|
|
||||||
g_signal_handlers_disconnect_by_func (tray_child, on_plug_added, manager);
|
g_signal_handlers_disconnect_by_func (tray_child, on_plug_added, manager);
|
||||||
|
|
||||||
child = g_hash_table_lookup (manager->priv->icons, tray_child);
|
child = g_hash_table_lookup (manager->icons, tray_child);
|
||||||
|
|
||||||
child->actor = shell_tray_icon_new (tray_child);
|
child->actor = shell_tray_icon_new (tray_child);
|
||||||
g_object_ref_sink (child->actor);
|
g_object_ref_sink (child->actor);
|
||||||
|
|
||||||
na_xembed_set_background_color (NA_XEMBED (tray_child),
|
na_xembed_set_background_color (NA_XEMBED (tray_child),
|
||||||
&manager->priv->bg_color);
|
&manager->bg_color);
|
||||||
|
|
||||||
g_signal_emit (manager, shell_tray_manager_signals[TRAY_ICON_ADDED], 0,
|
g_signal_emit (manager, shell_tray_manager_signals[TRAY_ICON_ADDED], 0,
|
||||||
child->actor);
|
child->actor);
|
||||||
@ -313,7 +305,7 @@ na_tray_icon_added (NaTrayManager *na_manager,
|
|||||||
child->manager = manager;
|
child->manager = manager;
|
||||||
child->tray_child = tray_child;
|
child->tray_child = tray_child;
|
||||||
|
|
||||||
g_hash_table_insert (manager->priv->icons, tray_child, child);
|
g_hash_table_insert (manager->icons, tray_child, child);
|
||||||
|
|
||||||
g_signal_connect (tray_child, "plug-added",
|
g_signal_connect (tray_child, "plug-added",
|
||||||
G_CALLBACK (on_plug_added), manager);
|
G_CALLBACK (on_plug_added), manager);
|
||||||
@ -327,7 +319,7 @@ na_tray_icon_removed (NaTrayManager *na_manager,
|
|||||||
ShellTrayManager *manager = user_data;
|
ShellTrayManager *manager = user_data;
|
||||||
ShellTrayManagerChild *child;
|
ShellTrayManagerChild *child;
|
||||||
|
|
||||||
child = g_hash_table_lookup (manager->priv->icons, tray_child);
|
child = g_hash_table_lookup (manager->icons, tray_child);
|
||||||
g_return_if_fail (child != NULL);
|
g_return_if_fail (child != NULL);
|
||||||
|
|
||||||
if (child->actor != NULL)
|
if (child->actor != NULL)
|
||||||
@ -340,5 +332,5 @@ na_tray_icon_removed (NaTrayManager *na_manager,
|
|||||||
child->actor);
|
child->actor);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_hash_table_remove (manager->priv->icons, tray_child);
|
g_hash_table_remove (manager->icons, tray_child);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user