added mousewheel support

This commit is contained in:
Rob Haarsma 2003-01-27 23:57:43 +00:00
parent 0df2cdbc2d
commit 0a37ede0e7
3 changed files with 50 additions and 0 deletions

@ -45,6 +45,8 @@
#define RIGHTMOUSE 0x003
#define MOUSEX 0x004
#define MOUSEY 0x005
#define WHEELUPMOUSE 0x00a
#define WHEELDOWNMOUSE 0x00b
/* timers */

@ -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.xmax && mval[1]>scrollrct.ymin && mval[1]<scrollrct.ymax) {

@ -435,6 +435,20 @@ static int event_proc(GHOST_EventHandle evt, GHOST_TUserDataPtr private) {
break;
}
case GHOST_kEventWheel:
{
GHOST_TEventWheelData* wheelData = (GHOST_TEventWheelData*) data;
if (wheelData->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);