diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/xrandr/msd-xrandr-manager.c | 63 |
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; |