From 3f94cee340fde91721d303aa1392191ee36cb5f3 Mon Sep 17 00:00:00 2001 From: Pasi Kallinen Date: Thu, 18 Oct 2018 21:33:17 +0300 Subject: [PATCH] X11: Add key and mouse scrolling to extended command menu --- win/X11/winmisc.c | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/win/X11/winmisc.c b/win/X11/winmisc.c index 3fcf34935..1d4e72bd9 100644 --- a/win/X11/winmisc.c +++ b/win/X11/winmisc.c @@ -71,6 +71,8 @@ static const char extended_command_translations[] = "#override\n\ Right: scroll(6)\n\ Up: scroll(8)\n\ Down: scroll(2)\n\ + : scroll(8)\n\ + : scroll(2)\n\ : ec_key()"; static const char player_select_translations[] = "#override\n\ @@ -82,6 +84,10 @@ static const char gend_select_translations[] = "#override\n\ static const char algn_select_translations[] = "#override\n\ : algn_key()"; +static const char popup_entry_translations[] = "#override\n\ + : scroll(8)\n\ + : scroll(2)"; + static void FDECL(ps_quit, (Widget, XtPointer, XtPointer)); static void FDECL(ps_random, (Widget, XtPointer, XtPointer)); static void FDECL(ps_select, (Widget, XtPointer, XtPointer)); @@ -2003,22 +2009,41 @@ Widget *formp; /* return */ num_args = 0; XtSetArg(args[num_args], XtNallowShellResize, True); num_args++; + XtSetArg(args[num_args], XtNborderWidth, 0); num_args++; popup = XtCreatePopupShell(popup_name, transientShellWidgetClass, toplevel, args, num_args); XtOverrideTranslations( popup, XtParseTranslationTable("WM_PROTOCOLS: ec_delete()")); num_args = 0; - XtSetArg(args[num_args], XtNforceBars, False); num_args++; - XtSetArg(args[num_args], XtNallowVert, True); num_args++; XtSetArg(args[num_args], XtNtranslations, XtParseTranslationTable(popup_translations)); num_args++; - view = XtCreateManagedWidget("menuformview", viewportWidgetClass, popup, + XtSetArg(args[num_args], XtNborderWidth, 0); num_args++; + XtSetArg(args[num_args], nhStr(XtNdefaultDistance), 0); num_args++; + Widget popform = XtCreateManagedWidget("topmenuform", formWidgetClass, popup, + args, num_args); + + + num_args = 0; + XtSetArg(args[num_args], XtNforceBars, False); num_args++; + XtSetArg(args[num_args], XtNallowVert, True); num_args++; + /*XtSetArg(args[num_args], XtNborderWidth, 0); num_args++;*/ + XtSetArg(args[num_args], nhStr(XtNuseBottom), True); num_args++; + XtSetArg(args[num_args], nhStr(XtNuseRight), True); num_args++; + XtSetArg(args[num_args], nhStr(XtNtop), XtChainTop); num_args++; + XtSetArg(args[num_args], nhStr(XtNbottom), XtChainBottom); num_args++; + XtSetArg(args[num_args], nhStr(XtNleft), XtChainLeft); num_args++; + XtSetArg(args[num_args], nhStr(XtNright), XtChainRight); num_args++; + XtSetArg(args[num_args], XtNtranslations, + XtParseTranslationTable(popup_translations)); num_args++; + view = XtCreateManagedWidget("menuformview", viewportWidgetClass, popform, args, num_args); num_args = 0; XtSetArg(args[num_args], XtNtranslations, XtParseTranslationTable(popup_translations)); num_args++; + XtSetArg(args[num_args], XtNborderWidth, 0); num_args++; + XtSetArg(args[num_args], nhStr(XtNdefaultDistance), 0); num_args++; *formp = form = XtCreateManagedWidget("menuform", formWidgetClass, view, args, num_args); @@ -2092,6 +2117,8 @@ Widget *formp; /* return */ if (!widget_names[i]) continue; num_args = 0; + XtSetArg(args[num_args], XtNtranslations, + XtParseTranslationTable(popup_entry_translations)); num_args++; XtSetArg(args[num_args], nhStr(XtNfromVert), above); num_args++; if (above == left) { /* if first, we are farther apart */