diff options
author | Jan D. <jan.h.d@swipnet.se> | 2010-04-11 20:25:09 +0200 |
---|---|---|
committer | Jan D. <jan.h.d@swipnet.se> | 2010-04-11 20:25:09 +0200 |
commit | 80014bacf4f997f8976f70d9f1dc556833765363 (patch) | |
tree | 43baed58d02ca1c985ed00e9673d2c3a91bf2435 /src/xmenu.c | |
parent | 517db8c33ca3486cc521e4dc772d490cc47d5c5e (diff) | |
download | emacs-80014bacf4f997f8976f70d9f1dc556833765363.tar.gz |
Use XFT in Lucid dialogs if available.
* xmenu.c (apply_systemfont_to_dialog): New.
(create_and_show_dialog): Call apply_systemfont_to_dialog if HAVE_XFT.
* lwlib-Xaw.c (widget_xft_data): New for Xft data.
(fill_xft_data, openFont, get_text_width_and_height)
(draw_text, set_text, find_xft_data, command_press)
(command_reset): New functions.
(xaw_update_one_widget): Call set_text for dialog and buttons
if HAVE_XFT. Also set internalHeight for buttons.
(xaw_destroy_instance): Free all Xft related data.
(button_actions, buttonTrans): New structures.
(make_dialog): Call XtAppAddActions for button_actions.
Find xft font to use and call fill_xft_data for widgets.
(xaw_create_dialog): Pass instance parameter to make_dialog.
* lwlib-int.h (_widget_instance): Add Xft data if HAVE_XFT.
Override translations for buttons. If depth is 16 or more, tell
Xaw3d to not be nice to colormap.
Remove separator widget, use XtNhorizDistance on first right button
instead.
* xresources.texi (Lucid Resources): Mention faceName for dialogs.
Diffstat (limited to 'src/xmenu.c')
-rw-r--r-- | src/xmenu.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/src/xmenu.c b/src/xmenu.c index de2f4eb6815..c8067a47deb 100644 --- a/src/xmenu.c +++ b/src/xmenu.c @@ -954,6 +954,19 @@ update_frame_menubar (f) #ifdef USE_LUCID static void +apply_systemfont_to_dialog (w) + Widget w; +{ + const char *fn = xsettings_get_system_normal_font (); + if (fn) + { + XrmDatabase db = XtDatabase (XtDisplay (w)); + if (db) + XrmPutStringResource (&db, "*dialog.faceName", fn); + } +} + +static void apply_systemfont_to_menu (w) Widget w; { @@ -964,15 +977,15 @@ apply_systemfont_to_menu (w) if (XtIsShell (w)) /* popup menu */ { - Widget *childs[1]; + Widget *childs = NULL; int num = 0; XtVaGetValues (w, XtNnumChildren, &num, NULL); if (num != 1) return; /* Should only be one. */ childs[0] = 0; - XtVaGetValues (w, XtNchildren, childs, NULL); - if (childs[0] && *childs[0]) w = *childs[0]; + XtVaGetValues (w, XtNchildren, &childs, NULL); + if (childs && *childs) w = *childs; } /* Only use system font if the default is used for the menu. */ @@ -2047,11 +2060,13 @@ create_and_show_dialog (f, first_wv) abort(); dialog_id = widget_id_tick++; +#ifdef HAVE_XFT + apply_systemfont_to_dialog (f->output_data.x->widget); +#endif lw_create_widget (first_wv->name, "dialog", dialog_id, first_wv, f->output_data.x->widget, 1, 0, dialog_selection_callback, 0, 0); lw_modify_all_widgets (dialog_id, first_wv->contents, True); - /* Display the dialog box. */ lw_pop_up_all_widgets (dialog_id); popup_activated_flag = 1; |