[virt-tools-list] [PATCH] Get rid of deprecated functions to customize widget colors

Pavel Grunt pgrunt at redhat.com
Tue Jun 28 10:08:59 UTC 2016


Hi Eduardo,

On Mon, 2016-06-27 at 18:00 -0300, Eduardo Lima (Etrunko) wrote:
> Fixes https://bugs.freedesktop.org/show_bug.cgi?id=94276
> 
> Signed-off-by: Eduardo Lima (Etrunko) <etrunko at redhat.com>
> ---
> 
> As a result of commit cc455b7f916110d7cfae6b7af753349e070c9494, setting
> custom color for background does not work anymore on my Fedora 23
> system. The status label still rendered with white color, but with the
> background with default theme color (usually light grey), it has become
> hard to read the text from the label.
> 
> I talked to Fabiano who told me that everything was working as expected
> with his recently upgraded Fedora 24 system. While trying to track and
> fix the issue, I noticed that it will only happen if the notebook tabs
> are hidden. If tabs are shown, the background color will be properly
> set.
> 
> I tracked down to Gtk+ some changes to GtkNotebook in recently released
> version 3.20, which fixed the rendering of the custom background color,
> with tabs hidden, but those could not be easily backported. Even though
> it is a change of behavior in virt-viewer, I think it is really a minor
> issue, and I decided to not spent too much time on this, so I put a
> check for Gtk+ version to decide whether or not set the custom colors.
> 
> Some screenshots to illustrate:
> 
> Gtk+ > 3.20:
>   http://imgur.com/gpuMukA
> 
> Gtk+ < 3.20:
> 
>   without this patch.: http://imgur.com/RdirSoX
>   with this patch....: http://imgur.com/9LJNeNI

I would make it more simple, stick with the system theme 
(ie http://imgur.com/9LJNeNI for all gtk versions) instead of introducing some
css just for 3.20 (is it stable btw ;-) ?). It would simplify the code, imho it
looks better and another gui tool from the family - virt-manager - uses it.

What do you think ?

Pavel

> 
> ---
>  src/virt-viewer-notebook.c | 25 ++++++++++++++-----------
>  src/virt-viewer-window.c   | 10 ----------
>  2 files changed, 14 insertions(+), 21 deletions(-)
> 
> diff --git a/src/virt-viewer-notebook.c b/src/virt-viewer-notebook.c
> index 420c914..f02779c 100644
> --- a/src/virt-viewer-notebook.c
> +++ b/src/virt-viewer-notebook.c
> @@ -71,25 +71,28 @@ static void
>  virt_viewer_notebook_init (VirtViewerNotebook *self)
>  {
>      VirtViewerNotebookPrivate *priv;
> -    GdkRGBA color;
>  
>      self->priv = GET_PRIVATE(self);
>      priv = self->priv;
>  
> -    priv->status = gtk_label_new("");
> +    /* Check for Gtk+ 3.20 to set the custom colors, because with older
> versions
> +     * it the background color will not be set correctly, so we will end up
> with
> +     * the default theme color for background (usually light grey), while the
> +     * foreground text color is white.
> +     */
> +    if (gtk_check_version(3,20,0) == NULL) {
> +        GtkStyleContext *style =
> gtk_widget_get_style_context(GTK_WIDGET(self));
> +        GtkCssProvider *css = gtk_css_provider_new();
> +        gtk_css_provider_load_from_data(css, "* { background-color: black;
> color: white; }", -1, NULL);
> +        gtk_style_context_add_provider(style, GTK_STYLE_PROVIDER(css),
> GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
> +    }
> +
>      gtk_notebook_set_show_tabs(GTK_NOTEBOOK(self), FALSE);
>      gtk_notebook_set_show_border(GTK_NOTEBOOK(self), FALSE);
> +
> +    priv->status = gtk_label_new("");
>      gtk_widget_show_all(priv->status);
>      gtk_notebook_append_page(GTK_NOTEBOOK(self), priv->status, NULL);
> -    gdk_rgba_parse(&color, "white");
> -    /* FIXME:
> -     * This method has been deprecated in 3.16.
> -     * For more details on how to deal with this in the future, please, see:
> -     * https://developer.gnome.org/gtk3/stable/GtkWidget.html#gtk-widget-over
> ride-color
> -     * For the bug report about this deprecated function, please, see:
> -     * https://bugs.freedesktop.org/show_bug.cgi?id=94276
> -     */
> -    gtk_widget_override_color(priv->status, GTK_STATE_FLAG_NORMAL, &color);
>  }
>  
>  void
> diff --git a/src/virt-viewer-window.c b/src/virt-viewer-window.c
> index 1ebb423..c59fff5 100644
> --- a/src/virt-viewer-window.c
> +++ b/src/virt-viewer-window.c
> @@ -297,7 +297,6 @@ virt_viewer_window_init (VirtViewerWindow *self)
>  {
>      VirtViewerWindowPrivate *priv;
>      GtkWidget *vbox;
> -    GdkRGBA color;
>      GSList *accels;
>  
>      self->priv = GET_PRIVATE(self);
> @@ -340,15 +339,6 @@ virt_viewer_window_init (VirtViewerWindow *self)
>      virt_viewer_window_toolbar_setup(self);
>  
>      gtk_box_pack_end(GTK_BOX(vbox), GTK_WIDGET(priv->notebook), TRUE, TRUE,
> 0);
> -    gdk_rgba_parse(&color, "black");
> -    /* FIXME:
> -     * This method has been deprecated in 3.16.
> -     * For more details on how to deal with this in the future, please, see:
> -     * https://developer.gnome.org/gtk3/stable/GtkWidget.html#gtk-widget-over
> ride-background-color
> -     * For the bug report about this deprecated function, please, see:
> -     * https://bugs.freedesktop.org/show_bug.cgi?id=94276
> -     */
> -    gtk_widget_override_background_color(GTK_WIDGET(priv->notebook),
> GTK_STATE_FLAG_NORMAL, &color);
>  
>      priv->window = GTK_WIDGET(gtk_builder_get_object(priv->builder,
> "viewer"));
>      gtk_window_add_accel_group(GTK_WINDOW(priv->window), priv->accel_group);




More information about the virt-tools-list mailing list