rpms/xfce-mcs-plugins/devel xfce-mcs-plugins-4.4.1-dpi.patch, NONE, 1.1 xfce-mcs-plugins.spec, 1.14, 1.15
Kevin Fenzi (kevin)
fedora-extras-commits at redhat.com
Tue Jul 31 05:14:32 UTC 2007
- Previous message: rpms/gtkhtml3/devel .cvsignore, 1.55, 1.56 gtkhtml3.spec, 1.94, 1.95 sources, 1.55, 1.56 gtkhtml-3.15.5-version-checks.patch, 1.1, NONE
- Next message: rpms/xfce-mcs-plugins/F-7 xfce-mcs-plugins-4.4.1-dpi.patch, NONE, 1.1 xfce-mcs-plugins.spec, 1.14, 1.15
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: kevin
Update of /cvs/extras/rpms/xfce-mcs-plugins/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv2366
Modified Files:
xfce-mcs-plugins.spec
Added Files:
xfce-mcs-plugins-4.4.1-dpi.patch
Log Message:
Add dpi interface option. (fixes #244286)
xfce-mcs-plugins-4.4.1-dpi.patch:
--- NEW FILE xfce-mcs-plugins-4.4.1-dpi.patch ---
diff -uNr xfce-mcs-plugins-4.4.1.orig/plugins/ui_plugin/ui_plugin.c xfce-mcs-plugins-4.4.1/plugins/ui_plugin/ui_plugin.c
--- xfce-mcs-plugins-4.4.1.orig/plugins/ui_plugin/ui_plugin.c 2007-02-17 00:38:20.000000000 -0800
+++ xfce-mcs-plugins-4.4.1/plugins/ui_plugin/ui_plugin.c 2007-06-14 05:51:52.000000000 -0700
@@ -16,6 +16,7 @@
gnome theme-switcher capplet - (c) Jonathan Blandford <jrb at gnome.org>
xfce4 mcs plugin - (c) 2002 Olivier Fourdan <ofourdan at xfce.org>
(c) 2004-2006 Benedikt Meurer <benny at xfce.org>
+ (c) 2005-2007 Brian Tarircone <bjt23 at cornell.edu>
sub-pixel icons stolen from KDE :)
*/
@@ -29,6 +30,10 @@
#include <string.h>
#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
#include <gtk/gtk.h>
#include <libxfce4mcs/mcs-common.h>
@@ -112,6 +117,17 @@
"aaaaaaaaaaaa"
};
+static const gchar *xft_dpi_default_entries[4] =
+{
+ N_("System Default"), "75", "96", "100",
+};
+static const gint xft_dpi_default_values[4] =
+{
+ /* fortunately, 'Xft.dpi: 0' appears to be interpreted as
+ * 'system default' */
+ 0, 75, 96, 100,
+};
+
#define RCDIR "mcs_settings"
#define OLDRCDIR "settings"
#define RCFILE "gtk.xml"
@@ -143,6 +159,7 @@
static gint current_xft_hinting = DEFAULT_XFT_HINTING;
static gchar *current_xft_hintstyle = NULL;
static gchar *current_xft_rgba = NULL;
+static gint current_dpi = 0;
static GtkTooltips *tooltips = NULL;
@@ -167,7 +184,9 @@
GtkWidget *label1;
GtkWidget *vbox3;
GtkWidget *frame2;
+ GtkWidget *font_vbox;
GtkWidget *button3;
+ GtkWidget *dpi_combo;
GtkWidget *frame3;
GtkWidget *optionmenu1;
GtkWidget *frame5;
@@ -499,6 +518,188 @@
}
}
+static void
+handle_dpi_change(Itf *itf)
+{
+ gint r;
+
+ mcs_manager_set_int(itf->mcs_plugin->manager, "Xfce/XftDPI", CHANNEL, current_dpi);
+ mcs_manager_notify(itf->mcs_plugin->manager, CHANNEL);
+ write_options(itf->mcs_plugin);
+ apply_xft_options(itf);
+
+ r = xfce_message_dialog(GTK_WINDOW(itf->theme_dialog), _("DPI Changed"),
+ GTK_STOCK_DIALOG_INFO,
+ _("DPI was changed successfully"),
+ _("However, you may need to restart your session for the settings to take effect."),
+ XFCE_CUSTOM_STOCK_BUTTON,
+ _("Log Out Later"),
+ GTK_STOCK_CLOSE, GTK_RESPONSE_CANCEL,
+ XFCE_CUSTOM_STOCK_BUTTON, _("Log Out Now"),
+ GTK_STOCK_QUIT, GTK_RESPONSE_ACCEPT, NULL);
+ if(GTK_RESPONSE_ACCEPT == r) {
+ GError *error = NULL;
+
+ if(!xfce_exec("xfce4-session-logout", FALSE, FALSE, &error)) {
+ xfce_message_dialog(GTK_WINDOW(itf->theme_dialog),
+ _("Exec Error"), GTK_STOCK_DIALOG_ERROR,
+ _("Failed to run \"xfce4-session-logout\""),
+ error->message,
+ GTK_STOCK_CLOSE, GTK_RESPONSE_ACCEPT, NULL);
+ g_error_free(error);
+ }
+ }
+}
+
+static gboolean
+handle_user_entered_dpi(Itf *itf)
+{
+ GtkWidget *dlg, *topvbox, *hbox, *img, *lbl, *spin, *spacer;
+ gint resp;
+
+ dlg = xfce_titled_dialog_new_with_buttons(_("Custom DPI"),
+ GTK_WINDOW(itf->theme_dialog),
+ GTK_DIALOG_NO_SEPARATOR
+ | GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_STOCK_CANCEL,
+ GTK_RESPONSE_CANCEL,
+ GTK_STOCK_SAVE,
+ GTK_RESPONSE_ACCEPT, NULL);
+ gtk_dialog_set_default_response(GTK_DIALOG(dlg), GTK_RESPONSE_ACCEPT);
+ gtk_window_set_icon_name(GTK_WINDOW(dlg), "xfce4-ui");
+ topvbox = GTK_DIALOG(dlg)->vbox;
+
+ hbox = gtk_hbox_new(FALSE, BORDER);
+ gtk_widget_show(hbox);
+ gtk_box_pack_start(GTK_BOX(topvbox), hbox, FALSE, FALSE, 0);
+
+ img = gtk_image_new_from_stock(GTK_STOCK_DIALOG_INFO,
+ GTK_ICON_SIZE_DIALOG);
+ gtk_widget_show(img);
+ gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
+
+ lbl = gtk_label_new(_("Enter your display's DPI below. Numbers that are multiples of 6 usually work best. The smaller the number, the smaller your fonts will look."));
+ gtk_label_set_line_wrap(GTK_LABEL(lbl), TRUE);
+ gtk_misc_set_alignment(GTK_MISC(lbl), 0.0, 0.5);
+ gtk_widget_show(lbl);
+ gtk_box_pack_start(GTK_BOX(hbox), lbl, TRUE, TRUE, 0);
+
+ spacer = gtk_alignment_new(0.5, 0.5, 1.0, 1.0);
+ gtk_widget_set_size_request(spacer, -1, 12);
+ gtk_widget_show(spacer);
+ gtk_box_pack_start(GTK_BOX(topvbox), spacer, FALSE, FALSE, 0);
+
+ hbox = gtk_hbox_new(FALSE, BORDER);
+ gtk_widget_show(hbox);
+ gtk_box_pack_start(GTK_BOX(topvbox), hbox, FALSE, FALSE, 0);
+
+ lbl = gtk_label_new_with_mnemonic(_("Custom _DPI:"));
+ gtk_widget_show(lbl);
+ gtk_box_pack_start(GTK_BOX(hbox), lbl, FALSE, FALSE, 0);
+
+ spin = gtk_spin_button_new_with_range(24, 264, 1);
+ if(!current_dpi) {
+ /* FIXME: get the actual current dpi */
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 100);
+ } else
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), current_dpi);
+ gtk_widget_show(spin);
+ gtk_box_pack_start(GTK_BOX(hbox), spin, FALSE, FALSE, 0);
+ gtk_label_set_mnemonic_widget(GTK_LABEL(lbl), spin);
+
+ resp = gtk_dialog_run(GTK_DIALOG(dlg));
+
+ if(GTK_RESPONSE_ACCEPT == resp)
+ current_dpi = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spin));
+
+ gtk_widget_destroy(dlg);
+
+ return (GTK_RESPONSE_ACCEPT == resp);
+}
+
+static void
+on_dpi_combo_changed(GtkComboBox *combo,
+ gpointer user_data)
+{
+ Itf *itf = (Itf *)user_data;
+ gint selected, old_dpi = current_dpi;
+
+ selected = gtk_combo_box_get_active(combo);
+
+ if(selected < G_N_ELEMENTS(xft_dpi_default_values))
+ current_dpi = xft_dpi_default_values[selected];
+ else {
+ gchar *text = gtk_combo_box_get_active_text(combo);
+ if(!strcmp(text, _("Other..."))) {
+ if(handle_user_entered_dpi(itf)) {
+ gint i;
+ gboolean done = FALSE;
+
+ /* if there's an old custom dpi, remove it from the box */
+ if(selected > G_N_ELEMENTS(xft_dpi_default_values))
+ gtk_combo_box_remove_text(combo, selected - 1);
+
+ /* make sure they didn't set one of our default values */
+ for(i = 1; i < G_N_ELEMENTS(xft_dpi_default_values); ++i) {
+ if(xft_dpi_default_values[i] == current_dpi) {
+ g_signal_handlers_block_by_func(G_OBJECT(combo),
+ G_CALLBACK(on_dpi_combo_changed),
+ itf);
+ gtk_combo_box_set_active(combo, i);
+ g_signal_handlers_unblock_by_func(G_OBJECT(combo),
+ G_CALLBACK(on_dpi_combo_changed),
+ itf);
+ done = TRUE;
+ break;
+ }
+ }
+
+ if(!done) {
+ /* if we get here, we have to create a new entry */
+ gchar *str = g_strdup_printf("%d", current_dpi);
+ gtk_combo_box_insert_text(combo,
+ G_N_ELEMENTS(xft_dpi_default_values),
+ str);
+
+ /* set the combo to the new entry, but block this func
+ * from getting called on the change */
+ g_signal_handlers_block_by_func(G_OBJECT(combo),
+ G_CALLBACK(on_dpi_combo_changed),
+ itf);
+ gtk_combo_box_set_active(combo,
+ G_N_ELEMENTS(xft_dpi_default_values));
+ g_signal_handlers_unblock_by_func(G_OBJECT(combo),
+ G_CALLBACK(on_dpi_combo_changed),
+ itf);
+ }
+ } else {
+ /* user canceled, so reset the last-selected item */
+ gint i;
+
+ for(i = 0; i <= G_N_ELEMENTS(xft_dpi_default_values); ++i) {
+ if(G_N_ELEMENTS(xft_dpi_default_values) == i
+ || xft_dpi_default_values[i] == current_dpi)
+ {
+ g_signal_handlers_block_by_func(G_OBJECT(combo),
+ G_CALLBACK(on_dpi_combo_changed),
+ itf);
+ gtk_combo_box_set_active(combo, i);
+ g_signal_handlers_unblock_by_func(G_OBJECT(combo),
+ G_CALLBACK(on_dpi_combo_changed),
+ itf);
+ break;
+ }
+ }
+ }
+ } else
+ current_dpi = atoi(text); /* we should be able to trust this */
+ g_free(text);
+ }
+
+ if(old_dpi != current_dpi)
+ handle_dpi_change(itf);
+}
+
static gint sort_func(GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter * b, gpointer user_data)
{
gchar *a_str = NULL;
@@ -672,6 +873,8 @@
GdkPixbuf *icon;
GtkTreeIter iter;
GtkCellRenderer *cell[2];
+ GtkWidget *hbox, *lbl;
+ gint i, selected = -1;
dialog = g_new(Itf, 1);
@@ -758,11 +961,50 @@
gtk_widget_show(dialog->vbox3);
gtk_box_pack_start(GTK_BOX(dialog->hbox1), dialog->vbox3, TRUE, TRUE, 0);
+ dialog->font_vbox = gtk_vbox_new(FALSE, BORDER);
+ gtk_widget_show(dialog->font_vbox);
+
dialog->button3 = gtk_button_new();
gtk_button_set_label(GTK_BUTTON(dialog->button3), current_font);
gtk_widget_show(dialog->button3);
+ gtk_box_pack_start(GTK_BOX(dialog->font_vbox), dialog->button3, FALSE, FALSE, 0);
+
+ hbox = gtk_hbox_new(FALSE, BORDER);
+ gtk_widget_show(hbox);
+ gtk_box_pack_start(GTK_BOX(dialog->font_vbox), hbox, FALSE, FALSE, 0);
+
+ lbl = gtk_label_new_with_mnemonic(_("Font _DPI:"));
+ gtk_widget_show(lbl);
+ gtk_box_pack_start(GTK_BOX(hbox), lbl, FALSE, FALSE, 0);
+
+ for(i = 0; i < G_N_ELEMENTS(xft_dpi_default_values); ++i) {
+ if(xft_dpi_default_values[i] == current_dpi) {
+ selected = i;
+ break;
+ }
+ }
+
+ dialog->dpi_combo = gtk_combo_box_new_text();
+ for(i = 0; i < G_N_ELEMENTS(xft_dpi_default_entries); ++i) {
+ gtk_combo_box_append_text(GTK_COMBO_BOX(dialog->dpi_combo),
+ _(xft_dpi_default_entries[i]));
+ if(selected == i)
+ gtk_combo_box_set_active(GTK_COMBO_BOX(dialog->dpi_combo), selected);
+ }
+ if(-1 == selected) {
+ gchar *str = g_strdup_printf("%d", current_dpi);
+ gtk_combo_box_append_text(GTK_COMBO_BOX(dialog->dpi_combo), str);
+ gtk_combo_box_set_active(GTK_COMBO_BOX(dialog->dpi_combo),
+ G_N_ELEMENTS(xft_dpi_default_entries));
+ g_free(str);
+ }
+ gtk_combo_box_append_text(GTK_COMBO_BOX(dialog->dpi_combo),
+ _("Other..."));
+ gtk_widget_show(dialog->dpi_combo);
+ gtk_box_pack_start(GTK_BOX(hbox), dialog->dpi_combo, TRUE, TRUE, 0);
+ gtk_label_set_mnemonic_widget(GTK_LABEL(lbl), dialog->dpi_combo);
- dialog->frame2 = xfce_create_framebox_with_content (_("Font"), dialog->button3);
+ dialog->frame2 = xfce_create_framebox_with_content (_("Font"), dialog->font_vbox);
gtk_widget_show(dialog->frame2);
gtk_box_pack_start(GTK_BOX(dialog->vbox3), dialog->frame2, TRUE, FALSE, 0);
@@ -919,6 +1161,7 @@
g_signal_connect(G_OBJECT(itf->theme_dialog), "response", G_CALLBACK(cb_dialog_response), itf->mcs_plugin);
g_signal_connect(G_OBJECT(itf->button3), "clicked", G_CALLBACK(show_font_selection), itf);
+ g_signal_connect(G_OBJECT(itf->dpi_combo), "changed", G_CALLBACK(on_dpi_combo_changed), itf);
g_signal_connect(G_OBJECT(itf->optionmenu1), "changed", G_CALLBACK(on_icons_changed), itf);
g_signal_connect(G_OBJECT(itf->accel_checkbox), "toggled", G_CALLBACK(on_change_accel_toggled), itf);
@@ -1036,6 +1279,12 @@
current_font = g_strdup(DEFAULT_FONT);
mcs_manager_set_string(mcs_plugin->manager, "Gtk/FontName", CHANNEL, current_font);
}
+
+ setting = mcs_manager_setting_lookup(mcs_plugin->manager, "Xfce/XftDPI", CHANNEL);
+ if(setting)
+ current_dpi = setting->data.v_int;
+ else
+ mcs_manager_set_int(mcs_plugin->manager, "Xfce/XftDPI", CHANNEL, current_dpi);
setting = mcs_manager_setting_lookup(mcs_plugin->manager, "Gtk/ToolbarStyle", CHANNEL);
if(setting)
@@ -1167,12 +1416,20 @@
else
fprintf(fp, "Xft.hintstyle: hintnone\n");
fprintf(fp, "Xft.rgba: %s\n", current_xft_rgba);
+ if(current_dpi > 0)
+ fprintf(fp, "Xft.dpi: %d\n", current_dpi);
fclose(fp);
/* run xrdb to merge the new settings */
cmd = g_strdup_printf("xrdb -nocpp -merge \"%s\"", path);
g_spawn_command_line_async(cmd, NULL);
g_free(cmd);
+
+ if(!current_dpi) {
+ /* filter out Xft.dpi from xrdb */
+ g_spawn_command_line_async("sh -c \"xrdb -query | grep -i -v '^Xft.dpi:' | xrdb\"",
+ NULL);
+ }
}
g_free(path);
}
Index: xfce-mcs-plugins.spec
===================================================================
RCS file: /cvs/extras/rpms/xfce-mcs-plugins/devel/xfce-mcs-plugins.spec,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- xfce-mcs-plugins.spec 19 Apr 2007 02:34:41 -0000 1.14
+++ xfce-mcs-plugins.spec 31 Jul 2007 05:14:00 -0000 1.15
@@ -1,11 +1,12 @@
Summary: Plugins for multi channel settings manager
Name: xfce-mcs-plugins
Version: 4.4.1
-Release: 1%{?dist}
+Release: 2%{?dist}
License: GPL
URL: http://www.xfce.org/
Source0: http://www.xfce.org/archive/xfce-4.4.1/src/xfce-mcs-plugins-4.4.1.tar.bz2
Patch: xfce-mcs-plugins-4.2.0-rh.patch
+Patch1: xfce-mcs-plugins-4.4.1-dpi.patch
Group: User Interface/Desktops
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
Requires: xfce-mcs-manager >= %{version}
@@ -25,6 +26,7 @@
%prep
%setup -q
%patch -p1 -b .fedora
+%patch1 -p1 -b .dpi
%build
%configure
@@ -54,6 +56,9 @@
%{_datadir}/icons/*/*/apps/*
%changelog
+* Mon Jul 30 2007 Kevin Fenzi <kevin at tummy.com> - 4.4.1-2
+- Add dpi interface option. (fixes #244286)
+
* Wed Apr 11 2007 Kevin Fenzi <kevin at tummy.com> - 4.4.1-1
- Update to 4.4.1
- Previous message: rpms/gtkhtml3/devel .cvsignore, 1.55, 1.56 gtkhtml3.spec, 1.94, 1.95 sources, 1.55, 1.56 gtkhtml-3.15.5-version-checks.patch, 1.1, NONE
- Next message: rpms/xfce-mcs-plugins/F-7 xfce-mcs-plugins-4.4.1-dpi.patch, NONE, 1.1 xfce-mcs-plugins.spec, 1.14, 1.15
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the scm-commits
mailing list