Attached patch adds some escape accelerators and installs the accelerators
of the buttons into the proper places (or at least those I found), so
one can:
- use escape in dialog boxes (except in some boxes where escape does not
work when some text field is active, but outside it alwas works).
- add additional hotkeys for those buttons via the normal X resource
mechanism
Hochachtungsvoll,
Bernhard R. Link
diff -r -u gv-3.6.1/src/dialog.c gv-patched/src/dialog.c
--- gv-3.6.1/src/dialog.c 2004-11-11 13:21:04.000000000 +0100
+++ gv-patched/src/dialog.c 2006-07-23 13:45:31.041080277 +0200
@@ -134,6 +134,7 @@
}
widgets_preferButton(pref,1);
widgets_preferButton(pref_old,0);
+ XtInstallAccelerators(dialogText,pref_old);
XtInstallAccelerators(dialogText,pref);
ENDMESSAGE(action_preferDialogPopupButton)
}
diff -r -u gv-3.6.1/src/FileSel.c gv-patched/src/FileSel.c
--- gv-3.6.1/src/FileSel.c 2004-12-08 00:55:59.000000000 +0100
+++ gv-patched/src/FileSel.c 2006-07-23 14:27:37.404572826 +0200
@@ -192,11 +192,6 @@
<Btn3Down>: FS_textfieldFocusAction() extend-start()\
";
-static String TextField_accelerators =
-"#override\n\
-<Key>Return: set() notify() unset()\
-";
-
#if 0
#define FILE_SELECTION_LAYOUT \
"\
@@ -507,6 +502,7 @@
if ((BUTTONS_RESOURCE > 0) && (BUTTONS_RESOURCE<5)) {
if (BUTTONS_RESOURCE > 0) {
FS_BUTTON1 = ADD_Widget("button1",buttonWidgetClass,new);
+// FS_BUTTON1->core.accelerators =
XtParseAcceleratorTable("#override\n<Key>Escape: set() notify()\n");
BUTTONS += 1;
}
if (BUTTONS_RESOURCE > 1) {
@@ -534,6 +530,22 @@
CreateTextField(&FS_FILTERFRAME,&FS_FILTER,value,text_trans,"filter",new);
}
+ if (BUTTONS_RESOURCE > 0 && BUTTONS_RESOURCE < 5 ) {
+ XtInstallAccelerators(FS_PATH,FS_BUTTON1);
+ XtInstallAccelerators(FS_FILTER,FS_BUTTON1);
+ if (BUTTONS_RESOURCE > 1) {
+ XtInstallAccelerators(FS_PATH,FS_BUTTON2);
+ XtInstallAccelerators(FS_FILTER,FS_BUTTON2);
+ }
+ if (BUTTONS_RESOURCE > 2) {
+ XtInstallAccelerators(FS_PATH,FS_BUTTON3);
+ XtInstallAccelerators(FS_FILTER,FS_BUTTON3);
+ }
+ if (BUTTONS_RESOURCE > 3) {
+ XtInstallAccelerators(FS_PATH,FS_BUTTON4);
+ XtInstallAccelerators(FS_FILTER,FS_BUTTON4);
+ }
+ }
SetPreferredButton(new,PREFERRED_BUTTON,TRUE);
{
@@ -929,22 +941,18 @@
FS_WIDGET w;
char name[10];
Widget button;
- static XtAccelerators accelerators = (XtAccelerators)NULL;
USE_Arg(2);
BEGINMESSAGE(SetPreferredButton)
- if (!accelerators)
accelerators=XtParseAcceleratorTable(TextField_accelerators);
IMESSAGE(position)
if (IS_BUTTON(position)) {
POSITION_TO_BUTTON_NAME(position,name);
button = XtNameToWidget((Widget)FS_FILE_SELECTION,name);
if (!install) {
- SET_Value(button,XtNaccelerators,(XtAccelerators)NULL);
preferButton(button,0);
if (PREFERRED_BUTTON==position) PREFERRED_BUTTON=0;
} else {
- SET_Value(button,XtNaccelerators,(XtAccelerators)accelerators);
XtInstallAccelerators(FS_PATH,button);
XtInstallAccelerators(FS_FILTER,button);
preferButton(button,1);
diff -r -u gv-3.6.1/src/gv_class.ad gv-patched/src/gv_class.ad
--- gv-3.6.1/src/gv_class.ad 2004-12-19 20:22:37.000000000 +0100
+++ gv-patched/src/gv_class.ad 2006-07-23 14:54:07.977179695 +0200
@@ -923,6 +923,10 @@
GV.TopLevelShell*Button.accelerators:#override\n\
<Key>Return: set() notify() unset()
+GV.TopLevelShell*dismiss.accelerators:#override\n\
+ <Key>Escape: set() notify() unset()\n\
+ <Key>Return: set() notify() unset()
+
GV.TopLevelShell*Button.baseTranslations: #replace\n\
<Key>Return: set() notify() unset()\n\
<LeaveWindow>: unset() \n\
@@ -934,6 +938,18 @@
GV*TransientShell*Button.accelerators:#override\n\
<Key>Return: set() notify() unset()
+GV*TransientShell*cancel.accelerators:#override\n\
+ <Key>Escape: set() notify() unset()\n\
+ <Key>Return: set() notify() unset()
+
+GV*TransientShell*button1.accelerators:#override\n\
+ <Key>Escape: set() notify() unset()\n\
+ <Key>Return: set() notify() unset()
+
+GV*TransientShell*dismiss.accelerators:#override\n\
+ <Key>Escape: set() notify() unset()\n\
+ <Key>Return: set() notify() unset()
+
GV*TransientShell*Button.baseTranslations: #replace\n\
<Key>Return: set() notify() unset()\n\
<LeaveWindow>: unset() \n\
diff -r -u gv-3.6.1/src/gv_misc_res.dat gv-patched/src/gv_misc_res.dat
--- gv-3.6.1/src/gv_misc_res.dat 2004-12-19 17:21:45.000000000 +0100
+++ gv-patched/src/gv_misc_res.dat 2006-07-23 14:54:07.132333370 +0200
@@ -677,6 +677,10 @@
GV.TopLevelShell*Button.accelerators:#override\n\
<Key>Return: set() notify() unset()
+GV.TopLevelShell*dismiss.accelerators:#override\n\
+ <Key>Escape: set() notify() unset()\n\
+ <Key>Return: set() notify() unset()
+
GV.TopLevelShell*Button.baseTranslations: #replace\n\
<Key>Return: set() notify() unset()\n\
<LeaveWindow>: unset() \n\
@@ -688,6 +692,18 @@
GV*TransientShell*Button.accelerators:#override\n\
<Key>Return: set() notify() unset()
+GV*TransientShell*cancel.accelerators:#override\n\
+ <Key>Escape: set() notify() unset()\n\
+ <Key>Return: set() notify() unset()
+
+GV*TransientShell*button1.accelerators:#override\n\
+ <Key>Escape: set() notify() unset()\n\
+ <Key>Return: set() notify() unset()
+
+GV*TransientShell*dismiss.accelerators:#override\n\
+ <Key>Escape: set() notify() unset()\n\
+ <Key>Return: set() notify() unset()
+
GV*TransientShell*Button.baseTranslations: #replace\n\
<Key>Return: set() notify() unset()\n\
<LeaveWindow>: unset() \n\
diff -r -u gv-3.6.1/src/info.c gv-patched/src/info.c
--- gv-3.6.1/src/info.c 2004-11-11 13:21:05.000000000 +0100
+++ gv-patched/src/info.c 2006-07-23 14:57:21.084054258 +0200
@@ -211,6 +211,8 @@
XtSetArg(args[n], XtNright, XtChainRight);
n++;
infodismiss = XtCreateManagedWidget("dismiss",
buttonWidgetClass,infoform,args,n);
XtAddCallback(infodismiss, XtNcallback, cb_popdownInfoPopup,NULL);
+ XtInstallAccelerators(infoform, infodismiss);
+ XtInstallAccelerators(infotext, infodismiss);
n=0;
XtSetArg(args[n], XtNfont, &font);
n++;
diff -r -u gv-3.6.1/src/options_fs.c gv-patched/src/options_fs.c
--- gv-3.6.1/src/options_fs.c 2004-11-11 13:21:05.000000000 +0100
+++ gv-patched/src/options_fs.c 2006-07-23 14:40:02.518024278 +0200
@@ -191,10 +191,13 @@
n=0;
w = XtCreateManagedWidget("apply", buttonWidgetClass,optionControl, args,
n);
XtAddCallback(w, XtNcallback, options_fs_cb_apply,NULL);
+ XtInstallAccelerators(optionControl, w);
w = XtCreateManagedWidget("save", buttonWidgetClass,optionControl, args, n);
XtAddCallback(w, XtNcallback, options_fs_cb_save,NULL);
+ XtInstallAccelerators(optionControl, w);
w = XtCreateManagedWidget("dismiss", buttonWidgetClass,optionControl, args,
n);
XtAddCallback(w, XtNcallback,
options_cb_popdown,(XtPointer)gv_options_fs);
+ XtInstallAccelerators(optionControl, w);
scratch_dir = widgets_createLabeledLineTextField("scratchDir",
optionControl);
default_save_dir = widgets_createLabeledLineTextField("saveDir",
optionControl);
diff -r -u gv-3.6.1/src/options_gs.c gv-patched/src/options_gs.c
--- gv-3.6.1/src/options_gs.c 2004-11-11 13:21:05.000000000 +0100
+++ gv-patched/src/options_gs.c 2006-07-23 14:36:11.455052607 +0200
@@ -307,12 +307,16 @@
n=0;
w = XtCreateManagedWidget("apply", buttonWidgetClass,optionControl, args,
n);
XtAddCallback(w, XtNcallback, options_gs_cb_apply,NULL);
+ XtInstallAccelerators(optionControl, w);
w = XtCreateManagedWidget("save", buttonWidgetClass,optionControl, args, n);
XtAddCallback(w, XtNcallback, options_gs_cb_save,NULL);
+ XtInstallAccelerators(optionControl, w);
w = XtCreateManagedWidget("dismiss", buttonWidgetClass,optionControl, args,
n);
XtAddCallback(w, XtNcallback, options_cb_popdown,
(XtPointer)gv_options_gs);
+ XtInstallAccelerators(optionControl, w);
w = XtCreateManagedWidget("defaults", buttonWidgetClass,optionControl,
args, n);
XtAddCallback(w, XtNcallback, options_gs_cb_defaults, NULL);
+ XtInstallAccelerators(optionControl, w);
options_gs_setOptionsAtEntry();
options_realize(popup,optionControl);
diff -r -u gv-3.6.1/src/options_gv.c gv-patched/src/options_gv.c
--- gv-3.6.1/src/options_gv.c 2004-11-11 13:21:05.000000000 +0100
+++ gv-patched/src/options_gv.c 2006-07-23 14:39:44.812244804 +0200
@@ -549,10 +549,13 @@
n=0;
w = XtCreateManagedWidget("apply", buttonWidgetClass,optionControl, args,
n);
XtAddCallback(w, XtNcallback, options_gv_cb_apply,NULL);
+ XtInstallAccelerators(optionControl, w);
w = XtCreateManagedWidget("save", buttonWidgetClass,optionControl, args, n);
XtAddCallback(w, XtNcallback, options_gv_cb_save,NULL);
+ XtInstallAccelerators(optionControl, w);
w = XtCreateManagedWidget("dismiss", buttonWidgetClass,optionControl, args,
n);
XtAddCallback(w, XtNcallback, options_cb_popdown,
(XtPointer)gv_options_gv);
+ XtInstallAccelerators(optionControl, w);
options_gv_setOptionsAtEntry();
options_realize(popup,optionControl);
diff -r -u gv-3.6.1/src/options_setup.c gv-patched/src/options_setup.c
--- gv-3.6.1/src/options_setup.c 2004-11-12 20:07:56.000000000 +0100
+++ gv-patched/src/options_setup.c 2006-07-23 14:47:40.435731829 +0200
@@ -400,10 +400,13 @@
n=0;
w = XtCreateManagedWidget("apply", buttonWidgetClass,optionControl, args,
n);
XtAddCallback(w, XtNcallback, options_setup_cb_apply,NULL);
+ XtInstallAccelerators(optionControl, w);
w = XtCreateManagedWidget("save", buttonWidgetClass,optionControl, args, n);
XtAddCallback(w, XtNcallback, options_setup_cb_save,NULL);
+ XtInstallAccelerators(optionControl, w);
w = XtCreateManagedWidget("dismiss", buttonWidgetClass,optionControl, args,
n);
XtAddCallback(w, XtNcallback,
options_cb_popdown,(XtPointer)gv_options_setup);
+ XtInstallAccelerators(optionControl, w);
miscmenu = widgets_createLabeledTextField("miscmenu",
optionControl);
magmenu = widgets_createLabeledTextField("magmenu", optionControl);
diff -r -u gv-3.6.1/src/widgets_misc.c gv-patched/src/widgets_misc.c
--- gv-3.6.1/src/widgets_misc.c 2004-12-08 00:55:59.000000000 +0100
+++ gv-patched/src/widgets_misc.c 2006-07-23 14:49:00.781117610 +0200
@@ -94,6 +94,7 @@
static char *LineTextTr = "\
<Key>Return: no-op()\n\
+<Key>Escape: no-op()\n\
<Key>Down: no-op()\n\
<Key>Up: no-op()\n\
<Key>Linefeed: no-op()\n\
@@ -157,6 +158,7 @@
/*##################################################*/
static char *TextTr = "\
+<Key>Escape: no-op()\n\
Ctrl<Key>J: no-op()\n\
Ctrl<Key>M: no-op()\n\
Ctrl<Key>N: no-op()\n\
diff -r -u gv-3.6.1/src/zoom.c gv-patched/src/zoom.c
--- gv-3.6.1/src/zoom.c 2004-11-11 13:21:05.000000000 +0100
+++ gv-patched/src/zoom.c 2006-07-23 14:52:28.269377061 +0200
@@ -189,6 +189,7 @@
n=0;
zdismiss = XtCreateManagedWidget(zoom_dismiss, buttonWidgetClass,zcontrol,
args, n);
XtAddCallback(zdismiss, XtNcallback,cb_destroy,(XtPointer)zshell);
+ XtInstallAccelerators(zcontrol, zdismiss);
XtRealizeWidget(zshell);
{