Marek Kasik 544372
--- evince-3.21.92/browser-plugin/EvBrowserPluginMain.cpp
Marek Kasik 544372
+++ evince-3.21.92/browser-plugin/EvBrowserPluginMain.cpp
Marek Kasik 544372
@@ -38,11 +38,40 @@ static EvBrowserPlugin *pluginForInstanc
Marek Kasik a88730
         return static_cast<EvBrowserPlugin *>(instance->pdata);
Marek Kasik a88730
 }
Marek Kasik a88730
 
Marek Kasik a88730
+static gboolean gtkToolkitIsCompatible(NPP instance)
Marek Kasik a88730
+{
Marek Kasik a88730
+        NPNToolkitType toolkit_type = NPNVGtk12;
Marek Kasik a88730
+        NPError error;
Marek Kasik a88730
+
Marek Kasik a88730
+        error = browser->getvalue(instance, NPNVToolkit, &toolkit_type);
Marek Kasik a88730
+
Marek Kasik a88730
+        if (error == NPERR_NO_ERROR &&
Marek Kasik a88730
+            (toolkit_type == NPNVGtk12 ||
Marek Kasik a88730
+             toolkit_type == NPNVGtk2))
Marek Kasik a88730
+                return FALSE;
Marek Kasik a88730
+        else
Marek Kasik a88730
+                return TRUE;
Marek Kasik a88730
+}
Marek Kasik a88730
+
Marek Kasik a88730
 NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16_t mode, int16_t argc, char *argn[], char *argv[], NPSavedData *savedData)
Marek Kasik a88730
 {
Marek Kasik a88730
         if (!instance)
Marek Kasik a88730
                 return NPERR_INVALID_INSTANCE_ERROR;
Marek Kasik a88730
 
Marek Kasik a88730
+        if (!gtkToolkitIsCompatible(instance))
Marek Kasik a88730
+                return NPERR_GENERIC_ERROR;
Marek Kasik a88730
+
Marek Kasik a88730
+        GBytes *resourceData = g_resources_lookup_data("/org/gnome/evince/browser/ui/evince-browser.css", G_RESOURCE_LOOKUP_FLAGS_NONE, nullptr);
Marek Kasik a88730
+        if (resourceData) {
Marek Kasik a88730
+            GtkCssProvider *cssProvider = gtk_css_provider_new();
Marek Kasik a88730
+
Marek Kasik a88730
+            gtk_css_provider_load_from_data(cssProvider, static_cast<const gchar *>(g_bytes_get_data(resourceData, nullptr)), g_bytes_get_size(resourceData), nullptr);
Marek Kasik a88730
+            g_bytes_unref(resourceData);
Marek Kasik a88730
+
Marek Kasik a88730
+            gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), GTK_STYLE_PROVIDER(cssProvider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
Marek Kasik a88730
+            g_object_unref(cssProvider);
Marek Kasik a88730
+        }
Marek Kasik a88730
+
Marek Kasik a88730
         return EvBrowserPlugin::create(instance)->initialize(pluginType, mode, argc, argn, argv, savedData);
Marek Kasik a88730
 }
Marek Kasik a88730
 
Marek Kasik 544372
@@ -197,6 +226,11 @@ NPError NP_Initialize(NPNetscapeFuncs *b
Marek Kasik a88730
         if ((browserFuncs->version >> 8) > NP_VERSION_MAJOR)
Marek Kasik a88730
                 return NPERR_INCOMPATIBLE_VERSION_ERROR;
Marek Kasik a88730
 
Marek Kasik a88730
+        browser = browserFuncs;
Marek Kasik a88730
+
Marek Kasik a88730
+        if (!gtkToolkitIsCompatible(NULL))
Marek Kasik a88730
+                return NPERR_GENERIC_ERROR;
Marek Kasik a88730
+
Marek Kasik a88730
         if (!ev_init())
Marek Kasik a88730
                 return NPERR_GENERIC_ERROR;
Marek Kasik a88730
 
Marek Kasik 544372
@@ -207,20 +241,8 @@ NPError NP_Initialize(NPNetscapeFuncs *b
Marek Kasik 544372
                 return NPERR_GENERIC_ERROR;
Marek Kasik 544372
 #endif
Marek Kasik a88730
 
Marek Kasik a88730
-        browser = browserFuncs;
Marek Kasik a88730
         initializePluginFuncs(pluginFuncs);
Marek Kasik a88730
 
Marek Kasik a88730
-        GBytes *resourceData = g_resources_lookup_data("/org/gnome/evince/browser/ui/evince-browser.css", G_RESOURCE_LOOKUP_FLAGS_NONE, nullptr);
Marek Kasik a88730
-        if (resourceData) {
Marek Kasik a88730
-            GtkCssProvider *cssProvider = gtk_css_provider_new();
Marek Kasik a88730
-
Marek Kasik a88730
-            gtk_css_provider_load_from_data(cssProvider, static_cast<const gchar *>(g_bytes_get_data(resourceData, nullptr)), g_bytes_get_size(resourceData), nullptr);
Marek Kasik a88730
-            g_bytes_unref(resourceData);
Marek Kasik a88730
-
Marek Kasik a88730
-            gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), GTK_STYLE_PROVIDER(cssProvider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
Marek Kasik a88730
-            g_object_unref(cssProvider);
Marek Kasik a88730
-        }
Marek Kasik a88730
-
Marek Kasik a88730
         return NPERR_NO_ERROR;
Marek Kasik a88730
 }
Marek Kasik a88730