--- xwave-0.7-orig/src/graphics.c 2006-05-21 15:04:19 +0900 +++ xwave-0.7/src/graphics.c 2006-05-22 19:30:46 +0900 @@ -42,6 +42,7 @@ #include #include #include +#include #include #include "types.h" @@ -1770,6 +1771,38 @@ firstmark=-1; } +void keyp_action (Widget w, Main_Data *md, XKeyEvent *event, + Boolean *flg) +{ + int savedmark; + if (md->no==0) return; + if (md->wd->length==0) return; + if (md->mb->playing) return; + /* FIXME: we should use XLookupString or the like */ + if (event->keycode != 96) return; // F12 + + if (md->wd->isplay) { + clear_line(md->wd->markbeg/md->mg->step); + } + if (md->wd->ismark) { + set_whole_mark(md); + set_canvas_mark(get_actual_nw(md)); + } + savedmark=md->wd->markbeg; + md->wd->markbeg=md->wd->savedmark; + md->wd->savedmark=savedmark; + set_beginmark_label(md->wd->markbeg); + md->cg->pos=md->wd->markbeg*md->wd->bpspl; + if (md->wd->isplay) { + set_line(md->wd->markbeg/md->mg->step); + } + if (md->wd->ismark) { + set_whole_mark(md); + set_canvas_mark(get_actual_nw(md)); + } + update_canvas(md,NULL); +} + void set_mark_beg(Main_Data *md,int x) { Window win = XtWindow(md->mw->graph); --- xwave-0.7-orig/src/graphics.h 1996-11-08 02:04:17 +0900 +++ xwave-0.7/src/graphics.h 2006-05-22 19:21:11 +0900 @@ -6,6 +6,7 @@ void mark_action (Widget, Main_Data *,XMotionEvent *, Boolean *); void buttonp_action (Widget,Main_Data *,XButtonEvent *, Boolean *); void buttonr_action (Widget,Main_Data *,XButtonEvent *, Boolean *); +void keyp_action (Widget,Main_Data *,XKeyEvent *, Boolean *); void mark_canvas (Widget, Main_Data *, XEvent *, Boolean *); void update_display(Main_Data *); void update_canvas(Main_Data *,Next_Wave *nw); --- xwave-0.7-orig/src/types.h 1996-11-07 07:41:53 +0900 +++ xwave-0.7/src/types.h 2006-05-22 19:10:51 +0900 @@ -44,6 +44,7 @@ int markbeg; /* the begin of the mark/playline */ int marklength; /* the length of the mark */ int tlength; /* length / bpspl */ + int savedmark; int fd; /* fileno if not complete in mem */ int headoffs; int peak_l; --- xwave-0.7-orig/src/xwave.c 2006-05-21 15:04:19 +0900 +++ xwave-0.7/src/xwave.c 2006-05-22 19:10:40 +0900 @@ -415,6 +415,8 @@ (XtEventHandler)buttonp_action, (XtPointer) MD); XtAddEventHandler(graph, ButtonReleaseMask, FALSE, (XtEventHandler)buttonr_action, (XtPointer) MD); + XtAddEventHandler(MD->mw->form, KeyPressMask, FALSE, + (XtEventHandler)keyp_action, (XtPointer) MD); /* if server can backing store, we want backing store */ wattr.backing_store=DoesBackingStore(DefaultScreenOfDisplay(dpy));