comparison src/menu.c @ 107804:24c4451bcaf7

Lucid menus can now use Xft for fonts. * xsettings.c (current_font, SYSTEM_FONT, XSETTINGS_FONT_NAME): New. (parse_xft_settings): Also check for XSETTINGS_FONT_NAME and save that in current_font. (init_gconf): Read value of SYSTEM_FONT and save it in current_font. (Ffont_get_system_normal_font, xsettings_get_system_normal_font): New functions. (syms_of_xsettings): Initialize current_font. defsubr Sfont_get_system_normal_font. * xsettings.h (Ffont_get_system_normal_font, xsettings_get_system_normal_font): Declare. * xfns.c (extern xlwmenu_default_font): Remove. (Fx_create_frame): Remove setting of xlwmenu_default_font, moved to xlwmenu.c. * menu.c (digest_single_submenu): If USE_LUCID and HAVE_XFT, encode menu items in UTF-8. * xmenu.c: include xsettings.h and xlwmenu.h if USE_LUCID. (apply_systemfont_to_menu): New function. (set_frame_menubar, create_and_show_popup_menu): Call apply_systemfont_to_menu. * xlwmenu.c (xlwmenu_default_font): Make static. (xlwMenuResources): Add XtNfaceName and XtNdefaultFace. (string_width): Use XftTextExtentsUtf8 if HAVE_XFT. (MENU_FONT_HEIGHT, MENU_FONT_ASCENT): Add versions for HAVE_XFT. (size_menu): Set max_rest_width in window_state structure. (display_menu_item): If HAVE_XFT and xft_draw is set, use XftDrawRect and XftDrawStringUtf8 to draw text. (make_windows_if_needed): Set max_rest_width and xft_draw in windows[i]. (openXftFont): New. (XlwMenuInitialize): Call openXftFont if HAVE_XFT. If mw->menu.font is not set, load font fixed and save it in xlwmenu_default_font. (XlwMenuInitialize): Set max_rest_width and xft_draw in windows[0]. (XlwMenuClassInitialize): Initialize xlwmenu_default_font. (XlwMenuRealize): Set xft_fg, xft_bg, xft_disabled_fg and windows[0].xft_draw if xft_font is set. (XlwMenuDestroy): Destroy all xft_draw and close xft_font. (facename_changed): New. (XlwMenuSetValues): Call facename_changed. If face name did change, close old fonts and destroy xft_draw:s. Then create new ones. * xlwmenu.h (XtNfaceName, XtCFaceName, XtNdefaultFace, XtCDefaultFace): New. * xlwmenuP.h (_window_state): Add max_rest_width and xft_draw. (_XlwMenu_part): Add faceName,xft_fg, xft_bg, xft_disabled_fg and xft_font. * xresources.texi (Lucid Resources): Mention faceName to set Xft fonts.
author Jan D. <jan.h.d@swipnet.se>
date Thu, 08 Apr 2010 18:20:32 +0200
parents c98cb0bca076
children 2bc9a0c04c87
comparison
equal deleted inserted replaced
107803:25be388c76cc 107804:24c4451bcaf7
695 else if (STRING_MULTIBYTE (pane_name)) 695 else if (STRING_MULTIBYTE (pane_name))
696 pane_name = ENCODE_SYSTEM (pane_name); 696 pane_name = ENCODE_SYSTEM (pane_name);
697 697
698 ASET (menu_items, i + MENU_ITEMS_PANE_NAME, pane_name); 698 ASET (menu_items, i + MENU_ITEMS_PANE_NAME, pane_name);
699 } 699 }
700 #elif defined (USE_LUCID) && defined (HAVE_XFT)
701 if (STRINGP (pane_name))
702 {
703 pane_name = ENCODE_UTF_8 (pane_name);
704 ASET (menu_items, i + MENU_ITEMS_PANE_NAME, pane_name);
705 }
700 #elif !defined (HAVE_MULTILINGUAL_MENU) 706 #elif !defined (HAVE_MULTILINGUAL_MENU)
701 if (STRINGP (pane_name) && STRING_MULTIBYTE (pane_name)) 707 if (STRINGP (pane_name) && STRING_MULTIBYTE (pane_name))
702 { 708 {
703 pane_name = ENCODE_MENU_STRING (pane_name); 709 pane_name = ENCODE_MENU_STRING (pane_name);
704 ASET (menu_items, i + MENU_ITEMS_PANE_NAME, pane_name); 710 ASET (menu_items, i + MENU_ITEMS_PANE_NAME, pane_name);
766 } 772 }
767 773
768 if (STRINGP (descrip) && STRING_MULTIBYTE (descrip)) 774 if (STRINGP (descrip) && STRING_MULTIBYTE (descrip))
769 { 775 {
770 descrip = ENCODE_SYSTEM (descrip); 776 descrip = ENCODE_SYSTEM (descrip);
777 ASET (menu_items, i + MENU_ITEMS_ITEM_EQUIV_KEY, descrip);
778 }
779 #elif USE_LUCID
780 if (STRINGP (item_name))
781 {
782 item_name = ENCODE_UTF_8 (item_name);
783 ASET (menu_items, i + MENU_ITEMS_ITEM_NAME, item_name);
784 }
785
786 if (STRINGP (descrip))
787 {
788 descrip = ENCODE_UTF_8 (descrip);
771 ASET (menu_items, i + MENU_ITEMS_ITEM_EQUIV_KEY, descrip); 789 ASET (menu_items, i + MENU_ITEMS_ITEM_EQUIV_KEY, descrip);
772 } 790 }
773 #elif !defined (HAVE_MULTILINGUAL_MENU) 791 #elif !defined (HAVE_MULTILINGUAL_MENU)
774 if (STRING_MULTIBYTE (item_name)) 792 if (STRING_MULTIBYTE (item_name))
775 { 793 {