[gnome-panel] menu: don't pass GpApplet object to GpLockLogout
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-panel] menu: don't pass GpApplet object to GpLockLogout
- Date: Mon, 17 Sep 2018 14:57:25 +0000 (UTC)
commit 403106daec7521b10e74ee1c8b79fde576ab0878
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Sun Sep 16 16:19:45 2018 +0300
menu: don't pass GpApplet object to GpLockLogout
modules/menu/gp-lock-logout.c | 126 ++++++++++++++++++++++++++---------
modules/menu/gp-lock-logout.h | 4 +-
modules/menu/gp-menu-button-applet.c | 17 ++++-
modules/menu/gp-user-menu-applet.c | 17 ++++-
4 files changed, 128 insertions(+), 36 deletions(-)
---
diff --git a/modules/menu/gp-lock-logout.c b/modules/menu/gp-lock-logout.c
index bf0465bcd..f1624c026 100644
--- a/modules/menu/gp-lock-logout.c
+++ b/modules/menu/gp-lock-logout.c
@@ -33,7 +33,9 @@ struct _GpLockLogout
{
GObject parent;
- GpApplet *applet;
+ gboolean enable_tooltips;
+ gboolean locked_down;
+ guint menu_icon_size;
GSettings *lockdown;
@@ -50,7 +52,9 @@ enum
{
PROP_0,
- PROP_APPLET,
+ PROP_ENABLE_TOOLTIPS,
+ PROP_LOCKED_DOWN,
+ PROP_MENU_ICON_SIZE,
LAST_PROP
};
@@ -676,19 +680,17 @@ free_drag_id (gchar *drag_id,
}
static GtkWidget *
-create_menu_item (GpApplet *applet,
- const gchar *icon_name,
- const gchar *label,
- const gchar *tooltip,
- const gchar *drag_id)
+create_menu_item (GpLockLogout *lock_logout,
+ const gchar *icon_name,
+ const gchar *label,
+ const gchar *tooltip,
+ const gchar *drag_id)
{
- guint icon_size;
GtkWidget *image;
GtkWidget *item;
- icon_size = gp_applet_get_menu_icon_size (applet);
image = gtk_image_new_from_icon_name (icon_name, GTK_ICON_SIZE_MENU);
- gtk_image_set_pixel_size (GTK_IMAGE (image), icon_size);
+ gtk_image_set_pixel_size (GTK_IMAGE (image), lock_logout->menu_icon_size);
item = gp_image_menu_item_new_with_label (label);
gp_image_menu_item_set_image (GP_IMAGE_MENU_ITEM (item), image);
@@ -698,13 +700,13 @@ create_menu_item (GpApplet *applet,
{
gtk_widget_set_tooltip_text (item, tooltip);
- g_object_bind_property (applet, "enable-tooltips",
+ g_object_bind_property (lock_logout, "enable-tooltips",
item, "has-tooltip",
G_BINDING_DEFAULT |
G_BINDING_SYNC_CREATE);
}
- if (drag_id != NULL && !gp_applet_get_locked_down (applet))
+ if (drag_id != NULL && !lock_logout->locked_down)
{
static const GtkTargetEntry drag_targets[] =
{
@@ -793,11 +795,49 @@ gp_lock_logout_dispose (GObject *object)
g_clear_object (&lock_logout->screensaver);
g_clear_object (&lock_logout->seat);
- lock_logout->applet = NULL;
-
G_OBJECT_CLASS (gp_lock_logout_parent_class)->dispose (object);
}
+static void
+gp_lock_logout_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ GpLockLogout *lock_logout;
+
+ lock_logout = GP_LOCK_LOGOUT (object);
+
+ switch (property_id)
+ {
+ case PROP_LOCKED_DOWN:
+ case PROP_MENU_ICON_SIZE:
+ g_assert_not_reached ();
+ break;
+
+ case PROP_ENABLE_TOOLTIPS:
+ g_value_set_boolean (value, lock_logout->enable_tooltips);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+ }
+}
+
+static void
+set_enable_tooltips (GpLockLogout *lock_logout,
+ gboolean enable_tooltips)
+{
+ if (lock_logout->enable_tooltips == enable_tooltips)
+ return;
+
+ lock_logout->enable_tooltips = enable_tooltips;
+
+ g_object_notify_by_pspec (G_OBJECT (lock_logout),
+ lock_logout_properties[PROP_ENABLE_TOOLTIPS]);
+}
+
static void
gp_lock_logout_set_property (GObject *object,
guint property_id,
@@ -810,9 +850,16 @@ gp_lock_logout_set_property (GObject *object,
switch (property_id)
{
- case PROP_APPLET:
- g_assert (lock_logout->applet == NULL);
- lock_logout->applet = g_value_get_object (value);
+ case PROP_ENABLE_TOOLTIPS:
+ set_enable_tooltips (lock_logout, g_value_get_boolean (value));
+ break;
+
+ case PROP_LOCKED_DOWN:
+ lock_logout->locked_down = g_value_get_boolean (value);
+ break;
+
+ case PROP_MENU_ICON_SIZE:
+ lock_logout->menu_icon_size = g_value_get_uint (value);
break;
default:
@@ -824,11 +871,26 @@ gp_lock_logout_set_property (GObject *object,
static void
install_properties (GObjectClass *object_class)
{
- lock_logout_properties[PROP_APPLET] =
- g_param_spec_object ("applet", "Applet", "Applet",
- GP_TYPE_APPLET,
- G_PARAM_CONSTRUCT_ONLY | G_PARAM_WRITABLE |
- G_PARAM_STATIC_STRINGS);
+ lock_logout_properties[PROP_ENABLE_TOOLTIPS] =
+ g_param_spec_boolean ("enable-tooltips", "Enable Tooltips", "Enable Tooltips",
+ TRUE,
+ G_PARAM_CONSTRUCT | G_PARAM_READWRITE |
+ G_PARAM_EXPLICIT_NOTIFY |
+ G_PARAM_STATIC_STRINGS);
+
+ lock_logout_properties[PROP_LOCKED_DOWN] =
+ g_param_spec_boolean ("locked-down", "Locked Down", "Locked Down",
+ FALSE,
+ G_PARAM_CONSTRUCT | G_PARAM_WRITABLE |
+ G_PARAM_EXPLICIT_NOTIFY |
+ G_PARAM_STATIC_STRINGS);
+
+ lock_logout_properties[PROP_MENU_ICON_SIZE] =
+ g_param_spec_uint ("menu-icon-size", "Menu Icon Size", "Menu Icon Size",
+ 16, 24, 16,
+ G_PARAM_CONSTRUCT | G_PARAM_WRITABLE |
+ G_PARAM_EXPLICIT_NOTIFY |
+ G_PARAM_STATIC_STRINGS);
g_object_class_install_properties (object_class, LAST_PROP,
lock_logout_properties);
@@ -851,6 +913,7 @@ gp_lock_logout_class_init (GpLockLogoutClass *lock_logout_class)
object_class->constructed = gp_lock_logout_constructed;
object_class->dispose = gp_lock_logout_dispose;
+ object_class->get_property = gp_lock_logout_get_property;
object_class->set_property = gp_lock_logout_set_property;
install_properties (object_class);
@@ -863,10 +926,9 @@ gp_lock_logout_init (GpLockLogout *lock_logout)
}
GpLockLogout *
-gp_lock_logout_new (GpApplet *applet)
+gp_lock_logout_new (void)
{
return g_object_new (GP_TYPE_LOCK_LOGOUT,
- "applet", applet,
NULL);
}
@@ -906,7 +968,7 @@ gp_lock_logout_append_to_menu (GpLockLogout *lock_logout,
tooltip = NULL;
drag_id = NULL;
- switch_user = create_menu_item (lock_logout->applet,
+ switch_user = create_menu_item (lock_logout,
"system-users",
label, tooltip,
drag_id);
@@ -923,7 +985,7 @@ gp_lock_logout_append_to_menu (GpLockLogout *lock_logout,
tooltip = _("Log out of this session to log in as a different user");
drag_id = "ACTION:logout:NEW";
- logout = create_menu_item (lock_logout->applet,
+ logout = create_menu_item (lock_logout,
"system-log-out",
label, tooltip,
drag_id);
@@ -940,7 +1002,7 @@ gp_lock_logout_append_to_menu (GpLockLogout *lock_logout,
tooltip = _("Protect your computer from unauthorized use");
drag_id = "ACTION:lock:NEW";
- lock_screen = create_menu_item (lock_logout->applet,
+ lock_screen = create_menu_item (lock_logout,
"system-lock-screen",
label, tooltip,
drag_id);
@@ -982,7 +1044,7 @@ gp_lock_logout_append_to_menu (GpLockLogout *lock_logout,
tooltip = NULL;
drag_id = "ACTION:hibernate:NEW";
- hibernate = create_menu_item (lock_logout->applet,
+ hibernate = create_menu_item (lock_logout,
"gnome-panel-hibernate",
label, tooltip,
drag_id);
@@ -999,7 +1061,7 @@ gp_lock_logout_append_to_menu (GpLockLogout *lock_logout,
tooltip = NULL;
drag_id = "ACTION:suspend:NEW";
- suspend = create_menu_item (lock_logout->applet,
+ suspend = create_menu_item (lock_logout,
"gnome-panel-suspend",
label, tooltip,
drag_id);
@@ -1016,7 +1078,7 @@ gp_lock_logout_append_to_menu (GpLockLogout *lock_logout,
tooltip = NULL;
drag_id = "ACTION:hybrid-sleep:NEW";
- hybrid_sleep = create_menu_item (lock_logout->applet,
+ hybrid_sleep = create_menu_item (lock_logout,
"gnome-panel-suspend",
label, tooltip,
drag_id);
@@ -1035,7 +1097,7 @@ gp_lock_logout_append_to_menu (GpLockLogout *lock_logout,
tooltip = _("Restart the computer");
drag_id = "ACTION:reboot:NEW";
- reboot = create_menu_item (lock_logout->applet,
+ reboot = create_menu_item (lock_logout,
"view-refresh",
label, tooltip,
drag_id);
@@ -1052,7 +1114,7 @@ gp_lock_logout_append_to_menu (GpLockLogout *lock_logout,
tooltip = _("Power off the computer");
drag_id = "ACTION:shutdown:NEW";
- shutdown = create_menu_item (lock_logout->applet,
+ shutdown = create_menu_item (lock_logout,
"system-shutdown",
label, tooltip,
drag_id);
diff --git a/modules/menu/gp-lock-logout.h b/modules/menu/gp-lock-logout.h
index b41738e0b..fc3deab6c 100644
--- a/modules/menu/gp-lock-logout.h
+++ b/modules/menu/gp-lock-logout.h
@@ -18,14 +18,14 @@
#ifndef GP_LOCK_LOGOUT_H
#define GP_LOCK_LOGOUT_H
-#include <libgnome-panel/gp-applet.h>
+#include <gtk/gtk.h>
G_BEGIN_DECLS
#define GP_TYPE_LOCK_LOGOUT (gp_lock_logout_get_type ())
G_DECLARE_FINAL_TYPE (GpLockLogout, gp_lock_logout, GP, LOCK_LOGOUT, GObject)
-GpLockLogout *gp_lock_logout_new (GpApplet *applet);
+GpLockLogout *gp_lock_logout_new (void);
void gp_lock_logout_append_to_menu (GpLockLogout *lock_logout,
GtkMenu *menu);
diff --git a/modules/menu/gp-menu-button-applet.c b/modules/menu/gp-menu-button-applet.c
index 45945b04a..7f79bf47e 100644
--- a/modules/menu/gp-menu-button-applet.c
+++ b/modules/menu/gp-menu-button-applet.c
@@ -311,7 +311,22 @@ update_menu (GpMenuButtonApplet *menu_button)
g_free (menu_file);
g_assert (priv->lock_logout == NULL);
- priv->lock_logout = gp_lock_logout_new (GP_APPLET (menu_button));
+ priv->lock_logout = gp_lock_logout_new ();
+
+ g_object_bind_property (menu_button, "enable-tooltips",
+ priv->lock_logout, "enable-tooltips",
+ G_BINDING_DEFAULT |
+ G_BINDING_SYNC_CREATE);
+
+ g_object_bind_property (menu_button, "locked-down",
+ priv->lock_logout, "locked-down",
+ G_BINDING_DEFAULT |
+ G_BINDING_SYNC_CREATE);
+
+ g_object_bind_property (menu_button, "menu-icon-size",
+ priv->lock_logout, "menu-icon-size",
+ G_BINDING_DEFAULT |
+ G_BINDING_SYNC_CREATE);
g_signal_connect_swapped (priv->lock_logout, "changed",
G_CALLBACK (gp_menu_reload), priv->menu);
diff --git a/modules/menu/gp-user-menu-applet.c b/modules/menu/gp-user-menu-applet.c
index f471417b6..57da75e81 100644
--- a/modules/menu/gp-user-menu-applet.c
+++ b/modules/menu/gp-user-menu-applet.c
@@ -88,7 +88,22 @@ append_user_item (GpUserMenuApplet *applet)
menu = gp_user_menu_new (GP_APPLET (applet));
gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), menu);
- applet->lock_logout = gp_lock_logout_new (GP_APPLET (applet));
+ applet->lock_logout = gp_lock_logout_new ();
+
+ g_object_bind_property (applet, "enable-tooltips",
+ applet->lock_logout, "enable-tooltips",
+ G_BINDING_DEFAULT |
+ G_BINDING_SYNC_CREATE);
+
+ g_object_bind_property (applet, "locked-down",
+ applet->lock_logout, "locked-down",
+ G_BINDING_DEFAULT |
+ G_BINDING_SYNC_CREATE);
+
+ g_object_bind_property (applet, "menu-icon-size",
+ applet->lock_logout, "menu-icon-size",
+ G_BINDING_DEFAULT |
+ G_BINDING_SYNC_CREATE);
g_signal_connect_swapped (applet->lock_logout, "changed",
G_CALLBACK (gp_user_menu_reload), menu);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]