diff options
| author | Jan Djärv | 2010-04-11 20:25:09 +0200 |
|---|---|---|
| committer | Jan Djärv | 2010-04-11 20:25:09 +0200 |
| commit | 1ecb2d3f03cc83ce7fa3349458f8cf83c97181f2 (patch) | |
| tree | bd3902f19cf65c1221dab180493360b0ffe3e873 /src/xmenu.c | |
| parent | 97e53006f6c56bcbe190c56dadb350759644bfaa (diff) | |
| download | emacs-1ecb2d3f03cc83ce7fa3349458f8cf83c97181f2.tar.gz emacs-1ecb2d3f03cc83ce7fa3349458f8cf83c97181f2.zip | |
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) | |||
| 954 | 954 | ||
| 955 | #ifdef USE_LUCID | 955 | #ifdef USE_LUCID |
| 956 | static void | 956 | static void |
| 957 | apply_systemfont_to_dialog (w) | ||
| 958 | Widget w; | ||
| 959 | { | ||
| 960 | const char *fn = xsettings_get_system_normal_font (); | ||
| 961 | if (fn) | ||
| 962 | { | ||
| 963 | XrmDatabase db = XtDatabase (XtDisplay (w)); | ||
| 964 | if (db) | ||
| 965 | XrmPutStringResource (&db, "*dialog.faceName", fn); | ||
| 966 | } | ||
| 967 | } | ||
| 968 | |||
| 969 | static void | ||
| 957 | apply_systemfont_to_menu (w) | 970 | apply_systemfont_to_menu (w) |
| 958 | Widget w; | 971 | Widget w; |
| 959 | { | 972 | { |
| @@ -964,15 +977,15 @@ apply_systemfont_to_menu (w) | |||
| 964 | 977 | ||
| 965 | if (XtIsShell (w)) /* popup menu */ | 978 | if (XtIsShell (w)) /* popup menu */ |
| 966 | { | 979 | { |
| 967 | Widget *childs[1]; | 980 | Widget *childs = NULL; |
| 968 | int num = 0; | 981 | int num = 0; |
| 969 | 982 | ||
| 970 | XtVaGetValues (w, XtNnumChildren, &num, NULL); | 983 | XtVaGetValues (w, XtNnumChildren, &num, NULL); |
| 971 | if (num != 1) return; /* Should only be one. */ | 984 | if (num != 1) return; /* Should only be one. */ |
| 972 | 985 | ||
| 973 | childs[0] = 0; | 986 | childs[0] = 0; |
| 974 | XtVaGetValues (w, XtNchildren, childs, NULL); | 987 | XtVaGetValues (w, XtNchildren, &childs, NULL); |
| 975 | if (childs[0] && *childs[0]) w = *childs[0]; | 988 | if (childs && *childs) w = *childs; |
| 976 | } | 989 | } |
| 977 | 990 | ||
| 978 | /* Only use system font if the default is used for the menu. */ | 991 | /* Only use system font if the default is used for the menu. */ |
| @@ -2047,11 +2060,13 @@ create_and_show_dialog (f, first_wv) | |||
| 2047 | abort(); | 2060 | abort(); |
| 2048 | 2061 | ||
| 2049 | dialog_id = widget_id_tick++; | 2062 | dialog_id = widget_id_tick++; |
| 2063 | #ifdef HAVE_XFT | ||
| 2064 | apply_systemfont_to_dialog (f->output_data.x->widget); | ||
| 2065 | #endif | ||
| 2050 | lw_create_widget (first_wv->name, "dialog", dialog_id, first_wv, | 2066 | lw_create_widget (first_wv->name, "dialog", dialog_id, first_wv, |
| 2051 | f->output_data.x->widget, 1, 0, | 2067 | f->output_data.x->widget, 1, 0, |
| 2052 | dialog_selection_callback, 0, 0); | 2068 | dialog_selection_callback, 0, 0); |
| 2053 | lw_modify_all_widgets (dialog_id, first_wv->contents, True); | 2069 | lw_modify_all_widgets (dialog_id, first_wv->contents, True); |
| 2054 | |||
| 2055 | /* Display the dialog box. */ | 2070 | /* Display the dialog box. */ |
| 2056 | lw_pop_up_all_widgets (dialog_id); | 2071 | lw_pop_up_all_widgets (dialog_id); |
| 2057 | popup_activated_flag = 1; | 2072 | popup_activated_flag = 1; |