diff -ruN fe-gtk.orig/gtkutil.c fe-gtk/gtkutil.c --- fe-gtk.orig/gtkutil.c 2006-09-06 17:23:49.000000000 +0200 +++ fe-gtk/gtkutil.c 2007-11-04 16:29:36.000000000 +0100 @@ -536,6 +536,14 @@ GtkWidget *win; win = gtk_window_new (GTK_WINDOW_TOPLEVEL); + GdkScreen *screen; + GdkColormap *colormap; + screen = gtk_widget_get_screen(GTK_WIDGET(win)); + colormap = gdk_screen_get_rgba_colormap(screen); + if(colormap != NULL && gdk_screen_is_composited (screen)) + { + gtk_widget_set_colormap(GTK_WIDGET(win), colormap); + } gtkutil_set_icon (win); gtk_window_set_title (GTK_WINDOW (win), title); gtk_window_set_default_size (GTK_WINDOW (win), width, height); diff -ruN fe-gtk.orig/xtext.c fe-gtk/xtext.c --- fe-gtk.orig/xtext.c 2006-09-06 17:23:49.000000000 +0200 +++ fe-gtk/xtext.c 2007-11-04 16:39:47.000000000 +0100 @@ -897,6 +897,15 @@ gdk_window_set_user_data (widget->window, widget); xtext->depth = gdk_drawable_get_visual (widget->window)->depth; + if(xtext->depth == 32) + { + if(xtext->transparent) + { + guint8* pixel = &xtext->palette[XTEXT_BG]; + pixel[3] = 0xdd; + } + xtext->transparent = FALSE; + } val.subwindow_mode = GDK_INCLUDE_INFERIORS; val.graphics_exposures = 0; @@ -3924,6 +3933,29 @@ { GdkGCValues val; + /* rgba mode */ + if(xtext->depth == 32) + { + if(trans) + { + guint8* pixel = &xtext->palette[XTEXT_BG]; + pixel[3] = 0xdd; + } + else + { + guint8* pixel = &xtext->palette[XTEXT_BG]; + pixel[3] = 0xff; + } + xtext_set_fg (xtext, xtext->fgc, XTEXT_FG); + xtext_set_bg (xtext, xtext->fgc, XTEXT_BG); + xtext_set_fg (xtext, xtext->bgc, XTEXT_BG); + /* rgba mode breaks the old transparency mechanism + * X11 Bad Match. */ + trans = FALSE; + shaded = FALSE; + pixmap = 0; + } + #if !defined(USE_XLIB) && !defined(WIN32) shaded = FALSE; trans = FALSE;