From 0a37ede0e789966ce4bee11e58bb3f7ecadd6141 Mon Sep 17 00:00:00 2001 From: Rob Haarsma Date: Mon, 27 Jan 2003 23:57:43 +0000 Subject: added mousewheel support --- source/blender/include/mydevice.h | 2 ++ source/blender/src/filesel.c | 34 ++++++++++++++++++++++++++++++++++ source/blender/src/ghostwinlay.c | 14 ++++++++++++++ 3 files changed, 50 insertions(+) diff --git a/source/blender/include/mydevice.h b/source/blender/include/mydevice.h index 43e42c8a49a..3bbaafd0c1a 100644 --- a/source/blender/include/mydevice.h +++ b/source/blender/include/mydevice.h @@ -45,6 +45,8 @@ #define RIGHTMOUSE 0x003 #define MOUSEX 0x004 #define MOUSEY 0x005 +#define WHEELUPMOUSE 0x00a +#define WHEELDOWNMOUSE 0x00b /* timers */ diff --git a/source/blender/src/filesel.c b/source/blender/src/filesel.c index 60948b8291e..d3bc996c7db 100644 --- a/source/blender/src/filesel.c +++ b/source/blender/src/filesel.c @@ -1153,6 +1153,27 @@ static void do_filescroll(SpaceFile *sfile) } +static void do_filescrollwheel(SpaceFile *sfile, int move) +{ + // by phase + int lines, rt; + + calc_file_rcts(sfile); + + lines = (int)(textrct.ymax-textrct.ymin)/FILESEL_DY; + rt = lines * sfile->collums; + + if(sfile->totfile > rt) { + sfile->ofs+= move; + if( sfile->ofs + rt > sfile->totfile + 1) + sfile->ofs = sfile->totfile - rt + 1; + } + + if(sfile->ofs<0) { + sfile->ofs= 0; + } +} + void activate_fileselect(int type, char *title, char *file, void (*func)(char *)) { SpaceFile *sfile; @@ -1715,6 +1736,19 @@ void winqreadfilespace(unsigned short event, short val, char ascii) do_filesel_buttons(val, sfile); break; + case WHEELDOWNMOUSE: + do_filescrollwheel(sfile, 3); //U.wheellinescroll); + act= find_active_file(sfile, mval[0], mval[1]); + set_active_file(sfile, act); + do_draw= 1; + break; + case WHEELUPMOUSE: + do_filescrollwheel(sfile, -3); //U.wheellinescroll); + act= find_active_file(sfile, mval[0], mval[1]); + set_active_file(sfile, act); + do_draw= 1; + break; + case LEFTMOUSE: case MIDDLEMOUSE: if(mval[0]>scrollrct.xmin && mval[0]scrollrct.ymin && mval[1]z > 0) + { + window_handle(win, WHEELUPMOUSE, 1); + } + else + { + window_handle(win, WHEELDOWNMOUSE, 1); + } + } + break; + case GHOST_kEventWindowDeactivate: case GHOST_kEventWindowActivate: { win->active= (type==GHOST_kEventWindowActivate); -- cgit v1.2.3