summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/xrandr/msd-xrandr-manager.c63
1 files changed, 62 insertions, 1 deletions
diff --git a/plugins/xrandr/msd-xrandr-manager.c b/plugins/xrandr/msd-xrandr-manager.c
index ea5446e..8aeacc4 100644
--- a/plugins/xrandr/msd-xrandr-manager.c
+++ b/plugins/xrandr/msd-xrandr-manager.c
@@ -1671,6 +1671,45 @@ status_icon_popup_menu_selection_done_cb (GtkMenuShell *menu_shell, gpointer dat
#define OUTPUT_TITLE_ITEM_BORDER 2
#define OUTPUT_TITLE_ITEM_PADDING 4
+static gboolean
+output_title_label_draw_cb (GtkWidget *widget, cairo_t *cr, gpointer data)
+{
+ MsdXrandrManager *manager = MSD_XRANDR_MANAGER (data);
+ struct MsdXrandrManagerPrivate *priv = manager->priv;
+ MateRROutputInfo *output;
+ GdkRGBA color;
+ GString *string;
+ gchar *css, *color_string;
+ GtkStyleContext *context;
+ GtkCssProvider *provider;
+
+ output = g_object_get_data (G_OBJECT (widget), "output");
+
+ mate_rr_labeler_get_rgba_for_output (priv->labeler, output, &color);
+
+ color_string = gdk_rgba_to_string (&color);
+
+ string = g_string_new(NULL);
+ g_string_append (string, ".mate-panel-menu-bar menuitem.xrandr-applet:disabled>box>label{\n");
+ g_string_append (string, "color: black;");
+ g_string_append (string, "padding-left: 4px; padding-right: 4px;");
+ g_string_append (string, "background-color:");
+ g_string_append (string, color_string);
+ g_string_append (string," }");
+
+ css = g_string_free (string, FALSE);
+
+ context = gtk_widget_get_style_context (widget);
+ provider = gtk_css_provider_new ();
+ gtk_css_provider_load_from_data (provider,css, -1, NULL);
+
+ gtk_style_context_add_provider (context,
+ GTK_STYLE_PROVIDER (provider),
+ GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+ g_object_unref (provider);
+
+ return FALSE;
+}
static void
title_item_size_allocate_cb (GtkWidget *widget, GtkAllocation *allocation, gpointer data)
@@ -1716,6 +1755,7 @@ make_menu_item_for_output_title (MsdXrandrManager *manager, MateRROutputInfo *ou
{
GtkWidget *item;
GtkStyleContext *context;
+ GtkCssProvider *provider;
GtkWidget *label;
GtkWidget *image;
GtkWidget *box;
@@ -1723,10 +1763,25 @@ make_menu_item_for_output_title (MsdXrandrManager *manager, MateRROutputInfo *ou
item = gtk_menu_item_new ();
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
- image = gtk_image_new_from_icon_name ("computer-symbolic", GTK_ICON_SIZE_MENU);
+ image = gtk_image_new_from_icon_name ("computer", GTK_ICON_SIZE_MENU);
context = gtk_widget_get_style_context (item);
gtk_style_context_add_class (context, "xrandr-applet");
+ /*Disable effects applied to icons in an insensitive menu item*/
+ context = gtk_widget_get_style_context (image);
+ provider = gtk_css_provider_new ();
+ gtk_css_provider_load_from_data (provider,
+ ".mate-panel-menu-bar menuitem.xrandr-applet:disabled>box>image{\n"
+ "opacity: 1.0; \n"
+ "-gtk-icon-effect: none; \n"
+ "}",
+ -1, NULL);
+ gtk_style_context_add_provider (context,
+ GTK_STYLE_PROVIDER (provider),
+ GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+ g_object_unref (provider);
+
+
g_signal_connect (item, "size-allocate",
G_CALLBACK (title_item_size_allocate_cb), NULL);
@@ -1747,7 +1802,13 @@ make_menu_item_for_output_title (MsdXrandrManager *manager, MateRROutputInfo *ou
gtk_container_add (GTK_CONTAINER (box), label);
gtk_container_add (GTK_CONTAINER (item), box);
+ g_signal_connect (label, "draw",
+ G_CALLBACK (output_title_label_draw_cb), manager);
+
+ g_object_set_data (G_OBJECT (label), "output", output);
+
gtk_widget_set_sensitive (item, FALSE); /* the title is not selectable */
+
gtk_widget_show_all (item);
return item;