Mercurial > emacs
comparison src/xfaces.c @ 36942:98755810fe71
(x_update_menu_appearance): Renamed from
x_set_menu_face_resources. Use different resources for popups.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Thu, 22 Mar 2001 19:51:57 +0000 |
parents | bda3649d35fd |
children | adb0272e7b25 |
comparison
equal
deleted
inserted
replaced
36941:8107e2a17261 | 36942:98755810fe71 |
---|---|
598 static void clear_font_table P_ ((struct frame *)); | 598 static void clear_font_table P_ ((struct frame *)); |
599 | 599 |
600 #ifdef WINDOWSNT | 600 #ifdef WINDOWSNT |
601 extern Lisp_Object w32_list_fonts P_ ((struct frame *, Lisp_Object, int, int)); | 601 extern Lisp_Object w32_list_fonts P_ ((struct frame *, Lisp_Object, int, int)); |
602 #endif /* WINDOWSNT */ | 602 #endif /* WINDOWSNT */ |
603 | |
604 #ifdef USE_X_TOOLKIT | |
605 static void x_update_menu_appearance P_ ((struct frame *)); | |
606 #endif /* USE_X_TOOLKIT */ | |
603 | 607 |
604 #endif /* HAVE_WINDOW_SYSTEM */ | 608 #endif /* HAVE_WINDOW_SYSTEM */ |
605 | 609 |
606 | 610 |
607 /*********************************************************************** | 611 /*********************************************************************** |
4339 } | 4343 } |
4340 | 4344 |
4341 #endif /* HAVE_WINDOW_SYSTEM */ | 4345 #endif /* HAVE_WINDOW_SYSTEM */ |
4342 | 4346 |
4343 | 4347 |
4344 #ifdef HAVE_X_WINDOWS | |
4345 /*********************************************************************** | 4348 /*********************************************************************** |
4346 Menu face | 4349 Menu face |
4347 ***********************************************************************/ | 4350 ***********************************************************************/ |
4348 | 4351 |
4349 #ifdef USE_X_TOOLKIT | 4352 #if defined HAVE_X_WINDOWS && defined USE_X_TOOLKIT |
4350 | 4353 |
4351 void | 4354 /* Make menus on frame F appear as specified by the `menu' face. */ |
4352 x_set_menu_face_resources (f) | 4355 |
4356 static void | |
4357 x_update_menu_appearance (f) | |
4353 struct frame *f; | 4358 struct frame *f; |
4354 { | 4359 { |
4355 struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f); | 4360 struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f); |
4356 | 4361 XrmDatabase rdb; |
4357 if (dpyinfo) | 4362 |
4358 { | 4363 if (dpyinfo |
4359 Display *dpy = FRAME_X_DISPLAY (f); | 4364 && (rdb = XrmGetDatabase (FRAME_X_DISPLAY (f)), |
4360 XrmDatabase rdb = XrmGetDatabase (dpy); | 4365 rdb != NULL)) |
4361 extern Lisp_Object Vx_resource_name; | 4366 { |
4362 | 4367 char line[512]; |
4363 if (rdb) | 4368 Lisp_Object lface = lface_from_face_name (f, Qmenu, 1); |
4369 struct face *face = FACE_FROM_ID (f, MENU_FACE_ID); | |
4370 char *myname = XSTRING (Vx_resource_name)->data; | |
4371 int changed_p = 0; | |
4372 | |
4373 if (STRINGP (LFACE_FOREGROUND (lface))) | |
4364 { | 4374 { |
4365 char line[512]; | 4375 sprintf (line, "%s.popup_menu*foreground: %s", |
4366 Lisp_Object lface = lface_from_face_name (f, Qmenu, 1); | 4376 myname, XSTRING (LFACE_FOREGROUND (lface))->data); |
4367 struct face *face = FACE_FROM_ID (f, MENU_FACE_ID); | 4377 XrmPutLineResource (&rdb, line); |
4368 char *myname = XSTRING (Vx_resource_name)->data; | 4378 sprintf (line, "%s.pane.menubar*foreground: %s", |
4369 int changes = 0; | 4379 myname, XSTRING (LFACE_FOREGROUND (lface))->data); |
4370 | 4380 XrmPutLineResource (&rdb, line); |
4371 if (STRINGP (LFACE_FOREGROUND (lface))) | 4381 changed_p = 1; |
4372 { | 4382 } |
4373 sprintf (line, "%s.menu*foreground: %s", | 4383 |
4374 myname, XSTRING (LFACE_FOREGROUND (lface))->data); | 4384 if (STRINGP (LFACE_BACKGROUND (lface))) |
4375 XrmPutLineResource (&rdb, line); | 4385 { |
4376 sprintf (line, "%s.pane.menubar*foreground: %s", | 4386 sprintf (line, "%s.popup_menu*background: %s", |
4377 myname, XSTRING (LFACE_FOREGROUND (lface))->data); | 4387 myname, XSTRING (LFACE_BACKGROUND (lface))->data); |
4378 XrmPutLineResource (&rdb, line); | 4388 XrmPutLineResource (&rdb, line); |
4379 ++changes; | 4389 sprintf (line, "%s.pane.menubar*background: %s", |
4380 } | 4390 myname, XSTRING (LFACE_BACKGROUND (lface))->data); |
4381 | 4391 XrmPutLineResource (&rdb, line); |
4382 if (STRINGP (LFACE_BACKGROUND (lface))) | 4392 changed_p = 1; |
4383 { | 4393 } |
4384 sprintf (line, "%s*menu*background: %s", | |
4385 myname, XSTRING (LFACE_BACKGROUND (lface))->data); | |
4386 XrmPutLineResource (&rdb, line); | |
4387 sprintf (line, "%s.pane.menubar*background: %s", | |
4388 myname, XSTRING (LFACE_BACKGROUND (lface))->data); | |
4389 XrmPutLineResource (&rdb, line); | |
4390 ++changes; | |
4391 } | |
4392 | 4394 |
4393 if (face->font_name | 4395 if (face->font_name |
4394 && (!UNSPECIFIEDP (LFACE_FAMILY (lface)) | 4396 && (!UNSPECIFIEDP (LFACE_FAMILY (lface)) |
4395 || !UNSPECIFIEDP (LFACE_SWIDTH (lface)) | 4397 || !UNSPECIFIEDP (LFACE_SWIDTH (lface)) |
4396 || !UNSPECIFIEDP (LFACE_AVGWIDTH (lface)) | 4398 || !UNSPECIFIEDP (LFACE_AVGWIDTH (lface)) |
4397 || !UNSPECIFIEDP (LFACE_WEIGHT (lface)) | 4399 || !UNSPECIFIEDP (LFACE_WEIGHT (lface)) |
4398 || !UNSPECIFIEDP (LFACE_SLANT (lface)) | 4400 || !UNSPECIFIEDP (LFACE_SLANT (lface)) |
4399 || !UNSPECIFIEDP (LFACE_HEIGHT (lface)))) | 4401 || !UNSPECIFIEDP (LFACE_HEIGHT (lface)))) |
4400 { | 4402 { |
4401 #ifdef USE_MOTIF | 4403 #ifdef USE_MOTIF |
4402 char *format1 = "%s.pane.menubar*fontList: %s"; | 4404 const char *suffix = "List"; |
4403 char *format2 = "%s*menu*fontList: %s"; | |
4404 #else | 4405 #else |
4405 char *format1 = "%s.pane.menubar*font: %s"; | 4406 const char *suffix = ""; |
4406 char *format2 = "%s*menu*font: %s"; | 4407 #endif |
4407 #endif | 4408 sprintf (line, "%s.pane.menubar*font%s: %s", |
4408 sprintf (line, format1, myname, face->font_name); | 4409 myname, suffix, face->font_name); |
4409 XrmPutLineResource (&rdb, line); | 4410 XrmPutLineResource (&rdb, line); |
4410 sprintf (line, format2, myname, face->font_name); | 4411 sprintf (line, "%s.popup_menu*font%s: %s", |
4411 XrmPutLineResource (&rdb, line); | 4412 myname, suffix, face->font_name); |
4412 ++changes; | 4413 XrmPutLineResource (&rdb, line); |
4413 } | 4414 changed_p = 1; |
4414 | |
4415 if (changes && f->output_data.x->menubar_widget) | |
4416 { | |
4417 free_frame_menubar (f); | |
4418 set_frame_menubar (f, 1, 1); | |
4419 XWINDOW (FRAME_SELECTED_WINDOW (f))->update_mode_line = Qt; | |
4420 } | |
4421 } | 4415 } |
4422 } | 4416 |
4423 } | 4417 if (changed_p && f->output_data.x->menubar_widget) |
4424 | 4418 { |
4425 | 4419 free_frame_menubar (f); |
4426 #endif /* USE_X_TOOLKIT */ | 4420 set_frame_menubar (f, 1, 1); |
4427 | 4421 } |
4428 #endif /* HAVE_X_WINDOWS */ | 4422 } |
4423 } | |
4424 | |
4425 #endif /* HAVE_X_WINDOWS && USE_X_TOOLKIT */ | |
4429 | 4426 |
4430 | 4427 |
4431 | 4428 |
4432 DEFUN ("internal-get-lisp-face-attribute", Finternal_get_lisp_face_attribute, | 4429 DEFUN ("internal-get-lisp-face-attribute", Finternal_get_lisp_face_attribute, |
4433 Sinternal_get_lisp_face_attribute, | 4430 Sinternal_get_lisp_face_attribute, |
5970 /* Reflect changes in the `menu' face in menu bars. */ | 5967 /* Reflect changes in the `menu' face in menu bars. */ |
5971 if (menu_face_change_count) | 5968 if (menu_face_change_count) |
5972 { | 5969 { |
5973 menu_face_change_count = 0; | 5970 menu_face_change_count = 0; |
5974 #ifdef USE_X_TOOLKIT | 5971 #ifdef USE_X_TOOLKIT |
5975 x_set_menu_face_resources (f); | 5972 x_update_menu_appearance (f); |
5976 #endif | 5973 #endif |
5977 } | 5974 } |
5978 | 5975 |
5979 success_p = 1; | 5976 success_p = 1; |
5980 } | 5977 } |