X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=filebrowser%2Fselfile.c;h=f59e159d5aba7cbfc7b9408e4acba136befa1a8c;hb=29cdb3df264381034a99c132554295d4e4deb1e6;hp=477b02254930635c3d14bd7e0b7b7cd9c91b6170;hpb=8c9c9b75176c6135bd37d190e20b6e1818ff108f;p=xboard.git diff --git a/filebrowser/selfile.c b/filebrowser/selfile.c index 477b022..f59e159 100644 --- a/filebrowser/selfile.c +++ b/filebrowser/selfile.c @@ -267,6 +267,14 @@ void SFsetFocus(Widget w, XtPointer data, XEvent *event, Boolean *b) XtSetKeyboardFocus((Widget) data, w); } +void SFwheelProc(Widget w, XtPointer data, XEvent *event, Boolean *b) +{ // [HGM] mouse-wheel callback scrolls lists + int dir, n = (intptr_t) data; + if(event->xbutton.button == Button4) dir = -2; // kludge to indicate relative motion + if(event->xbutton.button == Button5) dir = -1; + SFvSliderMovedCallback(w, n, dir); +} + static void SFcreateWidgets(toplevel, prompt, ok, cancel) Widget toplevel; @@ -522,6 +530,9 @@ SFcreateWidgets(toplevel, prompt, ok, cancel) SFhSliderMovedCallback, (XtPointer)(intptr_t) n); XtAddCallback(selFileHScrolls[n], XtNscrollProc, SFhAreaSelectedCallback, (XtPointer)(intptr_t) n); + + XtAddEventHandler(selFileVScrolls[n], ButtonPressMask, False, + SFwheelProc, (XtPointer)(intptr_t) n); // [HGM] couplemouse wheel to v-scroll } i = 0; @@ -844,8 +855,8 @@ XsraSelFile(toplevel, prompt, ok, cancel, failed, SFprepareToReturn(); return stderr; } - if (fp = SFopenFile(*name_return, mode, - prompt, failed)) { + if ((*name_return)[strlen(*name_return)-1] != '/' && // [HGM] refuse directories + (fp = SFopenFile(*name_return, mode, prompt, failed))) { SFprepareToReturn(); return fp; }