/* Functions for handling font and other changes dynamically.
-Copyright (C) 2009-2011 Free Software Foundation, Inc.
+Copyright (C) 2009-2012 Free Software Foundation, Inc.
This file is part of GNU Emacs.
#include <float.h>
#include <limits.h>
-#include <setjmp.h>
#include <fcntl.h>
#include "lisp.h"
#include "xterm.h"
#include "keyboard.h"
#include "blockinput.h"
#include "termhooks.h"
-#include "termopts.h"
#include <X11/Xproto.h>
/* Store a monospace font change event if the monospaced font changed. */
-#ifdef HAVE_XFT
+#if defined HAVE_XFT && (defined HAVE_GSETTINGS || defined HAVE_GCONF)
static void
store_monospaced_changed (const char *newfont)
{
XCAR (first_dpyinfo->name_list_element));
}
}
+#endif
/* Store a font name change event if the font name changed. */
+#ifdef HAVE_XFT
static void
store_font_name_changed (const char *newfont)
{
}
#endif /* HAVE_XFT */
-/* Map TOOL_BAR_STYLE from a string to its correspinding Lisp value.
+/* Map TOOL_BAR_STYLE from a string to its corresponding Lisp value.
Return Qnil if TOOL_BAR_STYLE is not known. */
static Lisp_Object
XCAR (dpyinfo->name_list_element));
}
-
+#ifdef HAVE_XFT
#define XSETTINGS_FONT_NAME "Gtk/FontName"
+#endif
#define XSETTINGS_TOOL_BAR_STYLE "Gtk/ToolbarStyle"
enum {
g_variant_unref (val);
}
}
-#endif /* HAVE_XFT */
+#endif /* HAVE_XFT */
}
#endif /* HAVE_GSETTINGS */
bytes_parsed += 4; /* Skip serial for this value */
if (bytes_parsed > bytes) return BadLength;
- want_this =
+ want_this =
#ifdef HAVE_XFT
(nlen > 6 && strncmp (name, "Xft/", 4) == 0)
|| strcmp (XSETTINGS_FONT_NAME, name) == 0
||
#endif
strcmp (XSETTINGS_TOOL_BAR_STYLE, name) == 0;
-
+
switch (type)
{
case 0: /* Integer */
if (send_event_p)
store_config_changed_event (Qfont_render,
XCAR (dpyinfo->name_list_element));
- sprintf (buf, format, oldsettings.aa, oldsettings.hinting,
- oldsettings.rgba, oldsettings.lcdfilter,
- oldsettings.hintstyle, oldsettings.dpi);
- Vxft_settings = build_string (buf);
+ Vxft_settings
+ = make_formatted_string (buf, format,
+ oldsettings.aa, oldsettings.hinting,
+ oldsettings.rgba, oldsettings.lcdfilter,
+ oldsettings.hintstyle, oldsettings.dpi);
+
}
else
FcPatternDestroy (pat);
g_type_init ();
#endif
- schemas = g_settings_list_schemas();
+ schemas = g_settings_list_schemas ();
if (schemas == NULL) return;
while (! schema_found && *schemas != NULL)
schema_found = strcmp (*schemas++, GSETTINGS_SCHEMA) == 0;
{
Display *dpy = dpyinfo->display;
- BLOCK_INPUT;
+ block_input ();
/* Select events so we can detect client messages sent when selection
owner changes. */
if (dpyinfo->xsettings_window != None)
read_and_apply_settings (dpyinfo, False);
- UNBLOCK_INPUT;
+ unblock_input ();
}
void
defsubr (&Sfont_get_system_normal_font);
DEFVAR_BOOL ("font-use-system-font", use_system_font,
- doc: /* *Non-nil means to apply the system defined font dynamically.
+ doc: /* Non-nil means to apply the system defined font dynamically.
When this is non-nil and the system defined fixed width font changes, we
update frames dynamically.
If this variable is nil, Emacs ignores system font changes. */);
DEFVAR_LISP ("xft-settings", Vxft_settings,
doc: /* Font settings applied to Xft. */);
- Vxft_settings = make_string ("", 0);
+ Vxft_settings = empty_unibyte_string;
#ifdef HAVE_XFT
Fprovide (intern_c_string ("font-render-setting"), Qnil);