[gnome-panel] menu: add user menu item to user-menu applet
- From: Alberts MuktupÄvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-panel] menu: add user menu item to user-menu applet
- Date: Sat, 17 Feb 2018 22:46:38 +0000 (UTC)
commit 5fd2195043a667c72389cbd526f242608402fe63
Author: Alberts MuktupÄvels <alberts muktupavels gmail com>
Date: Sun Feb 18 00:14:01 2018 +0200
menu: add user menu item to user-menu applet
modules/menu/gp-user-menu-applet.c | 56 ++++++++++++++++++++++++++++++++++++
1 files changed, 56 insertions(+), 0 deletions(-)
---
diff --git a/modules/menu/gp-user-menu-applet.c b/modules/menu/gp-user-menu-applet.c
index 2f6babc..246b756 100644
--- a/modules/menu/gp-user-menu-applet.c
+++ b/modules/menu/gp-user-menu-applet.c
@@ -17,7 +17,11 @@
#include "config.h"
#include "gp-menu-bar.h"
+#include "gp-menu-utils.h"
#include "gp-user-menu-applet.h"
+#include "gp-user-menu.h"
+
+#include <libgnome-panel/gp-image-menu-item.h>
struct _GpUserMenuApplet
{
@@ -28,6 +32,56 @@ struct _GpUserMenuApplet
G_DEFINE_TYPE (GpUserMenuApplet, gp_user_menu_applet, GP_TYPE_APPLET)
+static gboolean
+button_press_event_cb (GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer user_data)
+{
+ return TRUE;
+}
+
+static void
+panel_icon_size_cb (GpApplet *applet,
+ GParamSpec *pspec,
+ GtkWidget *icon)
+{
+ guint icon_size;
+
+ icon_size = gp_applet_get_panel_icon_size (applet);
+ gtk_image_set_pixel_size (GTK_IMAGE (icon), icon_size);
+}
+
+static void
+append_user_item (GpUserMenuApplet *applet)
+{
+ guint icon_size;
+ GtkWidget *icon;
+ gchar *user_name;
+ GtkWidget *item;
+ GtkWidget *menu;
+
+ icon_size = gp_applet_get_panel_icon_size (GP_APPLET (applet));
+ icon = gtk_image_new_from_icon_name ("computer", GTK_ICON_SIZE_MENU);
+ gtk_image_set_pixel_size (GTK_IMAGE (icon), icon_size);
+
+ g_signal_connect (applet, "notify::panel-icon-size",
+ G_CALLBACK (panel_icon_size_cb), icon);
+
+ user_name = gp_menu_utils_get_user_name ();
+ item = gp_image_menu_item_new_with_label (user_name);
+ g_free (user_name);
+
+ gtk_menu_shell_append (GTK_MENU_SHELL (applet->menu_bar), item);
+ gp_image_menu_item_set_image (GP_IMAGE_MENU_ITEM (item), icon);
+ gtk_widget_show (item);
+
+ menu = gp_user_menu_new (GP_APPLET (applet));
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), menu);
+
+ g_signal_connect (menu, "button-press-event",
+ G_CALLBACK (button_press_event_cb), NULL);
+}
+
static void
gp_user_menu_applet_setup (GpUserMenuApplet *user_menu)
{
@@ -42,6 +96,8 @@ gp_user_menu_applet_setup (GpUserMenuApplet *user_menu)
g_object_bind_property (user_menu, "position",
user_menu->menu_bar, "position",
G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
+
+ append_user_item (user_menu);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]