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 }