[Xfce4-commits] [xfce/xfce4-panel] 71/73: Draw panel background with CSS and switch to GdkRGBA

noreply at xfce.org noreply at xfce.org
Sun Feb 26 16:34:52 CET 2017


This is an automated email from the git hooks/post-receive script.

andrzejr pushed a commit to branch master
in repository xfce/xfce4-panel.

commit 28133ea35fd542beea4e519df6e6534c44739481
Author: Simon Steinbeiss <simon.steinbeiss at elfenbeinturm.at>
Date:   Fri Nov 4 00:57:52 2016 +0100

    Draw panel background with CSS and switch to GdkRGBA
---
 common/panel-xfconf.c                |  27 +--
 panel/panel-application.c            |   2 +-
 panel/panel-base-window.c            | 388 +++++++++++------------------------
 panel/panel-base-window.h            |  14 +-
 panel/panel-plugin-external.c        |  19 --
 panel/panel-plugin-external.h        |   3 -
 panel/panel-preferences-dialog.c     |   9 +-
 panel/panel-preferences-dialog.glade |  58 +-----
 panel/panel-window.c                 |  19 +-
 wrapper/main.c                       |   5 +-
 wrapper/wrapper-plug.c               |  79 ++++---
 11 files changed, 193 insertions(+), 430 deletions(-)

diff --git a/common/panel-xfconf.c b/common/panel-xfconf.c
index 76feb5e..84f93c0 100644
--- a/common/panel-xfconf.c
+++ b/common/panel-xfconf.c
@@ -20,6 +20,10 @@
 #include <config.h>
 #endif
 
+#ifdef HAVE_MATH_H
+#include <math.h>
+#endif
+
 #include <dbus/dbus-glib.h>
 
 #include <common/panel-private.h>
