GtkSharp on Linux
I have been trying to move to Chromium/CEF for many years now, but have never gotten it to work on Linux with GtkSharp.
Could someone help me out getting this to work ?
I have tried the following code from a pull request on cef https://bitbucket.org/chromiumembedded/cef/pull-requests/303/cefclient-port-to-gtk3/diff
#include <gdk/gdk.h>
#include <gdk/gdkx.h>
#include <gtk/gtk.h>
#include <X11/Xlib.h>
void UseDefaultX11VisualForGtk (GtkWidget* widget)
{
#if GTK_CHECK_VERSION(3, 15, 1)
// GTK+ > 3.15.1 uses an X11 visual optimized for GTK+'s OpenGL stuff
// since revid dae447728d: https://github.com/GNOME/gtk/commit/dae447728d
// However, it breaks CEF: https://github.com/cztomczak/cefcapi/issues/9
// Let's use the default X11 visual instead of the GTK's blessed one.
// Copied from: https://github.com/cztomczak/cefcapi.
GdkScreen* screen = gdk_screen_get_default();
GList* visuals = gdk_screen_list_visuals(screen);
GdkX11Screen* x11_screen = GDK_X11_SCREEN(screen);
if (x11_screen == NULL)
return;
Visual* default_xvisual = DefaultVisual(GDK_SCREEN_XDISPLAY(x11_screen),
GDK_SCREEN_XNUMBER(x11_screen));
GList* cursor = visuals;
while (cursor != NULL) {
GdkVisual* visual = GDK_X11_VISUAL(cursor->data);
if (default_xvisual->visualid ==
gdk_x11_visual_get_xvisual(visual)->visualid) {
gtk_widget_set_visual(widget, visual);
break;
}
cursor = cursor->next;
}
g_list_free(visuals);
#endif
}
But it does not seem to work. Not sure where is should actually be called.
See my work here: https://gitlab.com/gsharpkit/cefglue/-/tree/gtk3
Edited by Mikkel Kruse Johnsen