}
static int menuSize(int * height, int * width, int * listHeight,
- enum mode mode, poptContext options) {
+ enum mode mode, int * flags, poptContext options) {
const char ** argv = poptGetArgs(options);
int h = 0;
int tagWidth = 0;
tagWidth = max(tagWidth, _newt_wstrlen(argv[0], -1));
descriptionWidth = max(descriptionWidth, _newt_wstrlen(argv[1], -1));
- if ( mode == MODE_MENU )
+ if (mode == MODE_MENU || *flags & FLAG_NOITEM)
argv += 2;
else
argv += 3;
h++;
}
+ if (*flags & FLAG_NOTAGS) {
+ tagWidth = 0;
+ overhead -= mode == MODE_MENU ? 1 : 2;
+ }
+ if (*flags & FLAG_NOITEM) {
+ descriptionWidth = 0;
+ }
+
*width = max(*width, tagWidth + descriptionWidth + overhead);
*width = min(*width, SLtt_Screen_Cols);
case MODE_MENU:
spaceForButtons(&h, &w, *flags & FLAG_NOCANCEL ? 1 : 2,
fullButtons);
- menuSize(&h, &w, listHeight, mode, options);
+ menuSize(&h, &w, listHeight, mode, flags, options);
break;
case MODE_YESNO:
case MODE_MSGBOX:
break;
}
+ if (noCancel) flags |= FLAG_NOCANCEL;
+ if (noItem) flags |= FLAG_NOITEM;
+ if (noTags) flags |= FLAG_NOTAGS;
+ if (scrollText) flags |= FLAG_SCROLL_TEXT;
+ if (defaultNo) flags |= FLAG_DEFAULT_NO;
+
newtInit();
newtCls();
if (no_button)
setButtonText(no_button, BUTTON_NO);
- if (noCancel) flags |= FLAG_NOCANCEL;
- if (noItem) flags |= FLAG_NOITEM;
- if (noTags) flags |= FLAG_NOTAGS;
- if (scrollText) flags |= FLAG_SCROLL_TEXT;
- if (defaultNo) flags |= FLAG_DEFAULT_NO;
-
switch (mode) {
case MODE_MSGBOX:
case MODE_TEXTBOX: