From 0226c904faeff00dd3d7ad080e0b728d763c8f59 Mon Sep 17 00:00:00 2001 From: PatR Date: Thu, 21 Jan 2016 23:47:42 -0800 Subject: [PATCH] X11 menus Make the six buttons (ok, cancel, all, none, invert, search) on menus for X11 all have the same width. 'ok' should probably be changed to 'okay' to be consistent with X11_getlin(). (Another inconsistency: the extended commands menu uses 'dismiss' rather than 'cancel'.) --- win/X11/winmenu.c | 50 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 42 insertions(+), 8 deletions(-) diff --git a/win/X11/winmenu.c b/win/X11/winmenu.c index 7986f0d29..8fe7baec3 100644 --- a/win/X11/winmenu.c +++ b/win/X11/winmenu.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 winmenu.c $NHDT-Date: 1432512809 2015/05/25 00:13:29 $ $NHDT-Branch: master $:$NHDT-Revision: 1.12 $ */ +/* NetHack 3.6 winmenu.c $NHDT-Date: 1453448854 2016/01/22 07:47:34 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.13 $ */ /* Copyright (c) Dean Luick, 1992 */ /* NetHack may be freely redistributed. See license for details. */ @@ -739,10 +739,10 @@ menu_item **menu_list; Cardinal num_args; String *ptr; int retval; - Dimension v_pixel_width, v_pixel_height; + Dimension v_pixel_width, v_pixel_height, lblwidth[6], maxlblwidth; boolean labeled; - Widget viewport_widget, form, label, ok, cancel, all, none, invert, - search; + Widget viewport_widget, form, label, + ok, cancel, all, none, invert, search, lblwidget[6]; Boolean sens; #ifdef USE_FWF Boolean *boolp; @@ -866,6 +866,7 @@ menu_item **menu_list; /* * Create ok, cancel, all, none, invert, and search buttons.. */ + maxlblwidth = 0; num_args = 0; XtSetArg(args[num_args], nhStr(XtNfromVert), label); num_args++; @@ -880,6 +881,10 @@ menu_item **menu_list; ok = XtCreateManagedWidget("OK", commandWidgetClass, form, args, num_args); XtAddCallback(ok, XtNcallback, menu_ok, (XtPointer) wp); + XtSetArg(args[0], XtNwidth, &lblwidth[0]); + XtGetValues(lblwidget[0] = ok, args, ONE); + if (lblwidth[0] > maxlblwidth) + maxlblwidth = lblwidth[0]; num_args = 0; XtSetArg(args[num_args], nhStr(XtNfromVert), label); @@ -899,6 +904,10 @@ menu_item **menu_list; cancel = XtCreateManagedWidget("cancel", commandWidgetClass, form, args, num_args); XtAddCallback(cancel, XtNcallback, menu_cancel, (XtPointer) wp); + XtSetArg(args[0], XtNwidth, &lblwidth[1]); + XtGetValues(lblwidget[1] = cancel, args, ONE); + if (lblwidth[1] > maxlblwidth) + maxlblwidth = lblwidth[1]; sens = (how == PICK_ANY); num_args = 0; @@ -919,6 +928,10 @@ menu_item **menu_list; all = XtCreateManagedWidget("all", commandWidgetClass, form, args, num_args); XtAddCallback(all, XtNcallback, menu_all, (XtPointer) wp); + XtSetArg(args[0], XtNwidth, &lblwidth[2]); + XtGetValues(lblwidget[2] = all, args, ONE); + if (lblwidth[2] > maxlblwidth) + maxlblwidth = lblwidth[2]; num_args = 0; XtSetArg(args[num_args], nhStr(XtNfromVert), label); @@ -938,6 +951,10 @@ menu_item **menu_list; none = XtCreateManagedWidget("none", commandWidgetClass, form, args, num_args); XtAddCallback(none, XtNcallback, menu_none, (XtPointer) wp); + XtSetArg(args[0], XtNwidth, &lblwidth[3]); + XtGetValues(lblwidget[3] = none, args, ONE); + if (lblwidth[3] > maxlblwidth) + maxlblwidth = lblwidth[3]; num_args = 0; XtSetArg(args[num_args], nhStr(XtNfromVert), label); @@ -957,6 +974,10 @@ menu_item **menu_list; invert = XtCreateManagedWidget("invert", commandWidgetClass, form, args, num_args); XtAddCallback(invert, XtNcallback, menu_invert, (XtPointer) wp); + XtSetArg(args[0], XtNwidth, &lblwidth[4]); + XtGetValues(lblwidget[4] = invert, args, ONE); + if (lblwidth[4] > maxlblwidth) + maxlblwidth = lblwidth[4]; num_args = 0; XtSetArg(args[num_args], nhStr(XtNfromVert), label); @@ -976,6 +997,20 @@ menu_item **menu_list; search = XtCreateManagedWidget("search", commandWidgetClass, form, args, num_args); XtAddCallback(search, XtNcallback, menu_search, (XtPointer) wp); + XtSetArg(args[0], XtNwidth, &lblwidth[5]); + XtGetValues(lblwidget[5] = search, args, ONE); + if (lblwidth[5] > maxlblwidth) + maxlblwidth = lblwidth[5]; + + /* make all buttons be the same width */ + { + int i; + + XtSetArg(args[0], XtNwidth, maxlblwidth); + for (i = 0; i < 6; ++i) + if (lblwidth[i] < maxlblwidth) + XtSetValues(lblwidget[i], args, ONE); + } num_args = 0; XtSetArg(args[num_args], nhStr(XtNallowVert), True); @@ -986,10 +1021,9 @@ menu_item **menu_list; num_args++; XtSetArg(args[num_args], nhStr(XtNuseRight), True); num_args++; - /* - XtSetArg(args[num_args], nhStr(XtNforceBars), True); - num_args++; - */ +#if 0 + XtSetArg(args[num_args], nhStr(XtNforceBars), True); num_args++; +#endif XtSetArg(args[num_args], nhStr(XtNfromVert), all); num_args++; XtSetArg(args[num_args], nhStr(XtNtop), XtChainTop); -- 2.40.0