comparison src/keyboard.c @ 106085:cd4cbab8bb21

Handle system default font and changing font parameters. * xterm.h (struct x_display_info): Add atoms and Window for xsettings. * xterm.c (handle_one_xevent): Call xft_settings_event for ClientMessage, PropertyNotify and DestroyNotify. (x_term_init): If we have XFT, get DPI from Xft.dpi. Call xsettings_initialize. * xftfont.c (xftfont_fix_match): New function. (xftfont_open): Call XftDefaultSubstitute before XftFontMatch. Call xftfont_fix_match after XftFontMatch. * xfont.c (xfont_driver): Initialize all members. * xfns.c (x_default_font_parameter): Try font from Ffont_get_system_font. Do not get font from x_default_parameter if we got one from Ffont_get_system_font. (Fx_select_font): Get the defaut font name from :name of FRAME_FONT (f). * w32font.c (w32font_driver): Initialize all members. * termhooks.h (enum event_kind): CONFIG_CHANGED_EVENT is new. * lisp.h: Declare syms_of_xsettings. * keyboard.c (kbd_buffer_get_event, make_lispy_event): Handle CONFIG_CHANGED_EVENT. * ftfont.c (ftfont_filter_properties): New function. * frame.c (x_set_font): Remove unused variable lval. * font.h (struct font_driver): filter_properties is new. * font.c (font_put_extra): Don't return if val is nil, it means boolean option is off. (font_parse_fcname): Collect all extra properties in extra_props and call filter_properties for all drivers with extra_props and font as parameter. (font_open_entity): Do not use cache, it does not pick up new fontconfig settings like hinting. (font_load_for_lface): If spec had a name in it, store it in entity. * emacs.c (main): Call syms_of_xsettings * config.in: HAVE_GCONF is new. * Makefile.in (GCONF_CFLAGS, GCONF_LIBS): New variables for HAVE_GCONF. xsettings.o is new. * menu-bar.el: Put "Use system font" in Option-menu. * loadup.el: If feature system-font-setting or font-render-setting is there, load font-setting. * Makefile.in (ELCFILES): font-settings.el is new. * font-setting.el: New file. * NEWS: Mention dynamic font changes (font-use-system-font). * configure.in: New option: --with(out)-gconf. Set HAVE_GCONF if we find gconf.
author Jan Dj?rv <jan.h.d@swipnet.se>
date Tue, 17 Nov 2009 08:21:23 +0000
parents ba3ffbd9c422
children 389860cebad8
comparison
equal deleted inserted replaced
106084:f03048d6d95a 106085:cd4cbab8bb21
487 Lisp_Object Qdrag_n_drop; 487 Lisp_Object Qdrag_n_drop;
488 Lisp_Object Qsave_session; 488 Lisp_Object Qsave_session;
489 #ifdef HAVE_DBUS 489 #ifdef HAVE_DBUS
490 Lisp_Object Qdbus_event; 490 Lisp_Object Qdbus_event;
491 #endif 491 #endif
492 Lisp_Object Qconfig_changed_event;
493
492 /* Lisp_Object Qmouse_movement; - also an event header */ 494 /* Lisp_Object Qmouse_movement; - also an event header */
493 495
494 /* Properties of event headers. */ 496 /* Properties of event headers. */
495 Lisp_Object Qevent_kind; 497 Lisp_Object Qevent_kind;
496 Lisp_Object Qevent_symbol_elements; 498 Lisp_Object Qevent_symbol_elements;
4281 { 4283 {
4282 obj = make_lispy_event (event); 4284 obj = make_lispy_event (event);
4283 kbd_fetch_ptr = event + 1; 4285 kbd_fetch_ptr = event + 1;
4284 } 4286 }
4285 #endif 4287 #endif
4288 else if (event->kind == CONFIG_CHANGED_EVENT)
4289 {
4290 obj = make_lispy_event (event);
4291 kbd_fetch_ptr = event + 1;
4292 }
4286 else 4293 else
4287 { 4294 {
4288 /* If this event is on a different frame, return a switch-frame this 4295 /* If this event is on a different frame, return a switch-frame this
4289 time, and leave the event in the queue for next time. */ 4296 time, and leave the event in the queue for next time. */
4290 Lisp_Object frame; 4297 Lisp_Object frame;
6194 { 6201 {
6195 return Fcons (Qdbus_event, event->arg); 6202 return Fcons (Qdbus_event, event->arg);
6196 } 6203 }
6197 #endif /* HAVE_DBUS */ 6204 #endif /* HAVE_DBUS */
6198 6205
6206 case CONFIG_CHANGED_EVENT:
6207 return Fcons (Qconfig_changed_event,
6208 Fcons (event->arg,
6209 Fcons (event->frame_or_window, Qnil)));
6199 #ifdef HAVE_GPM 6210 #ifdef HAVE_GPM
6200 case GPM_CLICK_EVENT: 6211 case GPM_CLICK_EVENT:
6201 { 6212 {
6202 FRAME_PTR f = XFRAME (event->frame_or_window); 6213 FRAME_PTR f = XFRAME (event->frame_or_window);
6203 Lisp_Object head, position; 6214 Lisp_Object head, position;
11803 #ifdef HAVE_DBUS 11814 #ifdef HAVE_DBUS
11804 Qdbus_event = intern_c_string ("dbus-event"); 11815 Qdbus_event = intern_c_string ("dbus-event");
11805 staticpro (&Qdbus_event); 11816 staticpro (&Qdbus_event);
11806 #endif 11817 #endif
11807 11818
11819 Qconfig_changed_event = intern_c_string ("config-changed-event");
11820 staticpro (&Qconfig_changed_event);
11821
11808 Qmenu_enable = intern_c_string ("menu-enable"); 11822 Qmenu_enable = intern_c_string ("menu-enable");
11809 staticpro (&Qmenu_enable); 11823 staticpro (&Qmenu_enable);
11810 QCenable = intern_c_string (":enable"); 11824 QCenable = intern_c_string (":enable");
11811 staticpro (&QCenable); 11825 staticpro (&QCenable);
11812 QCvisible = intern_c_string (":visible"); 11826 QCvisible = intern_c_string (":visible");
12545 /* Define a special event which is raised for dbus callback 12559 /* Define a special event which is raised for dbus callback
12546 functions. */ 12560 functions. */
12547 initial_define_lispy_key (Vspecial_event_map, "dbus-event", 12561 initial_define_lispy_key (Vspecial_event_map, "dbus-event",
12548 "dbus-handle-event"); 12562 "dbus-handle-event");
12549 #endif 12563 #endif
12564
12565 initial_define_lispy_key (Vspecial_event_map, "config-changed-event",
12566 "ignore");
12550 } 12567 }
12551 12568
12552 /* Mark the pointers in the kboard objects. 12569 /* Mark the pointers in the kboard objects.
12553 Called by the Fgarbage_collector. */ 12570 Called by the Fgarbage_collector. */
12554 void 12571 void