From 877e26b05cc3cbc0a3bb98aaa51001ed0c70dcf1 Mon Sep 17 00:00:00 2001 From: Peter de Ridder Date: Thu, 9 Feb 2012 22:11:21 +0100 Subject: [PATCH 1/2] Added LCD filter to the appearance dialog. --- .../appearance-settings/appearance-dialog.glade | 57 +++++++++++++++++++- dialogs/appearance-settings/main.c | 38 +++++++++++++- 2 files changed, 92 insertions(+), 3 deletions(-) diff --git a/dialogs/appearance-settings/appearance-dialog.glade b/dialogs/appearance-settings/appearance-dialog.glade index e5fb94b..4a79182 100644 --- a/dialogs/appearance-settings/appearance-dialog.glade +++ b/dialogs/appearance-settings/appearance-dialog.glade @@ -58,6 +58,26 @@ + + + + + + + + None + + + Default + + + Light + + + Legacy + + + Appearance center-on-parent @@ -194,7 +214,7 @@ True 6 - 3 + 4 2 12 6 @@ -243,9 +263,42 @@ + + True + Applying a LCD filter on top of sub-pixel anti-aliasing gives a smoother effect + liststore3 + + + + 0 + + + + + 1 + 2 + 3 + 4 + + + + + True + 0 + _LCD filter: + True + xft_lcd_filter_combo_box + + + 3 + 4 + GTK_FILL + + + True - 1 + 0 Sub-_pixel order: True xft_rgba_combo_box diff --git a/dialogs/appearance-settings/main.c b/dialogs/appearance-settings/main.c index f1486a1..39d45b8 100644 --- a/dialogs/appearance-settings/main.c +++ b/dialogs/appearance-settings/main.c @@ -81,6 +81,11 @@ static const gchar* xft_rgba_array[] = "none", "rgb", "bgr", "vrgb", "vbgr" }; +static const gchar* xft_lcd_filter_array[] = +{ + "lcdnone", "lcddefault", "lcdlight", "lcdlegacy" +}; + static const GtkTargetEntry theme_drop_targets[] = { { "text/uri-list", 0, 0 } @@ -213,6 +218,18 @@ cb_rgba_style_combo_changed (GtkComboBox *combo) } static void +cb_lcd_filter_combo_changed (GtkComboBox *combo) +{ + gint active; + + /* Get active item, prevent number outside the array */ + active = CLAMP (gtk_combo_box_get_active (combo), 0, (gint) G_N_ELEMENTS (xft_lcd_filter_array)); + + /* Save setting */ + xfconf_channel_set_string (xsettings_channel, "/Xft/Lcdfilter", xft_lcd_filter_array[active]); +} + +static void cb_custom_dpi_check_button_toggled (GtkToggleButton *custom_dpi_toggle, GtkSpinButton *custom_dpi_spin) { @@ -534,6 +551,20 @@ appearance_settings_dialog_channel_property_changed (XfconfChannel *channel, } g_free (str); } + else if (strcmp (property_name, "/Xft/Lcdfilter") == 0) + { + str = xfconf_channel_get_string (xsettings_channel, property_name, xft_lcd_filter_array[0]); + for (i = 0; i < G_N_ELEMENTS (xft_lcd_filter_array); i++) + { + if (strcmp (str, xft_lcd_filter_array[i]) == 0) + { + object = gtk_builder_get_object (builder, "xft_lcd_filter_combo_box"); + gtk_combo_box_set_active (GTK_COMBO_BOX (object), i); + break; + } + } + g_free (str); + } else if (strcmp (property_name, "/Gtk/ToolbarStyle") == 0) { str = xfconf_channel_get_string (xsettings_channel, property_name, toolbar_styles_array[2]); @@ -872,6 +903,11 @@ appearance_settings_dialog_configure_widgets (GtkBuilder *builder) appearance_settings_dialog_channel_property_changed (xsettings_channel, "/Xft/RGBA", NULL, builder); g_signal_connect (G_OBJECT (object), "changed", G_CALLBACK (cb_rgba_style_combo_changed), NULL); + /* Lcdfilter */ + object = gtk_builder_get_object (builder, "xft_lcd_filter_combo_box"); + appearance_settings_dialog_channel_property_changed (xsettings_channel, "/Xft/Lcdfilter", NULL, builder); + g_signal_connect (G_OBJECT (object), "changed", G_CALLBACK (cb_lcd_filter_combo_changed), NULL); + /* Enable editable menu accelerators */ object = gtk_builder_get_object (builder, "gtk_caneditaccels_check_button"); xfconf_g_property_bind (xsettings_channel, "/Gtk/CanChangeAccels", G_TYPE_BOOLEAN, @@ -902,7 +938,7 @@ appearance_settings_dialog_configure_widgets (GtkBuilder *builder) appearance_settings_dialog_channel_property_changed (xsettings_channel, "/Xft/HintStyle", NULL, builder); g_signal_connect (G_OBJECT (object), "changed", G_CALLBACK (cb_hinting_style_combo_changed), NULL); - /* Hinting */ + /* Antialiasing */ object = gtk_builder_get_object (builder, "xft_antialias_check_button"); appearance_settings_dialog_channel_property_changed (xsettings_channel, "/Xft/Antialias", NULL, builder); g_signal_connect (G_OBJECT (object), "toggled", G_CALLBACK (cb_antialias_check_button_toggled), NULL); -- 1.7.9