diff options
author | Antenore Gatta <antenore@simbiosi.org> | 2020-03-17 14:36:42 +0300 |
---|---|---|
committer | Antenore Gatta <antenore@simbiosi.org> | 2020-03-17 14:36:42 +0300 |
commit | 504d149d991749c17d610b5b568874a6496f6ac2 (patch) | |
tree | f95ce10f342c46b1dba724c520979ee76c472d22 /plugins/www | |
parent | f7c10c8de7d990569d2288eef5bc27688fa68067 (diff) |
Added options to improve support for additional browser features
Diffstat (limited to 'plugins/www')
-rw-r--r-- | plugins/www/www_plugin.c | 17 | ||||
-rw-r--r-- | plugins/www/www_plugin.h | 7 |
2 files changed, 20 insertions, 4 deletions
diff --git a/plugins/www/www_plugin.c b/plugins/www/www_plugin.c index 0e416c532..5752ad6c4 100644 --- a/plugins/www/www_plugin.c +++ b/plugins/www/www_plugin.c @@ -230,8 +230,7 @@ void remmina_plugin_www_decide_newwin(WebKitPolicyDecision *decision, RemminaPro webkit_policy_decision_ignore(decision); } -static gboolean -remmina_plugin_www_decide_resource(WebKitPolicyDecision *decision, RemminaProtocolWidget *gp) +gboolean remmina_plugin_www_decide_resource(WebKitPolicyDecision *decision, RemminaProtocolWidget *gp) { TRACE_CALL(__func__); g_debug("Policy decision resource"); @@ -409,9 +408,10 @@ static void remmina_plugin_www_init(RemminaProtocolWidget *gp) #ifdef DEBUG /* Turn on the developer extras */ webkit_settings_set_enable_developer_extras(gpdata->settings, TRUE); + webkit_settings_set_enable_write_console_messages_to_stdout(gpdata->settings, TRUE); #endif - /* user-agent. TODO: Add option. */ + /* user-agent. */ if (remmina_plugin_service->file_get_string(remminafile, "user-agent")) { gchar *useragent = g_strdup(remmina_plugin_service->file_get_string(remminafile, "user-agent")); webkit_settings_set_user_agent(gpdata->settings, useragent); @@ -446,6 +446,7 @@ static void remmina_plugin_www_init(RemminaProtocolWidget *gp) /* enable-webgl */ if (remmina_plugin_service->file_get_int(remminafile, "enable-webgl", FALSE)) { webkit_settings_set_enable_webgl(gpdata->settings, TRUE); + webkit_settings_set_enable_accelerated_2d_canvas(gpdata->settings, TRUE); g_info("enable-webgl enabled"); } @@ -457,6 +458,15 @@ static void remmina_plugin_www_init(RemminaProtocolWidget *gp) webkit_web_context_set_automation_allowed(gpdata->context, TRUE); webkit_settings_set_javascript_can_open_windows_automatically(gpdata->settings, TRUE); webkit_settings_set_allow_modal_dialogs(gpdata->settings, TRUE); + /** Frames flattening + * Some websites engage in embedding frames-inside-of-frames. WebKit has + * the ability to flatten them so they behave, when scrolling, as one big + * frame. If for some reason it is not enabled, go ahead and turn it on. + */ + if (!webkit_settings_get_enable_frame_flattening(gpdata->settings)) { + webkit_settings_set_enable_frame_flattening(gpdata->settings, true); + } + webkit_settings_set_enable_resizable_text_areas(gpdata->settings, true); g_signal_connect(G_OBJECT(gpdata->context), "download-started", G_CALLBACK(remmina_plugin_www_download_started), gp); @@ -626,6 +636,7 @@ static gboolean remmina_plugin_www_close_connection(RemminaProtocolWidget *gp) RemminaPluginWWWData *gpdata; gpdata = (RemminaPluginWWWData *)g_object_get_data(G_OBJECT(gp), "plugin-data"); + webkit_web_view_stop_loading(gpdata->webview); webkit_web_view_try_close(gpdata->webview); if (gpdata->url) g_free(gpdata->url); diff --git a/plugins/www/www_plugin.h b/plugins/www/www_plugin.h index 7bddc619e..c99298b17 100644 --- a/plugins/www/www_plugin.h +++ b/plugins/www/www_plugin.h @@ -34,6 +34,11 @@ #pragma once +#include "common/remmina_plugin.h" + +#include <glib.h> +#include <webkit2/webkit2.h> + typedef enum { WWW_WEB_VIEW_DOCUMENT_HTML, WWW_WEB_VIEW_DOCUMENT_XML, @@ -46,7 +51,7 @@ typedef enum { G_BEGIN_DECLS void remmina_plugin_www_decide_nav(WebKitPolicyDecision *decision, RemminaProtocolWidget *gp); void remmina_plugin_www_decide_newwin(WebKitPolicyDecision *decision, RemminaProtocolWidget *gp); -static gboolean remmina_plugin_www_decide_resource(WebKitPolicyDecision *decision, RemminaProtocolWidget *gp); +gboolean remmina_plugin_www_decide_resource(WebKitPolicyDecision *decision, RemminaProtocolWidget *gp); void remmina_plugin_www_response_received(WebKitDownload *download, GParamSpec *ps, RemminaProtocolWidget *gp); void remmina_plugin_www_notify_download(WebKitDownload *download, gchar *destination, RemminaProtocolWidget *gp); |