summaryrefslogtreecommitdiff
path: root/src/xmenu.c
diff options
context:
space:
mode:
authorJan D. <jan.h.d@swipnet.se>2010-04-11 20:25:09 +0200
committerJan D. <jan.h.d@swipnet.se>2010-04-11 20:25:09 +0200
commit80014bacf4f997f8976f70d9f1dc556833765363 (patch)
tree43baed58d02ca1c985ed00e9673d2c3a91bf2435 /src/xmenu.c
parent517db8c33ca3486cc521e4dc772d490cc47d5c5e (diff)
downloademacs-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.c23
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;