Commit 315999a7 authored by Alberts Muktupāvels's avatar Alberts Muktupāvels

menu: don't pass GpApplet object to GpMenu

parent 143c6762
......@@ -126,9 +126,24 @@ append_applications_item (GpMenuBarApplet *applet)
menu = gp_menu_utils_get_applications_menu ();
applet->applications_menu = gp_menu_new (GP_APPLET (applet), menu, TRUE);
applet->applications_menu = gp_menu_new (menu, TRUE);
g_free (menu);
g_object_bind_property (applet, "enable-tooltips",
applet->applications_menu, "enable-tooltips",
G_BINDING_DEFAULT |
G_BINDING_SYNC_CREATE);
g_object_bind_property (applet, "locked-down",
applet->applications_menu, "locked-down",
G_BINDING_DEFAULT |
G_BINDING_SYNC_CREATE);
g_object_bind_property (applet, "menu-icon-size",
applet->applications_menu, "menu-icon-size",
G_BINDING_DEFAULT |
G_BINDING_SYNC_CREATE);
gtk_menu_item_set_submenu (GTK_MENU_ITEM (applet->applications_item),
applet->applications_menu);
......@@ -173,9 +188,24 @@ append_system_item (GpMenuBarApplet *applet)
tooltip = _("Change system appearance and behavior, or get help");
gtk_widget_set_tooltip_text (applet->system_item, tooltip);
applet->system_menu = gp_menu_new (GP_APPLET (applet), menu, FALSE);
applet->system_menu = gp_menu_new (menu, FALSE);
g_free (menu);
g_object_bind_property (applet, "enable-tooltips",
applet->system_menu, "enable-tooltips",
G_BINDING_DEFAULT |
G_BINDING_SYNC_CREATE);
g_object_bind_property (applet, "locked-down",
applet->system_menu, "locked-down",
G_BINDING_DEFAULT |
G_BINDING_SYNC_CREATE);
g_object_bind_property (applet, "menu-icon-size",
applet->system_menu, "menu-icon-size",
G_BINDING_DEFAULT |
G_BINDING_SYNC_CREATE);
gtk_menu_item_set_submenu (GTK_MENU_ITEM (applet->system_item),
applet->system_menu);
......
......@@ -288,7 +288,7 @@ update_menu (GpMenuButtonApplet *menu_button)
menu_file = NULL;
if (validate_scheme (scheme, &menu_file))
{
priv->menu = gp_menu_new (GP_APPLET (menu_button), menu_file, TRUE);
priv->menu = gp_menu_new (menu_file, TRUE);
gp_menu_set_path (GP_MENU (priv->menu), path);
priv->custom_menu = TRUE;
......@@ -307,7 +307,7 @@ update_menu (GpMenuButtonApplet *menu_button)
gchar *menu_file;
menu_file = gp_menu_utils_get_applications_menu ();
priv->menu = gp_menu_new (GP_APPLET (menu_button), menu_file, TRUE);
priv->menu = gp_menu_new (menu_file, TRUE);
g_free (menu_file);
g_assert (priv->lock_logout == NULL);
......@@ -323,6 +323,21 @@ update_menu (GpMenuButtonApplet *menu_button)
priv->custom_menu = FALSE;
}
g_object_bind_property (menu_button, "enable-tooltips",
priv->menu, "enable-tooltips",
G_BINDING_DEFAULT |
G_BINDING_SYNC_CREATE);
g_object_bind_property (menu_button, "locked-down",
priv->menu, "locked-down",
G_BINDING_DEFAULT |
G_BINDING_SYNC_CREATE);
g_object_bind_property (menu_button, "menu-icon-size",
priv->menu, "menu-icon-size",
G_BINDING_DEFAULT |
G_BINDING_SYNC_CREATE);
g_object_ref_sink (priv->menu);
}
......
......@@ -29,9 +29,12 @@ struct _GpMenu
GtkMenu parent;
gchar *name;
GpApplet *applet;
gboolean required;
gboolean enable_tooltips;
gboolean locked_down;
guint menu_icon_size;
GMenuTree *tree;
gboolean loaded;
......@@ -42,9 +45,6 @@ struct _GpMenu
guint reload_id;
gulong locked_down_id;
gulong menu_icon_size_id;
gchar *path;
};
......@@ -62,9 +62,12 @@ enum
PROP_0,
PROP_NAME,
PROP_APPLET,
PROP_REQUIRED,
PROP_ENABLE_TOOLTIPS,
PROP_LOCKED_DOWN,
PROP_MENU_ICON_SIZE,
PROP_EMPTY,
LAST_PROP
......@@ -119,13 +122,11 @@ append_directory (GtkMenuShell *shell,
if (icon != NULL)
{
GtkWidget *image;
guint icon_size;
image = gtk_image_new ();
icon_size = gp_applet_get_menu_icon_size (menu->applet);
gtk_image_set_from_gicon (GTK_IMAGE (image), icon, GTK_ICON_SIZE_MENU);
gtk_image_set_pixel_size (GTK_IMAGE (image), icon_size);
gtk_image_set_pixel_size (GTK_IMAGE (image), menu->menu_icon_size);
gp_image_menu_item_set_image (GP_IMAGE_MENU_ITEM (item), image);
}
......@@ -182,13 +183,11 @@ append_entry (GtkMenuShell *shell,
if (icon != NULL)
{
GtkWidget *image;
guint icon_size;
image = gtk_image_new ();
icon_size = gp_applet_get_menu_icon_size (menu->applet);
gtk_image_set_from_gicon (GTK_IMAGE (image), icon, GTK_ICON_SIZE_MENU);
gtk_image_set_pixel_size (GTK_IMAGE (image), icon_size);
gtk_image_set_pixel_size (GTK_IMAGE (image), menu->menu_icon_size);
gp_image_menu_item_set_image (GP_IMAGE_MENU_ITEM (item), image);
}
......@@ -200,13 +199,13 @@ append_entry (GtkMenuShell *shell,
{
gtk_widget_set_tooltip_text (item, description);
g_object_bind_property (menu->applet, "enable-tooltips",
g_object_bind_property (menu, "enable-tooltips",
item, "has-tooltip",
G_BINDING_DEFAULT |
G_BINDING_SYNC_CREATE);
}
if (!gp_applet_get_locked_down (menu->applet))
if (!menu->locked_down)
{
static const GtkTargetEntry drag_targets[] =
{
......@@ -386,22 +385,6 @@ menu_tree_changed_cb (GMenuTree *tree,
queue_reload (menu);
}
static void
locked_down_cb (GpApplet *applet,
GParamSpec *pspec,
GpMenu *menu)
{
queue_reload (menu);
}
static void
menu_icon_size_cb (GpApplet *applet,
GParamSpec *pspec,
GpMenu *menu)
{
queue_reload (menu);
}
static void
gp_menu_constructed (GObject *object)
{
......@@ -418,14 +401,6 @@ gp_menu_constructed (GObject *object)
g_signal_connect (menu->tree, "changed",
G_CALLBACK (menu_tree_changed_cb), menu);
menu->locked_down_id = g_signal_connect (menu->applet, "notify::locked-down",
G_CALLBACK (locked_down_cb), menu);
menu->menu_icon_size_id = g_signal_connect (menu->applet,
"notify::menu-icon-size",
G_CALLBACK (menu_icon_size_cb),
menu);
queue_reload (menu);
}
......@@ -444,20 +419,6 @@ gp_menu_dispose (GObject *object)
menu->reload_id = 0;
}
if (menu->locked_down_id != 0)
{
g_signal_handler_disconnect (menu->applet, menu->locked_down_id);
menu->locked_down_id = 0;
}
if (menu->menu_icon_size_id != 0)
{
g_signal_handler_disconnect (menu->applet, menu->menu_icon_size_id);
menu->menu_icon_size_id = 0;
}
menu->applet = NULL;
G_OBJECT_CLASS (gp_menu_parent_class)->dispose (object);
}
......@@ -486,15 +447,14 @@ gp_menu_get_property (GObject *object,
switch (property_id)
{
case PROP_NAME:
case PROP_REQUIRED:
case PROP_LOCKED_DOWN:
case PROP_MENU_ICON_SIZE:
g_assert_not_reached ();
break;
case PROP_APPLET:
g_assert_not_reached ();
break;
case PROP_REQUIRED:
g_assert_not_reached ();
case PROP_ENABLE_TOOLTIPS:
g_value_set_boolean (value, menu->enable_tooltips);
break;
case PROP_EMPTY:
......@@ -507,6 +467,41 @@ gp_menu_get_property (GObject *object,
}
}
static void
set_enable_tooltips (GpMenu *menu,
gboolean enable_tooltips)
{
if (menu->enable_tooltips == enable_tooltips)
return;
menu->enable_tooltips = enable_tooltips;
g_object_notify_by_pspec (G_OBJECT (menu),
menu_properties[PROP_ENABLE_TOOLTIPS]);
}
static void
set_locked_down (GpMenu *menu,
gboolean locked_down)
{
if (menu->locked_down == locked_down)
return;
menu->locked_down = locked_down;
queue_reload (menu);
}
static void
set_menu_icon_size (GpMenu *menu,
guint menu_icon_size)
{
if (menu->menu_icon_size == menu_icon_size)
return;
menu->menu_icon_size = menu_icon_size;
queue_reload (menu);
}
static void
gp_menu_set_property (GObject *object,
guint property_id,
......@@ -524,15 +519,22 @@ gp_menu_set_property (GObject *object,
menu->name = g_value_dup_string (value);
break;
case PROP_APPLET:
g_assert (menu->applet == NULL);
menu->applet = g_value_get_object (value);
break;
case PROP_REQUIRED:
menu->required = g_value_get_boolean (value);
break;
case PROP_ENABLE_TOOLTIPS:
set_enable_tooltips (menu, g_value_get_boolean (value));
break;
case PROP_LOCKED_DOWN:
set_locked_down (menu, g_value_get_boolean (value));
break;
case PROP_MENU_ICON_SIZE:
set_menu_icon_size (menu, g_value_get_uint (value));
break;
case PROP_EMPTY:
g_assert_not_reached ();
break;
......@@ -552,18 +554,33 @@ install_properties (GObjectClass *object_class)
G_PARAM_CONSTRUCT_ONLY | G_PARAM_WRITABLE |
G_PARAM_STATIC_STRINGS);
menu_properties[PROP_APPLET] =
g_param_spec_object ("applet", "Applet", "Applet",
GP_TYPE_APPLET,
G_PARAM_CONSTRUCT_ONLY | G_PARAM_WRITABLE |
G_PARAM_STATIC_STRINGS);
menu_properties[PROP_REQUIRED] =
g_param_spec_boolean ("required", "Required", "Required",
TRUE,
G_PARAM_CONSTRUCT_ONLY | G_PARAM_WRITABLE |
G_PARAM_STATIC_STRINGS);
menu_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);
menu_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);
menu_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);
menu_properties[PROP_EMPTY] =
g_param_spec_boolean ("empty", "Empty", "Empty",
TRUE,
......@@ -604,12 +621,10 @@ gp_menu_init (GpMenu *menu)
}
GtkWidget *
gp_menu_new (GpApplet *applet,
const gchar *name,
gp_menu_new (const gchar *name,
gboolean required)
{
return g_object_new (GP_TYPE_MENU,
"applet", applet,
"name", name,
"required", required,
NULL);
......
......@@ -19,15 +19,13 @@
#define GP_MENU_H
#include "gp-menu-utils.h"
#include <libgnome-panel/gp-applet.h>
G_BEGIN_DECLS
#define GP_TYPE_MENU (gp_menu_get_type ())
G_DECLARE_FINAL_TYPE (GpMenu, gp_menu, GP, MENU, GtkMenu)
GtkWidget *gp_menu_new (GpApplet *applet,
const gchar *name,
GtkWidget *gp_menu_new (const gchar *name,
gboolean required);
void gp_menu_set_path (GpMenu *menu,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment