diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Tools/MiniBrowser/gtk/BrowserSettingsDialog.c | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Tools/MiniBrowser/gtk/BrowserSettingsDialog.c')
-rw-r--r-- | Tools/MiniBrowser/gtk/BrowserSettingsDialog.c | 55 |
1 files changed, 50 insertions, 5 deletions
diff --git a/Tools/MiniBrowser/gtk/BrowserSettingsDialog.c b/Tools/MiniBrowser/gtk/BrowserSettingsDialog.c index 1e4dcd804..511b3db04 100644 --- a/Tools/MiniBrowser/gtk/BrowserSettingsDialog.c +++ b/Tools/MiniBrowser/gtk/BrowserSettingsDialog.c @@ -55,6 +55,34 @@ struct _BrowserSettingsDialogClass { G_DEFINE_TYPE(BrowserSettingsDialog, browser_settings_dialog, GTK_TYPE_DIALOG) +static const char *hardwareAccelerationPolicyToString(WebKitHardwareAccelerationPolicy policy) +{ + switch (policy) { + case WEBKIT_HARDWARE_ACCELERATION_POLICY_ALWAYS: + return "always"; + case WEBKIT_HARDWARE_ACCELERATION_POLICY_NEVER: + return "never"; + case WEBKIT_HARDWARE_ACCELERATION_POLICY_ON_DEMAND: + return "ondemand"; + } + + g_assert_not_reached(); + return "ondemand"; +} + +static int stringToHardwareAccelerationPolicy(const char *policy) +{ + if (!g_ascii_strcasecmp(policy, "always")) + return WEBKIT_HARDWARE_ACCELERATION_POLICY_ALWAYS; + if (!g_ascii_strcasecmp(policy, "never")) + return WEBKIT_HARDWARE_ACCELERATION_POLICY_NEVER; + if (!g_ascii_strcasecmp(policy, "ondemand")) + return WEBKIT_HARDWARE_ACCELERATION_POLICY_ON_DEMAND; + + g_warning("Invalid value %s for hardware-acceleration-policy setting valid values are always, never and ondemand", policy); + return -1; +} + static void cellRendererChanged(GtkCellRenderer *renderer, const char *path, const GValue *value, BrowserSettingsDialog *dialog) { GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(dialog->settingsList)); @@ -62,12 +90,21 @@ static void cellRendererChanged(GtkCellRenderer *renderer, const char *path, con GtkTreeIter iter; gtk_tree_model_get_iter(model, &iter, treePath); + gboolean updateTreeStore = TRUE; char *name; gtk_tree_model_get(model, &iter, SETTINGS_LIST_COLUMN_NAME, &name, -1); - g_object_set_property(G_OBJECT(dialog->settings), name, value); + if (!g_strcmp0(name, "hardware-acceleration-policy")) { + int policy = stringToHardwareAccelerationPolicy(g_value_get_string(value)); + if (policy != -1) + webkit_settings_set_hardware_acceleration_policy(dialog->settings, policy); + else + updateTreeStore = FALSE; + } else + g_object_set_property(G_OBJECT(dialog->settings), name, value); g_free(name); - gtk_list_store_set(GTK_LIST_STORE(model), &iter, SETTINGS_LIST_COLUMN_VALUE, value, -1); + if (updateTreeStore) + gtk_list_store_set(GTK_LIST_STORE(model), &iter, SETTINGS_LIST_COLUMN_VALUE, value, -1); gtk_tree_path_free(treePath); } @@ -134,10 +171,19 @@ static void browserSettingsDialogConstructed(GObject *object) GParamSpec *property = properties[i]; const char *name = g_param_spec_get_name(property); const char *nick = g_param_spec_get_nick(property); + char *blurb = g_markup_escape_text(g_param_spec_get_blurb(property), -1); GValue value = { 0, { { 0 } } }; - g_value_init(&value, G_PARAM_SPEC_VALUE_TYPE(property)); - g_object_get_property(G_OBJECT(settings), name, &value); + if (!g_strcmp0(name, "hardware-acceleration-policy")) { + g_value_init(&value, G_TYPE_STRING); + g_value_set_string(&value, hardwareAccelerationPolicyToString(webkit_settings_get_hardware_acceleration_policy(settings))); + char *extendedBlutb = g_strdup_printf("%s (always, never or ondemand)", blurb); + g_free(blurb); + blurb = extendedBlutb; + } else { + g_value_init(&value, G_PARAM_SPEC_VALUE_TYPE(property)); + g_object_get_property(G_OBJECT(settings), name, &value); + } GtkAdjustment *adjustment = NULL; if (G_PARAM_SPEC_VALUE_TYPE(property) == G_TYPE_UINT) { @@ -146,7 +192,6 @@ static void browserSettingsDialogConstructed(GObject *object) uIntProperty->maximum, 1, 1, 1); } - char *blurb = g_markup_escape_text(g_param_spec_get_blurb(property), -1); GtkTreeIter iter; gtk_list_store_append(model, &iter); gtk_list_store_set(model, &iter, |