[virt-tools-list] [PATCH] Get rid of deprecated functions to customize widget colors
Fabiano Fidêncio
fidencio at redhat.com
Tue Jun 28 09:46:02 UTC 2016
Etrunko,
On Mon, Jun 27, 2016 at 11:00 PM, Eduardo Lima (Etrunko)
<etrunko at redhat.com> 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.
Do you have the commit hash? Would be nice to have it in the commit log.
> 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 really don't like to workaround Gtk+ issues on our side, but in this
case it seems to be the way to go.
Daniel, Jonathon, Pavel ... I want to hear from you guys here as well.
> ---
> 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) {
Please, use the compile time check instead of the runtime one.
#if GTK_CHECK_VERSION(3,20,0) ...
> + 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-override-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-override-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);
> --
> 2.5.5
>
> _______________________________________________
> virt-tools-list mailing list
> virt-tools-list at redhat.com
> https://www.redhat.com/mailman/listinfo/virt-tools-list
Reviewed-by: Fabiano Fidêncio <fidencio at redhat.com>
More information about the virt-tools-list
mailing list