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@xxxxxxxxxx> > --- > > 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); _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list