diff options
author | Rob Haarsma <phaseIV@zonnet.nl> | 2003-01-28 14:14:38 +0300 |
---|---|---|
committer | Rob Haarsma <phaseIV@zonnet.nl> | 2003-01-28 14:14:38 +0300 |
commit | e785342319247f7b4be401efc012a90b23e46510 (patch) | |
tree | 09aaf30a40e29ab1e1198d03806dad19173bb0b3 | |
parent | 9ca562765b3b765aeee7eb487eded0093c5be935 (diff) |
added mousewheel support part 2
-rw-r--r-- | source/blender/include/BSE_drawipo.h | 11 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_userdef_types.h | 10 | ||||
-rw-r--r-- | source/blender/src/drawipo.c | 182 | ||||
-rw-r--r-- | source/blender/src/drawtext.c | 5 | ||||
-rw-r--r-- | source/blender/src/editaction.c | 8 | ||||
-rw-r--r-- | source/blender/src/editimasel.c | 5 | ||||
-rw-r--r-- | source/blender/src/editnla.c | 2 | ||||
-rw-r--r-- | source/blender/src/editobject.c | 23 | ||||
-rw-r--r-- | source/blender/src/editsound.c | 4 | ||||
-rw-r--r-- | source/blender/src/filesel.c | 4 | ||||
-rw-r--r-- | source/blender/src/headerbuttons.c | 2 | ||||
-rw-r--r-- | source/blender/src/space.c | 92 |
12 files changed, 290 insertions, 58 deletions
diff --git a/source/blender/include/BSE_drawipo.h b/source/blender/include/BSE_drawipo.h index 6bb6f717b71..5dd8638d722 100644 --- a/source/blender/include/BSE_drawipo.h +++ b/source/blender/include/BSE_drawipo.h @@ -33,11 +33,18 @@ #ifndef BSE_DRAWIPO_H #define BSE_DRAWIPO_H +#define IN_2D_VERT_SCROLL(A) (BLI_in_rcti(&G.v2d->vert, A[0], A[1])) +#define IN_2D_HORIZ_SCROLL(A) (BLI_in_rcti(&G.v2d->hor, A[0], A[1])) + +#define SELECT_REPLACE 1 +#define SELECT_ADD 2 +#define SELECT_SUBTRACT 4 +#define SELECT_INVERT 16 + struct EditIpo; struct View2D; struct rctf; - void calc_ipogrid(void); void draw_ipogrid(void); @@ -53,7 +60,7 @@ void drawscroll(int disptype); void drawipo(void); void scroll_ipobuts(void); -void view2dzoom(void); +int view2dzoom(unsigned short event); int view2dmove(void); void view2dborder(void); diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h index 38b4d3e6e07..6f087f0f330 100644 --- a/source/blender/makesdna/DNA_userdef_types.h +++ b/source/blender/makesdna/DNA_userdef_types.h @@ -48,7 +48,8 @@ typedef struct UserDef { char sounddir[64]; short versions, vrmlflag; // tmp for export, will be replaced by strubi int gameflags; - int dummy_1; + int wheellinescroll; + short uiflag, pad2; } UserDef; extern UserDef U; /* from usiblender.c !!!! */ @@ -71,6 +72,13 @@ extern UserDef U; /* from usiblender.c !!!! */ #define TWOBUTTONMOUSE 4096 #define NONUMPAD 8192 +/* uiflag */ + +#define KEYINSERTACT 1 +#define KEYINSERTOBJ 2 +#define WHEELZOOMDIR 4 +#define FILTERFILEEXTS 8 + /* dupflag */ #define DUPMESH 1 #define DUPCURVE 2 diff --git a/source/blender/src/drawipo.c b/source/blender/src/drawipo.c index 61516565b7b..d72799acbf0 100644 --- a/source/blender/src/drawipo.c +++ b/source/blender/src/drawipo.c @@ -56,6 +56,7 @@ #include "DNA_screen_types.h" #include "DNA_space_types.h" #include "DNA_sequence_types.h" +#include "DNA_userdef_types.h" #include "BKE_utildefines.h" #include "BKE_curve.h" @@ -1440,24 +1441,77 @@ void scroll_ipobuts() -void view2dzoom() +int view2dzoom(unsigned short event) { - float fac, dx, dy; + float fac, dx, dy, wtemp; short mval[2], mvalo[2]; - + areawinset(curarea->win); /* vanuit buttons */ curarea->head_swap= 0; getmouseco_areawin(mvalo); - while(get_mbut()&(L_MOUSE|M_MOUSE)) { - getmouseco_areawin(mval); - - if(mval[0]!=mvalo[0] || mval[1]!=mvalo[1]) { - + while( (get_mbut()&(L_MOUSE|M_MOUSE)) || + (event==WHEELUPMOUSE) || + (event==WHEELDOWNMOUSE) ) { + + /* regular mousewheel: zoom regular + * alt-shift mousewheel: zoom y only + * alt-ctrl mousewheel: zoom x only + */ + if (event==WHEELUPMOUSE) { + if(U.uiflag & WHEELZOOMDIR) + wtemp = -0.1154; + else + wtemp = 0.1154; + + dx= (float)(wtemp*(G.v2d->cur.xmax-G.v2d->cur.xmin)); + dy= (float)(wtemp*(G.v2d->cur.ymax-G.v2d->cur.ymin)); + + switch (G.qual & (LR_CTRLKEY|LR_SHIFTKEY|LR_ALTKEY)) { + case 0: + break; + case (LR_SHIFTKEY|LR_ALTKEY): + dx = 0; + break; + case (LR_CTRLKEY|LR_ALTKEY): + dy = 0; + break; + default: + return 0; + break; + } + } + else if (event==WHEELDOWNMOUSE) { + if(U.uiflag & WHEELZOOMDIR) + wtemp = 0.1154; + else + wtemp = -0.1154; + dx= (float)(wtemp*(G.v2d->cur.xmax-G.v2d->cur.xmin)); + dy= (float)(wtemp*(G.v2d->cur.ymax-G.v2d->cur.ymin)); + + switch (G.qual & (LR_CTRLKEY|LR_SHIFTKEY|LR_ALTKEY)) { + case 0: + break; + case (LR_SHIFTKEY|LR_ALTKEY): + dx = 0; + break; + case (LR_CTRLKEY|LR_ALTKEY): + dy = 0; + break; + default: + return 0; + break; + } + + } + else { + getmouseco_areawin(mval); fac= 0.001*(mval[0]-mvalo[0]); dx= fac*(G.v2d->cur.xmax-G.v2d->cur.xmin); fac= 0.001*(mval[1]-mvalo[1]); dy= fac*(G.v2d->cur.ymax-G.v2d->cur.ymin); + } + if(mval[0]!=mvalo[0] || mval[1]!=mvalo[1]) { G.v2d->cur.xmin+= dx; G.v2d->cur.xmax-= dx; @@ -1471,10 +1525,14 @@ void view2dzoom() screen_swapbuffers(); } else BIF_wait_for_statechange(); + /* return if we were using the mousewheel + */ + if ( (event==WHEELUPMOUSE) || (event==WHEELDOWNMOUSE) ) return 1; } + return 1; } -int view2dmove() +int view2dmove(unsigned short event) { /* return 1 als er iets gedaan is */ float facx=0.0, facy=0.0, dx, dy, left=1.0, right=1.0; @@ -1484,11 +1542,18 @@ int view2dmove() scrarea_do_windraw(curarea); curarea->head_swap= 0; - - if(G.qual & LR_CTRLKEY) { - view2dzoom(); - curarea->head_swap= 0; - return 0; + /* try to do some zooming if the + * middlemouse and ctrl are pressed + * or if the mousewheel is being used. + * Return if zooming was done. + */ + if ( (G.qual & LR_CTRLKEY) || + (event==WHEELUPMOUSE) || + (event==WHEELDOWNMOUSE) ) { + if (view2dzoom(event)) { + curarea->head_swap= 0; + return 0; + } } /* testen waar muis is */ @@ -1500,7 +1565,7 @@ int view2dmove() facx= (G.v2d->cur.xmax-G.v2d->cur.xmin)/(float)(G.v2d->mask.xmax-G.v2d->mask.xmin); facy= (G.v2d->cur.ymax-G.v2d->cur.ymin)/(float)(G.v2d->mask.ymax-G.v2d->mask.ymin); } - else if(BLI_in_rcti(&G.v2d->vert, (int)mvalo[0], (int)mvalo[1])) { + else if(IN_2D_VERT_SCROLL((int)mvalo)) { facy= -(G.v2d->tot.ymax-G.v2d->tot.ymin)/(float)(G.v2d->mask.ymax-G.v2d->mask.ymin); if(get_mbut()&L_MOUSE) { /* welk deel van de scrollbar moet bewegen? */ @@ -1509,7 +1574,7 @@ int view2dmove() leftret= 0; } } - else if(BLI_in_rcti(&G.v2d->hor, (int)mvalo[0], (int)mvalo[1])) { + else if(IN_2D_HORIZ_SCROLL((int)mvalo)) { facx= -(G.v2d->tot.xmax-G.v2d->tot.xmin)/(float)(G.v2d->mask.xmax-G.v2d->mask.xmin); if(get_mbut()&L_MOUSE) { /* welk deel van de scrollbar moet bewegen? */ @@ -1531,32 +1596,77 @@ int view2dmove() if(get_mbut()&L_MOUSE && leftret) return 0; if(facx==0.0 && facy==0.0) return 1; - while(get_mbut()&(L_MOUSE|M_MOUSE)) { - getmouseco_areawin(mval); - if(mval[0]!=mvalo[0] || mval[1]!=mvalo[1]) { - dx= facx*(mvalo[0]-mval[0]); - dy= facy*(mvalo[1]-mval[1]); - G.v2d->cur.xmin+= left*dx; - G.v2d->cur.xmax+= right*dx; - G.v2d->cur.ymin+= left*dy; - G.v2d->cur.ymax+= right*dy; + while( (get_mbut()&(L_MOUSE|M_MOUSE)) || + (event==WHEELUPMOUSE) || + (event==WHEELDOWNMOUSE) ) { + + /* If the mousewheel is used with shift key + * the scroll up and down. If the mousewheel + * is used with the ctrl key then scroll left + * and right. + */ + if (event==WHEELUPMOUSE) { + switch (G.qual & (LR_CTRLKEY|LR_SHIFTKEY|LR_ALTKEY)) { + case (LR_SHIFTKEY): + dx = 0.0; + dy= facy*10.0; + break; + case (LR_CTRLKEY): + dx= facx*10.0; + dy = 0.0; + break; + default: + return 0; + break; + } + } + else if (event==WHEELDOWNMOUSE) { + switch (G.qual & (LR_CTRLKEY|LR_SHIFTKEY|LR_ALTKEY)) { + case (LR_SHIFTKEY): + dx = 0.0; + dy= -facy*10.0; + break; + case (LR_CTRLKEY): + dx= -facx*10.0; + dy = 0.0; + break; + default: + return 0; + break; + } + } + else { + getmouseco_areawin(mval); + dx= facx*(mvalo[0]-mval[0]); + dy= facy*(mvalo[1]-mval[1]); + } + + if(mval[0]!=mvalo[0] || mval[1]!=mvalo[1]) { + + G.v2d->cur.xmin+= left*dx; + G.v2d->cur.xmax+= right*dx; + G.v2d->cur.ymin+= left*dy; + G.v2d->cur.ymax+= right*dy; - test_view2d(G.v2d, curarea->winx, curarea->winy); + test_view2d(G.v2d, curarea->winx, curarea->winy); - scrarea_do_windraw(curarea); - screen_swapbuffers(); + scrarea_do_windraw(curarea); + screen_swapbuffers(); - mvalo[0]= mval[0]; - mvalo[1]= mval[1]; + mvalo[0]= mval[0]; + mvalo[1]= mval[1]; - } - else BIF_wait_for_statechange(); - } - curarea->head_swap= 0; - return 1; + } + else BIF_wait_for_statechange(); + /* return if we were using the mousewheel + */ + if ( (event==WHEELUPMOUSE) || (event==WHEELDOWNMOUSE) ) return 1; + } + + curarea->head_swap= 0; + return 1; } - void view2dborder(void) { diff --git a/source/blender/src/drawtext.c b/source/blender/src/drawtext.c index 178710f9387..f560addf455 100644 --- a/source/blender/src/drawtext.c +++ b/source/blender/src/drawtext.c @@ -55,6 +55,7 @@ #include "DNA_text_types.h" #include "DNA_space_types.h" #include "DNA_screen_types.h" +#include "DNA_userdef_types.h" #include "BKE_utildefines.h" #include "BKE_text.h" @@ -1142,12 +1143,12 @@ void winqreadtextspace(unsigned short event, short val, char ascii) break; case WHEELUPMOUSE: - screen_skip(st, -3); + screen_skip(st, -U.wheellinescroll); do_draw= 1; break; case WHEELDOWNMOUSE: - screen_skip(st, 3); + screen_skip(st, U.wheellinescroll); do_draw= 1; break; } diff --git a/source/blender/src/editaction.c b/source/blender/src/editaction.c index bbae0fd60ac..7a24ea97c61 100644 --- a/source/blender/src/editaction.c +++ b/source/blender/src/editaction.c @@ -673,7 +673,7 @@ void paste_posebuf (int flip){ /* Safely merge all of the channels in this pose into any existing pose */ if (ob->pose){ - if (U.flag & 0x01<<14){ + if (U.uiflag & KEYINSERTACT){ /* Display "Avail, all" dialog */ } for (chan=g_posebuf->chanbase.first; chan; chan=chan->next){ @@ -691,7 +691,7 @@ void paste_posebuf (int flip){ temp = set_pose_channel (ob->pose, temp); - if (U.flag & 0x01<<14){ + if (U.uiflag & KEYINSERTACT){ /* Set keys on pose */ if (chan->flag & POSE_ROT){ set_action_key(ob->action, temp, AC_QUAT_X, newchan); @@ -713,7 +713,7 @@ void paste_posebuf (int flip){ } } - if (U.flag & 0x01<<14){ + if (U.uiflag & KEYINSERTACT){ remake_action_ipos(ob->action); allqueue (REDRAWIPO, 0); allqueue (REDRAWVIEW3D, 0); @@ -1488,6 +1488,8 @@ void winqreadactionspace(unsigned short event, short val, char ascii) break; case MIDDLEMOUSE: + case WHEELUPMOUSE: + case WHEELDOWNMOUSE: view2dmove(); /* in drawipo.c */ break; } diff --git a/source/blender/src/editimasel.c b/source/blender/src/editimasel.c index c572e17d6c1..c7843789d6a 100644 --- a/source/blender/src/editimasel.c +++ b/source/blender/src/editimasel.c @@ -53,6 +53,7 @@ #include "DNA_screen_types.h" #include "DNA_space_types.h" +#include "DNA_userdef_types.h" #include "BKE_global.h" @@ -273,8 +274,8 @@ void winqreadimasel(unsigned short event, short val, char ascii) case IMS_INDIRSLI: case IMS_INDIR: if (simasel->dirsli){ - if (event == WHEELUPMOUSE) simasel->topdir -= 1; - if (event == WHEELDOWNMOUSE) simasel->topdir += 1; + if (event == WHEELUPMOUSE) simasel->topdir -= U.wheellinescroll; + if (event == WHEELDOWNMOUSE) simasel->topdir += U.wheellinescroll; queredraw = 1; } break; diff --git a/source/blender/src/editnla.c b/source/blender/src/editnla.c index 57862d864c7..34b640055c6 100644 --- a/source/blender/src/editnla.c +++ b/source/blender/src/editnla.c @@ -227,6 +227,8 @@ int calc_memleak (void* ptr){ break; case MIDDLEMOUSE: + case WHEELUPMOUSE: + case WHEELDOWNMOUSE: view2dmove(); /* in drawipo.c */ break; } diff --git a/source/blender/src/editobject.c b/source/blender/src/editobject.c index 4040b1dd5c0..c7c1a9ff5c9 100644 --- a/source/blender/src/editobject.c +++ b/source/blender/src/editobject.c @@ -3249,7 +3249,7 @@ void special_aftertrans_update(char mode, int flip, short canceled, int keyflags bPose *pose; bPoseChannel *pchan; - if (U.flag & (0x01<<14) && !canceled){ + if (U.uiflag & KEYINSERTACT && !canceled){ act=G.obpose->action; pose=G.obpose->pose; @@ -3339,7 +3339,7 @@ void special_aftertrans_update(char mode, int flip, short canceled, int keyflags where_is_object(ob); /* altijd ivm track eytc */ /* Set autokey if necessary */ - if ((U.flag & (0x01<<15)) && (!canceled) && (base->flag & SELECT)){ + if ((U.uiflag & KEYINSERTOBJ) && (!canceled) && (base->flag & SELECT)){ if (keyflags & KEYFLAG_ROT){ insertkey(&base->object->id, OB_ROT_X); insertkey(&base->object->id, OB_ROT_Y); @@ -4632,12 +4632,31 @@ void transform(int mode) /* 'g' 'G' 'r' 'R' 's' 'S' 't' or 'w' 'N' */ prop_size*= 1.1; firsttime= 1; } + else { + persptoetsen(PADPLUSKEY); + firsttime= 1; + } + break; + + case WHEELUPMOUSE: + persptoetsen(PADPLUSKEY); + firsttime= 1; break; + case PADMINUS: if(G.f & G_PROPORTIONAL) { prop_size*= 0.90909090; firsttime= 1; } + else { + persptoetsen(PADMINUS); + firsttime= 1; + } + break; + + case WHEELDOWNMOUSE: + persptoetsen(PADMINUS); + firsttime= 1; break; case LEFTSHIFTKEY: diff --git a/source/blender/src/editsound.c b/source/blender/src/editsound.c index b9c2f828281..e3d3e09bf40 100644 --- a/source/blender/src/editsound.c +++ b/source/blender/src/editsound.c @@ -135,12 +135,13 @@ void winqreadsoundspace(unsigned short event, short val, char ascii) } break; case MIDDLEMOUSE: + case WHEELUPMOUSE: + case WHEELDOWNMOUSE: view2dmove(); /* in drawipo.c */ break; case RIGHTMOUSE: /* mouse_select_seq(); */ break; - case WHEELDOWNMOUSE: case PADPLUSKEY: dx= (float)(0.1154*(G.v2d->cur.xmax-G.v2d->cur.xmin)); G.v2d->cur.xmin+= dx; @@ -149,7 +150,6 @@ void winqreadsoundspace(unsigned short event, short val, char ascii) doredraw= 1; break; - case WHEELUPMOUSE: case PADMINUS: dx= (float)(0.15*(G.v2d->cur.xmax-G.v2d->cur.xmin)); G.v2d->cur.xmin-= dx; diff --git a/source/blender/src/filesel.c b/source/blender/src/filesel.c index d3bc996c7db..c78eed7d757 100644 --- a/source/blender/src/filesel.c +++ b/source/blender/src/filesel.c @@ -1737,13 +1737,13 @@ void winqreadfilespace(unsigned short event, short val, char ascii) break; case WHEELDOWNMOUSE: - do_filescrollwheel(sfile, 3); //U.wheellinescroll); + do_filescrollwheel(sfile, 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); + do_filescrollwheel(sfile, -U.wheellinescroll); act= find_active_file(sfile, mval[0], mval[1]); set_active_file(sfile, act); do_draw= 1; diff --git a/source/blender/src/headerbuttons.c b/source/blender/src/headerbuttons.c index bbfdeb99fb7..f82ecc8f085 100644 --- a/source/blender/src/headerbuttons.c +++ b/source/blender/src/headerbuttons.c @@ -3934,7 +3934,7 @@ void do_ipo_buttons(short event) break; case B_VIEW2DZOOM: viewmovetemp= 0; - view2dzoom(); + view2dzoom(event); scrarea_queue_headredraw(curarea); break; diff --git a/source/blender/src/space.c b/source/blender/src/space.c index 75348689e68..7b19a7d9a15 100644 --- a/source/blender/src/space.c +++ b/source/blender/src/space.c @@ -519,6 +519,67 @@ void winqread3d(unsigned short event, short val, char ascii) else mouse_select(); break; + + case WHEELUPMOUSE: + /* Regular: Zoom in */ + /* Shift: Scroll up */ + /* Ctrl: Scroll right */ + /* Alt-Shift: Rotate up */ + /* Alt-Ctrl: Rotate right */ + + if( G.qual & LR_SHIFTKEY ) { + if( G.qual & LR_ALTKEY ) { + G.qual &= ~LR_SHIFTKEY; + persptoetsen(PAD2); + G.qual |= LR_SHIFTKEY; + } else { + persptoetsen(PAD2); + } + } else if( G.qual & LR_CTRLKEY ) { + if( G.qual & LR_ALTKEY ) { + G.qual &= ~LR_CTRLKEY; + persptoetsen(PAD4); + G.qual |= LR_CTRLKEY; + } else { + persptoetsen(PAD4); + } + } else if(U.uiflag & WHEELZOOMDIR) + persptoetsen(PADMINUS); + else + persptoetsen(PADPLUSKEY); + + doredraw= 1; + break; + case WHEELDOWNMOUSE: + /* Regular: Zoom out */ + /* Shift: Scroll down */ + /* Ctrl: Scroll left */ + /* Alt-Shift: Rotate down */ + /* Alt-Ctrl: Rotate left */ + + if( G.qual & LR_SHIFTKEY ) { + if( G.qual & LR_ALTKEY ) { + G.qual &= ~LR_SHIFTKEY; + persptoetsen(PAD8); + G.qual |= LR_SHIFTKEY; + } else { + persptoetsen(PAD8); + } + } else if( G.qual & LR_CTRLKEY ) { + if( G.qual & LR_ALTKEY ) { + G.qual &= ~LR_CTRLKEY; + persptoetsen(PAD6); + G.qual |= LR_CTRLKEY; + } else { + persptoetsen(PAD6); + } + } else if(U.uiflag & WHEELZOOMDIR) + persptoetsen(PADPLUSKEY); + else + persptoetsen(PADMINUS); + + doredraw= 1; + break; case ONEKEY: do_layer_buttons(0); break; @@ -1080,6 +1141,12 @@ void winqreadipo(unsigned short event, short val, char ascii) } else view2dmove(); /* in drawipo.c */ break; + + case WHEELUPMOUSE: + case WHEELDOWNMOUSE: + view2dmove(event); /* in drawipo.c */ + break; + case RIGHTMOUSE: mouse_select_ipo(); allqueue (REDRAWACTION, 0); @@ -1306,8 +1373,8 @@ void drawinfospace(void) "Enables/Disables tooltips"); // uiDefButS(block, ICONTOG|BIT|14, 0, ICON(), 733,10,50,42, &(U.flag), 0, 0, 0, 0, "Automatic keyframe insertion"); - uiDefButS(block, TOG|BIT|14, 0, "KeyAC", 733,32,50,20, &(U.flag), 0, 0, 0, 0, "Automatic keyframe insertion for actions"); - uiDefButS(block, TOG|BIT|15, 0, "KeyOB", 733,10,50,20, &(U.flag), 0, 0, 0, 0, "Automatic keyframe insertion for objects"); + uiDefButS(block, TOG|BIT|0, 0, "KeyAC", 733,32,50,20, &(U.uiflag), 0, 0, 0, 0, "Automatic keyframe insertion for actions"); + uiDefButS(block, TOG|BIT|1, 0, "KeyOB", 733,10,50,20, &(U.uiflag), 0, 0, 0, 0, "Automatic keyframe insertion for objects"); uiDefButS(block, TOG|BIT|1, 0, "Grab Grid", 788,32,106,20, &(U.flag), 0, 0, 0, 0, "Changes default step mode for grabbing"); uiDefButS(block, TOG|BIT|2, 0, "Rot", 842,10,52,20, &(U.flag), 0, 0, 0, 0, "Changes default step mode for rotation"); @@ -1325,9 +1392,17 @@ void drawinfospace(void) uiDefButS(block, TOG|BIT|7, 0, "Material", 1153,32,70,20, &(U.dupflag), 0, 0, 0, 0, "Causes Material data to be duplicated with Shift+D"); uiDefButS(block, TOG|BIT|8, 0, "Texture", 1153,10,70,20, &(U.dupflag), 0, 0, 0, 0, "Causes Texture data to be duplicated with Shift+D"); - - + uiBlockSetCol(block, BUTGREY); + + uiDefButS(block, NUM, 0, "WLines", + 1153,54,70,20, &U.wheellinescroll, + 0.0, 32.0, 0, 0, + "Mousewheel: The number of lines that get skipped"); + uiDefButS(block, TOG|BIT|2, 0, "WZoom", + 1081,54,70,20, &(U.uiflag), 0, 0, 0, 0, + "Mousewheel: Swaps mousewheel zoom direction"); + dx= (1280-90)/6; @@ -1413,8 +1488,11 @@ void winqreadbutspace(unsigned short event, short val, char ascii) break; case MIDDLEMOUSE: - view2dmove(); /* in drawipo.c */ + case WHEELUPMOUSE: + case WHEELDOWNMOUSE: + view2dmove(event); /* in drawipo.c */ break; + case PADPLUSKEY: case PADMINUS: val= SPACE_BUTS; @@ -1592,6 +1670,8 @@ void winqreadsequence(unsigned short event, short val, char ascii) } break; case MIDDLEMOUSE: + case WHEELUPMOUSE: + case WHEELDOWNMOUSE: if(sseq->mainb) break; view2dmove(); /* in drawipo.c */ break; @@ -2097,6 +2177,8 @@ void winqreadoopsspace(unsigned short event, short val, char ascii) gesture(); break; case MIDDLEMOUSE: + case WHEELUPMOUSE: + case WHEELDOWNMOUSE: view2dmove(); /* in drawipo.c */ break; case RIGHTMOUSE: |