@@ -35,9 +39,8 @@ panel_properties_store_value (XfconfChannel *channel,
                               GObject       *object,
                               const gchar   *object_property)
 {
-  GValue      value = { 0, };
-  GdkColor   *color;
-  guint16     alpha = 0xffff;
+  GValue       value = { 0, };
+  GdkRGBA     *rgba;
 #ifndef NDEBUG
   GParamSpec *pspec;
 #endif
@@ -62,20 +65,20 @@ panel_properties_store_value (XfconfChannel *channel,
   g_value_init (&value, xfconf_property_type);
   g_object_get_property (G_OBJECT (object), object_property, &value);
 
-  if (G_LIKELY (xfconf_property_type != GDK_TYPE_COLOR))
+  if (G_LIKELY (xfconf_property_type != GDK_TYPE_RGBA))
     {
-      xfconf_channel_set_property (channel, xfconf_property, &value);
+        xfconf_channel_set_property (channel, xfconf_property, &value);
     }
   else
     {
       /* work around xfconf's lack of storing colors (bug #7117) and
        * do the same as xfconf_g_property_bind_gdkcolor() does */
-      color = g_value_get_boxed (&value);
+      rgba = g_value_get_boxed (&value);
       xfconf_channel_set_array (channel, xfconf_property,
-                                XFCONF_TYPE_UINT16, &color->red,
-                                XFCONF_TYPE_UINT16, &color->green,
-                                XFCONF_TYPE_UINT16, &color->blue,
-                                XFCONF_TYPE_UINT16, &alpha,
+                                G_TYPE_DOUBLE, &rgba->red,
+                                G_TYPE_DOUBLE, &rgba->green,
+                                G_TYPE_DOUBLE, &rgba->blue,
+                                G_TYPE_DOUBLE, &rgba->alpha,
                                 G_TYPE_INVALID);
     }
 
@@ -134,10 +137,10 @@ panel_properties_bind (XfconfChannel       *channel,
       if (save_properties)
         panel_properties_store_value (channel, property, prop->type, object, prop->property);
 
-      if (G_LIKELY (prop->type != GDK_TYPE_COLOR))
+      if (G_LIKELY (prop->type != GDK_TYPE_RGBA))
         xfconf_g_property_bind (channel, property, prop->type, object, prop->property);
       else
-        xfconf_g_property_bind_gdkcolor (channel, property, object, prop->property);
+        xfconf_g_property_bind_gdkrgba (channel, property, object, prop->property);
 
       g_free (property);
     }
diff --git a/panel/panel-application.c b/panel/panel-application.c
index 4235b6f..53fdc61 100644
--- a/panel/panel-application.c
+++ b/panel/panel-application.c
@@ -297,8 +297,8 @@ panel_application_xfconf_window_bindings (PanelApplication *application,
     { "length-adjust", G_TYPE_BOOLEAN },
     { "enter-opacity", G_TYPE_UINT },
     { "leave-opacity", G_TYPE_UINT },
-    { "background-alpha", G_TYPE_UINT },
     { "background-style", G_TYPE_UINT },
+    { "background-rgba", GDK_TYPE_RGBA },
     { "background-color", GDK_TYPE_COLOR },
     { "background-image", G_TYPE_STRING },
     { "output-name", G_TYPE_STRING },
diff --git a/panel/panel-base-window.c b/panel/panel-base-window.c
index 39a5c28..bce173d 100644
--- a/panel/panel-base-window.c
+++ b/panel/panel-base-window.c
@@ -48,8 +48,6 @@ static void     panel_base_window_set_property                (GObject
 static void     panel_base_window_finalize                    (GObject              *object);
 static void     panel_base_window_screen_changed              (GtkWidget            *widget,
                                                                GdkScreen            *previous_screen);
-static gboolean panel_base_window_draw                        (GtkWidget            *widget,
-                                                               cairo_t              *cr);
 static gboolean panel_base_window_enter_notify_event          (GtkWidget            *widget,
                                                                GdkEventCrossing     *event);
 static gboolean panel_base_window_leave_notify_event          (GtkWidget            *widget,
@@ -57,10 +55,13 @@ static gboolean panel_base_window_leave_notify_event          (GtkWidget
 static void     panel_base_window_composited_changed          (GtkWidget            *widget);
 static gboolean panel_base_window_active_timeout              (gpointer              user_data);
 static void     panel_base_window_active_timeout_destroyed    (gpointer              user_data);
+static void     panel_base_window_set_background_color_css    (PanelBaseWindow      *window);
+static void     panel_base_window_set_background_image_css    (PanelBaseWindow      *window);
+static void     panel_base_window_set_background_css          (PanelBaseWindow      *window,
+                                                               gchar                *css_string);
+static void     panel_base_window_reset_background_css        (PanelBaseWindow      *window);
 static void     panel_base_window_set_plugin_data             (PanelBaseWindow      *window,
                                                                GtkCallback           func);
-static void     panel_base_window_set_plugin_background_alpha (GtkWidget            *widget,
-                                                               gpointer              user_data);
 static void     panel_base_window_set_plugin_background_color (GtkWidget            *widget,
                                                                gpointer              user_data);
 static void     panel_base_window_set_plugin_background_image (GtkWidget            *widget,
@@ -73,11 +74,11 @@ enum
   PROP_0,
   PROP_ENTER_OPACITY,
   PROP_LEAVE_OPACITY,
-  PROP_BACKGROUND_ALPHA,
   PROP_BORDERS,
   PROP_ACTIVE,
   PROP_COMPOSITED,
   PROP_BACKGROUND_STYLE,
+  PROP_BACKGROUND_RGBA,
   PROP_BACKGROUND_COLOR,
   PROP_BACKGROUND_IMAGE
 };
@@ -86,8 +87,8 @@ struct _PanelBaseWindowPrivate
 {
   PanelBorders     borders;
 
-  /* background image cache */
-  cairo_pattern_t *bg_image_cache;
+  /* background css style provider */
+  GtkCssProvider  *css_provider;
 
   /* transparency settings */
   gdouble          enter_opacity;
@@ -118,7 +119,6 @@ panel_base_window_class_init (PanelBaseWindowClass *klass)
   gobject_class->finalize = panel_base_window_finalize;
 
   gtkwidget_class = GTK_WIDGET_CLASS (klass);
-  gtkwidget_class->draw = panel_base_window_draw;
   gtkwidget_class->enter_notify_event = panel_base_window_enter_notify_event;
   gtkwidget_class->leave_notify_event = panel_base_window_leave_notify_event;
   gtkwidget_class->composited_changed = panel_base_window_composited_changed;
@@ -139,13 +139,6 @@ panel_base_window_class_init (PanelBaseWindowClass *klass)
                                                       G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
   g_object_class_install_property (gobject_class,
-                                   PROP_BACKGROUND_ALPHA,
-                                   g_param_spec_uint ("background-alpha",
-                                                      NULL, NULL,
-                                                      0, 100, 100,
-                                                      G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
-  g_object_class_install_property (gobject_class,
                                    PROP_BACKGROUND_STYLE,
                                    g_param_spec_uint ("background-style",
                                                       NULL, NULL,
@@ -155,6 +148,13 @@ panel_base_window_class_init (PanelBaseWindowClass *klass)
                                                       G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
   g_object_class_install_property (gobject_class,
+                                   PROP_BACKGROUND_RGBA,
+                                   g_param_spec_boxed ("background-rgba",
+                                                       NULL, NULL,
+                                                       GDK_TYPE_RGBA,
+                                                       G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class,
                                    PROP_BACKGROUND_COLOR,
                                    g_param_spec_boxed ("background-color",
                                                        NULL, NULL,
@@ -201,12 +201,12 @@ panel_base_window_init (PanelBaseWindow *window)
   window->priv = G_TYPE_INSTANCE_GET_PRIVATE (window, PANEL_TYPE_BASE_WINDOW, PanelBaseWindowPrivate);
 
   window->is_composited = FALSE;
-  window->background_alpha = 1.00;
   window->background_style = PANEL_BG_STYLE_NONE;
   window->background_image = NULL;
+  window->background_rgba = NULL;
   window->background_color = NULL;
 
-  window->priv->bg_image_cache = NULL;
+  window->priv->css_provider = gtk_css_provider_new ();
   window->priv->enter_opacity = 1.00;
   window->priv->leave_opacity = 1.00;
   window->priv->borders = PANEL_BORDER_NONE;
@@ -233,11 +233,12 @@ panel_base_window_get_property (GObject    *object,
                                 GValue     *value,
                                 GParamSpec *pspec)
 {
-  PanelBaseWindow        *window = PANEL_BASE_WINDOW (object);
-  PanelBaseWindowPrivate *priv = window->priv;
-  GdkRGBA                *color;
-  GdkRGBA                bg_color;
-  GtkStyleContext        *ctx;
+  PanelBaseWindow         *window = PANEL_BASE_WINDOW (object);
+  PanelBaseWindowPrivate  *priv = window->priv;
+  GdkRGBA                 *rgba;
+  GdkColor                *color;
+  GdkRGBA                  bg_color;
+  GtkStyleContext         *ctx;
 
   switch (prop_id)
     {
@@ -249,14 +250,23 @@ panel_base_window_get_property (GObject    *object,
       g_value_set_uint (value, rint (priv->leave_opacity * 100.00));
       break;
 
-    case PROP_BACKGROUND_ALPHA:
-      g_value_set_uint (value, rint (window->background_alpha * 100.00));
-      break;
-
     case PROP_BACKGROUND_STYLE:
       g_value_set_uint (value, window->background_style);
       break;
 
+    case PROP_BACKGROUND_RGBA:
+      if (window->background_rgba != NULL) {
+        rgba = window->background_rgba;
+      }
+      else
+        {
+          ctx = gtk_widget_get_style_context (GTK_WIDGET (window));
+          gtk_style_context_get_background_color (ctx, GTK_STATE_NORMAL, &bg_color);
+          rgba = &bg_color;
+        }
+      g_value_set_boxed (value, rgba);
+      break;
+
     case PROP_BACKGROUND_COLOR:
       if (window->background_color != NULL)
         color = window->background_color;
@@ -302,7 +312,9 @@ panel_base_window_set_property (GObject      *object,
   PanelBaseWindow        *window = PANEL_BASE_WINDOW (object);
   PanelBaseWindowPrivate *priv = window->priv;
   PanelBgStyle            bg_style;
+  GtkStyleContext        *context;
 
+  context = gtk_widget_get_style_context (GTK_WIDGET (window));
   switch (prop_id)
     {
     case PROP_ENTER_OPACITY:
@@ -317,41 +329,30 @@ panel_base_window_set_property (GObject      *object,
         gtk_window_set_opacity (GTK_WINDOW (object), priv->leave_opacity);
       break;
 
-    case PROP_BACKGROUND_ALPHA:
-      /* set the new background alpha */
-      window->background_alpha = g_value_get_uint (value) / 100.00;
-      if (window->is_composited)
-        gtk_widget_queue_draw (GTK_WIDGET (object));
-
-      /* send the new background alpha to the external plugins */
-      panel_base_window_set_plugin_data (window,
-          panel_base_window_set_plugin_background_alpha);
-      break;
-
     case PROP_BACKGROUND_STYLE:
       bg_style = g_value_get_uint (value);
       if (window->background_style != bg_style)
         {
           window->background_style = bg_style;
 
-          if (priv->bg_image_cache != NULL)
-            {
-              /* destroy old image cache */
-              cairo_pattern_destroy (priv->bg_image_cache);
-              priv->bg_image_cache = NULL;
-            }
-
           /* send information to external plugins */
           if (window->background_style == PANEL_BG_STYLE_IMAGE
               && window->background_image != NULL)
             {
+              panel_base_window_set_background_image_css (window);
               panel_base_window_set_plugin_data (window,
                   panel_base_window_set_plugin_background_image);
             }
-          else if (window->background_style == PANEL_BG_STYLE_NONE
-                   || (window->background_style == PANEL_BG_STYLE_COLOR
-                       && window->background_color != NULL))
+          else if (window->background_style == PANEL_BG_STYLE_NONE)
+            {
+              panel_base_window_reset_background_css (window);
+              panel_base_window_set_plugin_data (window,
+                  panel_base_window_set_plugin_background_color);
+            }
+          else if (window->background_style == PANEL_BG_STYLE_COLOR
+                   && window->background_rgba != NULL)
             {
+              panel_base_window_set_background_color_css (window);
               panel_base_window_set_plugin_data (window,
                   panel_base_window_set_plugin_background_color);
             }
@@ -361,6 +362,19 @@ panel_base_window_set_property (GObject      *object,
         }
       break;
 
+    case PROP_BACKGROUND_RGBA:
+      if (window->background_rgba != NULL)
+        gdk_rgba_free (window->background_rgba);
+      window->background_rgba = g_value_dup_boxed (value);
+
+      if (window->background_style == PANEL_BG_STYLE_COLOR)
+        {
+          panel_base_window_set_background_color_css (window);
+          panel_base_window_set_plugin_data (window,
+              panel_base_window_set_plugin_background_color);
+        }
+      break;
+
     case PROP_BACKGROUND_COLOR:
       if (window->background_color != NULL)
         gdk_color_free (window->background_color);
@@ -368,9 +382,9 @@ panel_base_window_set_property (GObject      *object,
 
       if (window->background_style == PANEL_BG_STYLE_COLOR)
         {
+          gtk_widget_queue_draw (GTK_WIDGET (window));
           panel_base_window_set_plugin_data (window,
               panel_base_window_set_plugin_background_color);
-          gtk_widget_queue_draw (GTK_WIDGET (window));
         }
       break;
 
@@ -379,18 +393,11 @@ panel_base_window_set_property (GObject      *object,
       g_free (window->background_image);
       window->background_image = g_value_dup_string (value);
 
-      /* drop old cache */
-      if (priv->bg_image_cache != NULL)
-        {
-          cairo_pattern_destroy (priv->bg_image_cache);
-          priv->bg_image_cache = NULL;
-        }
-
       if (window->background_style == PANEL_BG_STYLE_IMAGE)
         {
+          panel_base_window_set_background_image_css (window);
           panel_base_window_set_plugin_data (window,
               panel_base_window_set_plugin_background_image);
-          gtk_widget_queue_draw (GTK_WIDGET (window));
         }
       break;
 
@@ -439,12 +446,14 @@ panel_base_window_finalize (GObject *object)
   if (window->priv->active_timeout_id != 0)
     g_source_remove (window->priv->active_timeout_id);
 
-  /* release bg image data */
+  /* release bg colors data */
   g_free (window->background_image);
-  if (window->priv->bg_image_cache != NULL)
-    cairo_pattern_destroy (window->priv->bg_image_cache);
+  if (window->background_rgba != NULL)
+    gdk_rgba_free (window->background_rgba);
   if (window->background_color != NULL)
     gdk_color_free (window->background_color);
+    g_object_unref (window->priv->css_provider);
+
 
   (*G_OBJECT_CLASS (panel_base_window_parent_class)->finalize) (object);
 }
@@ -478,172 +487,6 @@ panel_base_window_screen_changed (GtkWidget *widget, GdkScreen *previous_screen)
 
 
 static gboolean
-panel_base_window_draw (GtkWidget *widget,
-                        cairo_t   *cr)
-{
-  const GdkRGBA          *color;
-  GdkRGBA                 bg_rgba;
-  GtkSymbolicColor       *literal;
-  GtkSymbolicColor       *shade;
-  PanelBaseWindow        *window = PANEL_BASE_WINDOW (widget);
-  PanelBaseWindowPrivate *priv = window->priv;
-  gdouble                 alpha;
-  gdouble                 width = gtk_widget_get_allocated_width (widget);
-  gdouble                 height = gtk_widget_get_allocated_height (widget);
-  const gdouble           dashes[] = { 4.00, 4.00 };
-  GTimeVal                timeval;
-  GdkPixbuf              *pixbuf;
-  GError                 *error = NULL;
-  cairo_matrix_t          matrix = { 1, 0, 0, 1, 0, 0 }; /* identity matrix */
-  GtkStyleContext        *ctx;
-
-  if (!gtk_widget_is_drawable (widget))
-    return FALSE;
-
-  ctx = gtk_widget_get_style_context (widget);
-
-  /* create cairo context and set some default properties */
-  cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE);
-  cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
-  cairo_set_line_width (cr, 1.00);
-
-  /* get background alpha */
-  alpha = window->is_composited ? window->background_alpha : 1.00;
-
-  if (window->background_style == PANEL_BG_STYLE_IMAGE)
-    {
-      if (G_LIKELY (priv->bg_image_cache != NULL))
-        {
-          if (G_UNLIKELY (priv->active_timeout_id != 0))
-            cairo_matrix_init_translate (&matrix, -1, -1);
-
-          cairo_set_source (cr, priv->bg_image_cache);
-          cairo_pattern_set_matrix (priv->bg_image_cache, &matrix);
-          cairo_paint (cr);
-        }
-      else if (window->background_image != NULL)
-        {
-          /* load the image in a pixbuf */
-          pixbuf = gdk_pixbuf_new_from_file (window->background_image, &error);
-
-          if (G_LIKELY (pixbuf != NULL))
-            {
-              gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0);
-              g_object_unref (G_OBJECT (pixbuf));
-
-              priv->bg_image_cache = cairo_get_source (cr);
-              cairo_pattern_reference (priv->bg_image_cache);
-              cairo_pattern_set_extend (priv->bg_image_cache, CAIRO_EXTEND_REPEAT);
-              cairo_paint (cr);
-            }
-          else
-            {
-              /* print error message */
-              g_warning ("Background image disabled, \"%s\" could not be loaded: %s",
-                         window->background_image, error != NULL ? error->message : "No error");
-              g_error_free (error);
-
-              /* disable background image mode */
-              window->background_style = PANEL_BG_STYLE_NONE;
-            }
-        }
-    }
-  else
-    {
-      /* get the background color */
-      if (window->background_style == PANEL_BG_STYLE_COLOR
-          && window->background_color != NULL)
-        {
-          color = window->background_color;
-          panel_util_set_source_rgba (cr, color, alpha);
-        }
-      else
-        {
-          gtk_style_context_get_background_color (ctx, GTK_STATE_NORMAL, &bg_rgba);
-          bg_rgba.alpha = alpha;
-          gdk_cairo_set_source_rgba (cr, &bg_rgba);
-        }
-      cairo_paint (cr);
-    }
-
-  /* draw marching ants selection if the timeout is running */
-  if (G_UNLIKELY (priv->active_timeout_id != 0))
-    {
-      /* red color, no alpha */
-      cairo_set_source_rgb (cr, 1.00, 0.00, 0.00);
-
-      /* set dash based on time (odd/even) */
-      g_get_current_time (&timeval);
-      cairo_set_dash (cr, dashes, G_N_ELEMENTS (dashes),
-                      (timeval.tv_sec % 4) * 2);
-
-      /* draw rectangle */
-      cairo_rectangle (cr, 0.5, 0.5, width - 1, height - 1);
-      cairo_stroke (cr);
-    }
-  else if (window->background_style == PANEL_BG_STYLE_NONE)
-    {
-      if (PANEL_HAS_FLAG (priv->borders, PANEL_BORDER_BOTTOM | PANEL_BORDER_RIGHT))
-        {
-          /* use dark color for buttom and right line */
-          gtk_style_context_get_background_color (ctx, GTK_STATE_NORMAL, &bg_rgba);
-          literal = gtk_symbolic_color_new_literal (&bg_rgba);
-          shade = gtk_symbolic_color_new_shade (literal, 0.7);
-          gtk_symbolic_color_unref (literal);
-          gtk_symbolic_color_resolve (shade, NULL, &bg_rgba);
-          gtk_symbolic_color_unref (shade);
-          bg_rgba.alpha = alpha;
-          gdk_cairo_set_source_rgba (cr, &bg_rgba);
-
-          if (PANEL_HAS_FLAG (priv->borders, PANEL_BORDER_BOTTOM))
-            {
-              cairo_move_to (cr, 0.50, height - 1);
-              cairo_rel_line_to (cr, width, 0.50);
-            }
-
-          if (PANEL_HAS_FLAG (priv->borders, PANEL_BORDER_RIGHT))
-            {
-              cairo_move_to (cr, width - 1, 0.50);
-              cairo_rel_line_to (cr, 0.50, height);
-            }
-
-          cairo_stroke (cr);
-        }
-
-      if (PANEL_HAS_FLAG (priv->borders, PANEL_BORDER_TOP | PANEL_BORDER_LEFT))
-        {
-          /* use light color for top and left line */
-          gtk_style_context_get_background_color (ctx, GTK_STATE_NORMAL, &bg_rgba);
-          literal = gtk_symbolic_color_new_literal (&bg_rgba);
-          shade = gtk_symbolic_color_new_shade (literal, 1.3);
-          gtk_symbolic_color_unref (literal);
-          gtk_symbolic_color_resolve (shade, NULL, &bg_rgba);
-          gtk_symbolic_color_unref (shade);
-          bg_rgba.alpha = alpha;
-          gdk_cairo_set_source_rgba (cr, &bg_rgba);
-
-          if (PANEL_HAS_FLAG (priv->borders, PANEL_BORDER_LEFT))
-            {
-              cairo_move_to (cr, 0.50, 0.50);
-              cairo_rel_line_to (cr, 0.50, height);
-            }
-
-          if (PANEL_HAS_FLAG (priv->borders, PANEL_BORDER_TOP))
-            {
-              cairo_move_to (cr, 0.50, 0.50);
-              cairo_rel_line_to (cr, width, 0.50);
-            }
-
-          cairo_stroke (cr);
-        }
-    }
-
-  return FALSE;
-}
-
-
-
-static gboolean
 panel_base_window_enter_notify_event (GtkWidget        *widget,
                                       GdkEventCrossing *event)
 {
@@ -701,13 +544,6 @@ panel_base_window_composited_changed (GtkWidget *widget)
                "%p: compositing=%s", window,
                PANEL_DEBUG_BOOL (window->is_composited));
 
-  /* clear cairo image cache */
-  if (window->priv->bg_image_cache != NULL)
-    {
-      cairo_pattern_destroy (window->priv->bg_image_cache);
-      window->priv->bg_image_cache = NULL;
-    }
-
   if (window->is_composited != was_composited)
     g_object_notify (G_OBJECT (widget), "composited");
 
@@ -746,29 +582,64 @@ panel_base_window_active_timeout_destroyed (gpointer user_data)
 
 
 static void
-panel_base_window_set_plugin_data (PanelBaseWindow *window,
-                                   GtkCallback      func)
-{
-  GtkWidget *itembar;
+panel_base_window_set_background_color_css (PanelBaseWindow *window) {
+  gchar                  *css_string;
+  panel_return_if_fail (window->background_rgba != NULL);
+  css_string = g_strdup_printf (".xfce4-panel.background { background-image: none; background-color: %s; }"
+                                ".xfce4-panel.background button { background: transparent; }",
+                                gdk_rgba_to_string (window->background_rgba));
+  panel_base_window_set_background_css (window, css_string);
+}
 
-  itembar = gtk_bin_get_child (GTK_BIN (window));
-  if (G_LIKELY (itembar != NULL))
-    gtk_container_foreach (GTK_CONTAINER (itembar), func, window);
+
+
+static void
+panel_base_window_set_background_image_css (PanelBaseWindow *window) {
+  gchar                  *css_string;
+  panel_return_if_fail (window->background_image != NULL);
+  css_string = g_strdup_printf (".xfce4-panel.background { background-image: url('%s'); }"
+                                ".xfce4-panel.background button { background: transparent; }",
+                                window->background_image);
+  panel_base_window_set_background_css (window, css_string);
 }
 
 
 
 static void
-panel_base_window_set_plugin_background_alpha (GtkWidget *widget,
-                                               gpointer   user_data)
+panel_base_window_set_background_css (PanelBaseWindow *window, gchar *css_string) {
+  GtkStyleContext        *context;
+
+  context = gtk_widget_get_style_context (GTK_WIDGET (window));
+  /* Reset the css style provider */
+  gtk_style_context_remove_provider (context, GTK_STYLE_PROVIDER (window->priv->css_provider));
+  gtk_css_provider_load_from_data (window->priv->css_provider, css_string, -1, NULL);
+  gtk_style_context_add_provider (context,
+                                  GTK_STYLE_PROVIDER (window->priv->css_provider),
+                                  GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+  g_free (css_string);
+}
+
+
+
+static void
+panel_base_window_reset_background_css (PanelBaseWindow *window) {
+  GtkStyleContext        *context;
+
+  context = gtk_widget_get_style_context (GTK_WIDGET (window));
+  gtk_style_context_remove_provider (context, GTK_STYLE_PROVIDER (window->priv->css_provider));
+}
+
+
+
+static void
+panel_base_window_set_plugin_data (PanelBaseWindow *window,
+                                   GtkCallback      func)
 {
-  panel_return_if_fail (XFCE_IS_PANEL_PLUGIN_PROVIDER (widget));
-  panel_return_if_fail (PANEL_IS_BASE_WINDOW (user_data));
+  GtkWidget *itembar;
 
-  /* if the plugin is external, send the new alpha value to the wrapper/socket  */
-  if (PANEL_IS_PLUGIN_EXTERNAL (widget))
-    panel_plugin_external_set_background_alpha (PANEL_PLUGIN_EXTERNAL (widget),
-        PANEL_BASE_WINDOW (user_data)->background_alpha);
+  itembar = gtk_bin_get_child (GTK_BIN (window));
+  if (G_LIKELY (itembar != NULL))
+    gtk_container_foreach (GTK_CONTAINER (itembar), func, window);
 }
 
 
@@ -784,8 +655,7 @@ panel_base_window_set_plugin_background_color (GtkWidget *widget,
   panel_return_if_fail (PANEL_IS_BASE_WINDOW (user_data));
 
   /* send null if the style is not a bg color */
-  color = window->background_style == PANEL_BG_STYLE_COLOR ? window->background_color : NULL;
-
+  color = window->background_style == PANEL_BG_STYLE_COLOR ? window->background_rgba : NULL;
   if (PANEL_IS_PLUGIN_EXTERNAL (widget))
     panel_plugin_external_set_background_color (PANEL_PLUGIN_EXTERNAL (widget), color);
 }
@@ -856,23 +726,3 @@ panel_base_window_get_borders (PanelBaseWindow *window)
 
   return priv->borders;
 }
-
-
-
-void
-panel_util_set_source_rgba (cairo_t        *cr,
-                            const GdkRGBA  *color,
-                            gdouble         alpha)
-{
-  panel_return_if_fail (alpha >= 0.00 && alpha <= 1.00);
-  panel_return_if_fail (color != NULL);
-
-  if (G_LIKELY (alpha == 1.00))
-    cairo_set_source_rgb (cr, color->red,
-                          color->green,
-                          color->blue);
-  else
-    cairo_set_source_rgba (cr, color->red,
-                           color->green,
-                           color->blue, alpha);
-}
diff --git a/panel/panel-base-window.h b/panel/panel-base-window.h
index 95016ab..3bbd8d5 100644
--- a/panel/panel-base-window.h
+++ b/panel/panel-base-window.h
@@ -64,12 +64,12 @@ struct _PanelBaseWindow
   /*< private >*/
   PanelBaseWindowPrivate *priv;
 
-  guint                   is_composited : 1;
+  guint                    is_composited : 1;
 
-  gdouble                 background_alpha;
-  PanelBgStyle            background_style;
-  GdkRGBA                *background_color;
-  gchar                  *background_image;
+  PanelBgStyle             background_style;
+  GdkRGBA                 *background_rgba;
+  GdkColor                *background_color;
+  gchar                   *background_image;
 };
 
 GType        panel_base_window_get_type    (void) G_GNUC_CONST;
@@ -84,10 +84,6 @@ void         panel_base_window_set_borders (PanelBaseWindow *window,
                                             PanelBorders     borders);
 PanelBorders panel_base_window_get_borders (PanelBaseWindow *window);
 
-void         panel_util_set_source_rgba    (cairo_t         *cr,
-                                            const GdkRGBA   *color,
-                                            gdouble          alpha);
-
 G_END_DECLS
 
 #endif /* !__PANEL_BASE_WINDOW_H__ */
diff --git a/panel/panel-plugin-external.c b/panel/panel-plugin-external.c
index c263902..16ef221 100644
--- a/panel/panel-plugin-external.c
+++ b/panel/panel-plugin-external.c
@@ -1116,25 +1116,6 @@ panel_plugin_external_restart (PanelPluginExternal *external)
 
 
 void
-panel_plugin_external_set_background_alpha (PanelPluginExternal *external,
-                                            gdouble              alpha)
-{
-  GValue value = { 0, };
-
-  panel_return_if_fail (PANEL_IS_PLUGIN_EXTERNAL (external));
-
-  g_value_init (&value, G_TYPE_DOUBLE);
-  g_value_set_double (&value, alpha);
-
-  panel_plugin_external_queue_add (external, PROVIDER_PROP_TYPE_SET_BACKGROUND_ALPHA,
-                                   &value);
-
-  g_value_unset (&value);
-}
-
-
-
-void
 panel_plugin_external_set_background_color (PanelPluginExternal *external,
                                             const GdkRGBA       *color)
 {
diff --git a/panel/panel-plugin-external.h b/panel/panel-plugin-external.h
index 83537be..e6606f0 100644
--- a/panel/panel-plugin-external.h
+++ b/panel/panel-plugin-external.h
@@ -86,9 +86,6 @@ GType        panel_plugin_external_get_type             (void) G_GNUC_CONST;
 
 void         panel_plugin_external_restart              (PanelPluginExternal  *external);
 
-void         panel_plugin_external_set_background_alpha (PanelPluginExternal  *external,
-                                                         gdouble               alpha);
-
 void         panel_plugin_external_set_background_color (PanelPluginExternal  *external,
                                                          const GdkRGBA        *color);
 
diff --git a/panel/panel-preferences-dialog.c b/panel/panel-preferences-dialog.c
index 5480507..1e3292a 100644
--- a/panel/panel-preferences-dialog.c
+++ b/panel/panel-preferences-dialog.c
@@ -443,18 +443,18 @@ panel_preferences_dialog_bindings_update (PanelPreferencesDialog *dialog)
   panel_preferences_dialog_bindings_add (dialog, "nrows", "value", 0);
   panel_preferences_dialog_bindings_add (dialog, "length", "value", 0);
   panel_preferences_dialog_bindings_add (dialog, "length-adjust", "active", 0);
-  panel_preferences_dialog_bindings_add (dialog, "background-alpha", "value", 0);
   panel_preferences_dialog_bindings_add (dialog, "enter-opacity", "value", 0);
   panel_preferences_dialog_bindings_add (dialog, "leave-opacity", "value", 0);
   panel_preferences_dialog_bindings_add (dialog, "composited", "sensitive", G_BINDING_SYNC_CREATE);
   panel_preferences_dialog_bindings_add (dialog, "background-style", "active", 0);
-  panel_preferences_dialog_bindings_add (dialog, "background-color", "color", 0);
+  panel_preferences_dialog_bindings_add (dialog, "background-rgba", "rgba", 0);
 
   /* watch image changes from the panel */
   dialog->bg_image_notify_handler_id = g_signal_connect_swapped (G_OBJECT (dialog->active),
       "notify::background-image", G_CALLBACK (panel_preferences_dialog_bg_image_notified), dialog);
   panel_preferences_dialog_bg_image_notified (dialog);
 
+
   /* get run mode of the driver (multiple screens or randr) */
   screen = gtk_widget_get_screen (GTK_WIDGET (dialog->active));
   display = gtk_widget_get_display (GTK_WIDGET (dialog->active));
@@ -630,11 +630,10 @@ panel_preferences_dialog_bg_style_changed (PanelPreferencesDialog *dialog)
   panel_return_if_fail (GTK_IS_COMBO_BOX (object));
   active = gtk_combo_box_get_active (GTK_COMBO_BOX (object));
 
-  object = gtk_builder_get_object (GTK_BUILDER (dialog), "bg-alpha-box");
+  object = gtk_builder_get_object (GTK_BUILDER (dialog), "background-rgba");
   panel_return_if_fail (GTK_IS_WIDGET (object));
   g_object_get (G_OBJECT (dialog->active), "composited", &composited, NULL);
-  g_object_set (G_OBJECT (object), "visible", active < 2,
-                "sensitive", composited, NULL);
+  gtk_color_chooser_set_use_alpha (object, composited);
 
   object = gtk_builder_get_object (GTK_BUILDER (dialog), "bg-color-box");
   panel_return_if_fail (GTK_IS_WIDGET (object));
diff --git a/panel/panel-preferences-dialog.glade b/panel/panel-preferences-dialog.glade
index 75a7128..7b889b0 100644
--- a/panel/panel-preferences-dialog.glade
+++ b/panel/panel-preferences-dialog.glade
@@ -3,12 +3,6 @@
 <interface>
   <requires lib="gtk+" version="3.20"/>
   <requires lib="libxfce4ui-2" version="4.12"/>
-  <object class="GtkAdjustment" id="background-alpha">
-    <property name="upper">100</property>
-    <property name="value">100</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">10</property>
-  </object>
   <object class="GtkAdjustment" id="enter-opacity">
     <property name="upper">100</property>
     <property name="value">100</property>
@@ -674,47 +668,6 @@
                               </packing>
                             </child>
                             <child>
-                              <object class="GtkBox" id="bg-alpha-box">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="spacing">12</property>
-                                <child>
-                                  <object class="GtkLabel" id="label15">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="label" translatable="yes">_Alpha:</property>
-                                    <property name="use_underline">True</property>
-                                    <property name="mnemonic_widget">bg-alpha-scale</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkScale" id="bg-alpha-scale">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="tooltip_text" translatable="yes">Alpha value of the panel background, with 0 being fully transparent and 100 fully opaque.</property>
-                                    <property name="adjustment">background-alpha</property>
-                                    <property name="digits">0</property>
-                                    <property name="value_pos">right</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">True</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                            <child>
                               <object class="GtkBox" id="bg-color-box">
                                 <property name="visible">True</property>
                                 <property name="can_focus">False</property>
@@ -725,7 +678,6 @@
                                     <property name="can_focus">False</property>
                                     <property name="label" translatable="yes">C_olor:</property>
                                     <property name="use_underline">True</property>
-                                    <property name="mnemonic_widget">background-color</property>
                                   </object>
                                   <packing>
                                     <property name="expand">False</property>
@@ -734,12 +686,12 @@
                                   </packing>
                                 </child>
                                 <child>
-                                  <object class="GtkColorButton" id="background-color">
+                                  <object class="GtkColorButton" id="background-rgba">
                                     <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
+                                    <property name="can_focus">False</property>
                                     <property name="receives_default">True</property>
                                     <property name="title" translatable="yes">Pick a Panel Color</property>
-                                    <property name="rgba">rgb(0,0,0)</property>
+                                    <property name="rgba">rgb(217,64,217)</property>
                                   </object>
                                   <packing>
                                     <property name="expand">False</property>
@@ -751,7 +703,7 @@
                               <packing>
                                 <property name="expand">False</property>
                                 <property name="fill">True</property>
-                                <property name="position">2</property>
+                                <property name="position">1</property>
                               </packing>
                             </child>
                             <child>
@@ -789,7 +741,7 @@
                               <packing>
                                 <property name="expand">False</property>
                                 <property name="fill">True</property>
-                                <property name="position">3</property>
+                                <property name="position">2</property>
                               </packing>
                             </child>
                           </object>
diff --git a/panel/panel-window.c b/panel/panel-window.c
index 140d439..3e00351 100644
--- a/panel/panel-window.c
+++ b/panel/panel-window.c
@@ -777,7 +777,6 @@ panel_window_draw (GtkWidget *widget,
   guint             xx, yy, i;
   gint              xs, xe, ys, ye;
   gint              handle_w, handle_h;
-  gdouble           alpha = 1.00;
   GtkWidget        *child;
   GtkStyleContext  *ctx;
 
@@ -810,10 +809,6 @@ panel_window_draw (GtkWidget *widget,
   cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE);
   cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
 
-  /* alpha color */
-  if (PANEL_BASE_WINDOW (window)->is_composited)
-    alpha = MAX (0.50, PANEL_BASE_WINDOW (window)->background_alpha);
-
   ctx = gtk_widget_get_style_context (widget);
   gtk_style_context_get_background_color (ctx, GTK_STATE_NORMAL, &bg_rgba);
   literal = gtk_symbolic_color_new_literal (&bg_rgba);
@@ -824,8 +819,8 @@ panel_window_draw (GtkWidget *widget,
   gtk_symbolic_color_resolve (shade, NULL, &dark_rgba);
   gtk_symbolic_color_unref (shade);
   gtk_symbolic_color_unref (literal);
-  light_rgba.alpha = alpha;
-  dark_rgba.alpha = alpha;
+  light_rgba.alpha = bg_rgba.alpha;
+  dark_rgba.alpha = bg_rgba.alpha;
 
   for (i = HANDLE_PIXELS; i >= HANDLE_PIXELS - 1; i--)
     {
@@ -2318,8 +2313,8 @@ panel_window_set_autohide (PanelWindow *window,
   GtkWidget   *popup;
   guint        i;
   const gchar *properties[] = { "enter-opacity", "leave-opacity",
-                                "background-alpha", "borders",
-                                "background-style", "background-color",
+                                "borders", "background-style",
+                                "background-color",
                                 "role", "screen" };
 
   panel_return_if_fail (PANEL_IS_WINDOW (window));
@@ -2753,12 +2748,6 @@ panel_window_set_povider_info (PanelWindow *window,
 
   if (PANEL_IS_PLUGIN_EXTERNAL (provider))
     {
-      if (moving_to_other_panel || base_window->background_alpha < 1.0)
-        {
-          panel_plugin_external_set_background_alpha (PANEL_PLUGIN_EXTERNAL (provider),
-              base_window->background_alpha);
-        }
-
       if (base_window->background_style == PANEL_BG_STYLE_COLOR)
         {
           panel_plugin_external_set_background_color (PANEL_PLUGIN_EXTERNAL (provider),
diff --git a/wrapper/main.c b/wrapper/main.c
index 0a19ec6..d766741 100644
--- a/wrapper/main.c
+++ b/wrapper/main.c
@@ -109,15 +109,12 @@ wrapper_gproxy_set (DBusGProxy              *dbus_gproxy,
           gtk_widget_set_sensitive (GTK_WIDGET (provider), g_value_get_boolean (value));
           break;
 
-        case PROVIDER_PROP_TYPE_SET_BACKGROUND_ALPHA:
         case PROVIDER_PROP_TYPE_SET_BACKGROUND_COLOR:
         case PROVIDER_PROP_TYPE_SET_BACKGROUND_IMAGE:
         case PROVIDER_PROP_TYPE_ACTION_BACKGROUND_UNSET:
           plug = g_object_get_qdata (G_OBJECT (provider), plug_quark);
 
-          if (type == PROVIDER_PROP_TYPE_SET_BACKGROUND_ALPHA)
-            wrapper_plug_set_background_alpha (plug, g_value_get_double (value));
-          else if (type == PROVIDER_PROP_TYPE_SET_BACKGROUND_COLOR)
+          if (type == PROVIDER_PROP_TYPE_SET_BACKGROUND_COLOR)
             wrapper_plug_set_background_color (plug, g_value_get_string (value));
           else if (type == PROVIDER_PROP_TYPE_SET_BACKGROUND_IMAGE)
             wrapper_plug_set_background_image (plug, g_value_get_string (value));
diff --git a/wrapper/wrapper-plug.c b/wrapper/wrapper-plug.c
index b7592fc..48cdc8b 100644
--- a/wrapper/wrapper-plug.c
+++ b/wrapper/wrapper-plug.c
@@ -51,8 +51,11 @@ struct _WrapperPlug
   GtkPlug __parent__;
 
   /* background information */
-  gdouble          background_alpha;
+#if GTK_CHECK_VERSION (3, 0, 0)
+  GdkRGBA         *background_rgba;
+#else
   GdkColor        *background_color;
+#endif
   gchar           *background_image;
   cairo_pattern_t *background_image_cache;
 };
@@ -94,15 +97,16 @@ wrapper_plug_init (WrapperPlug *plug)
   GdkVisual       *visual = NULL;
   GdkScreen       *screen;
   GtkStyleContext *context;
-  GtkCssProvider  *provider = gtk_css_provider_new();
-  gchar           *css_string;
 #else
   GdkColormap *colormap = NULL;
   GdkScreen   *screen;
 #endif
 
-  plug->background_alpha = 1.00;
+#if GTK_CHECK_VERSION (3, 0, 0)
+  plug->background_rgba = NULL;
+#else
   plug->background_color = NULL;
+#endif
   plug->background_image = NULL;
   plug->background_image_cache = NULL;
 
@@ -128,17 +132,6 @@ wrapper_plug_init (WrapperPlug *plug)
   context = gtk_widget_get_style_context (GTK_WIDGET (plug));
   gtk_style_context_add_class (context, "panel");
   gtk_style_context_add_class (context, "xfce4-panel");
-
-  /* We need to set the plugin button to transparent and let everything else
-   * be in the theme or panel's color */
-  css_string = g_strdup_printf (".xfce4-panel button { background-color: transparent; }");
-  gtk_css_provider_load_from_data (provider, css_string, -1, NULL);
-  gtk_style_context_add_provider (context,
-                                  GTK_STYLE_PROVIDER (provider),
-                                  GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
-
-  g_free (css_string);
-  g_object_unref (provider);
 #endif
 }
 
@@ -161,9 +154,8 @@ wrapper_plug_draw (GtkWidget *widget,
 {
   WrapperPlug     *plug = WRAPPER_PLUG (widget);
   GtkStyleContext *style;
-  const GdkColor  *color;
+  const GdkRGBA   *color;
   GdkRGBA          rgba;
-  gdouble          alpha;
   GdkPixbuf       *pixbuf;
   GError          *error = NULL;
 
@@ -212,20 +204,19 @@ wrapper_plug_draw (GtkWidget *widget,
     }
   else
     {
-      alpha = gtk_widget_is_composited (GTK_WIDGET (plug)) ? plug->background_alpha : 1.00;
       cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
 
-      /* get the background gdk color */
-      if (plug->background_color != NULL)
+      /* get the background gdk rgba */
+      if (plug->background_rgba != NULL)
         {
-          color = plug->background_color;
-          cairo_set_source_rgba (cr, PANEL_GDKCOLOR_TO_DOUBLE (color), alpha);
+          color = plug->background_rgba;
+          cairo_set_source_rgba (cr, color->red, color->green,
+                                 color->blue, color->alpha);
         }
       else
         {
           style = gtk_widget_get_style_context (widget);
           gtk_style_context_get_background_color (style, GTK_STATE_FLAG_NORMAL, &rgba);
-          rgba.alpha = alpha;
           gdk_cairo_set_source_rgba (cr, &rgba);
         }
 
@@ -296,9 +287,7 @@ wrapper_plug_expose_event (GtkWidget      *widget,
         }
       else
         {
-          alpha = gtk_widget_is_composited (GTK_WIDGET (plug)) ? plug->background_alpha : 1.00;
-
-          if (alpha < 1.00 || plug->background_color != NULL)
+          if (plug->background_color != NULL)
             {
               /* get the background gdk color */
               if (plug->background_color != NULL)
@@ -308,8 +297,8 @@ wrapper_plug_expose_event (GtkWidget      *widget,
 
               /* draw the background color */
               cr = gdk_cairo_create (widget->window);
+              cairo_set_source_rgba (cr, color->red, color->green, color->blue, 1.00);
               cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
-              cairo_set_source_rgba (cr, PANEL_GDKCOLOR_TO_DOUBLE (color), alpha);
               gdk_cairo_rectangle (cr, &event->area);
               cairo_fill (cr);
               cairo_destroy (cr);
@@ -328,9 +317,15 @@ wrapper_plug_background_reset (WrapperPlug *plug)
 {
   panel_return_if_fail (WRAPPER_IS_PLUG (plug));
 
+#if GTK_CHECK_VERSION (3, 0, 0)
+  if (plug->background_rgba != NULL)
+    gdk_rgba_free (plug->background_rgba);
+  plug->background_rgba = NULL;
+#else
   if (plug->background_color != NULL)
     gdk_color_free (plug->background_color);
   plug->background_color = NULL;
+#endif
 
   if (plug->background_image_cache != NULL)
     cairo_pattern_destroy (plug->background_image_cache);
@@ -362,23 +357,27 @@ wrapper_plug_new (GdkNativeWindow socket_id)
 
 
 
+#if GTK_CHECK_VERSION (3, 0, 0)
 void
-wrapper_plug_set_background_alpha (WrapperPlug *plug,
-                                   gdouble      alpha)
+wrapper_plug_set_background_color (WrapperPlug *plug,
+                                   const gchar *color_string)
 {
-  panel_return_if_fail (WRAPPER_IS_PLUG (plug));
-  panel_return_if_fail (GTK_IS_WIDGET (plug));
+  GdkRGBA                 color;
+  GtkStyleContext        *context;
+  GtkCssProvider         *provider = gtk_css_provider_new();
+  gchar                  *css_string;
 
-  /* set the alpha */
-  plug->background_alpha = CLAMP (alpha, 0.00, 1.00);
-
-  /* redraw */
-  if (gtk_widget_is_composited (GTK_WIDGET (plug)))
-    gtk_widget_queue_draw (GTK_WIDGET (plug));
-}
+  panel_return_if_fail (WRAPPER_IS_PLUG (plug));
 
+  wrapper_plug_background_reset (plug);
 
+  if (color_string != NULL
+      && gdk_rgba_parse (&color, color_string))
+    plug->background_rgba = gdk_rgba_copy (&color);
 
+  gtk_widget_queue_draw (GTK_WIDGET (plug));
+}
+#else
 
 void
 wrapper_plug_set_background_color (WrapperPlug *plug,
@@ -390,14 +389,14 @@ wrapper_plug_set_background_color (WrapperPlug *plug,
 
   wrapper_plug_background_reset (plug);
 
+
   if (color_string != NULL
       && gdk_color_parse (color_string, &color))
     plug->background_color = gdk_color_copy (&color);
 
   gtk_widget_queue_draw (GTK_WIDGET (plug));
 }
-
-
+#endif
 
 void
 wrapper_plug_set_background_image (WrapperPlug *plug,

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list