--- code/q3_ui/ui_atoms.c +++ code/q3_ui/ui_atoms.c @@ -874,25 +874,32 @@ int i; menucommon_s* m; if (!uis.activemenu) return; // update mouse screen position - uis.cursorx += dx; - if (uis.cursorx < -uis.bias) - uis.cursorx = -uis.bias; - else if (uis.cursorx > SCREEN_WIDTH+uis.bias) - uis.cursorx = SCREEN_WIDTH+uis.bias; - uis.cursory += dy; - if (uis.cursory < 0) - uis.cursory = 0; - else if (uis.cursory > SCREEN_HEIGHT) - uis.cursory = SCREEN_HEIGHT; + uis.cursor_hx += dx; + + if ( uis.cursor_hx < 0 ) + uis.cursor_hx = 0; + if ( uis.cursor_hx > uis.glconfig.vidWidth ) + uis.cursor_hx = uis.glconfig.vidWidth ; + + uis.cursor_hy += dy; + + if ( uis.cursor_hy < 0 ) + uis.cursor_hy = 0; + if ( uis.cursor_hy > uis.glconfig.vidHeight -1 ) + uis.cursor_hy = uis.glconfig.vidHeight - 1; + + // update virtual mouse cursor coordinates + uis.cursorx = (uis.cursor_hx - uis.bias) / uis.scale; + uis.cursory = uis.cursor_hy / uis.scale; // region test the active menu items for (i=0; initems; i++) { m = (menucommon_s*)uis.activemenu->items[i]; if (m->flags & (QMF_GRAYED|QMF_INACTIVE)) --- code/q3_ui/ui_local.h +++ code/q3_ui/ui_local.h @@ -530,16 +530,18 @@ // // ui_atoms.c // typedef struct { int frametime; int realtime; - int cursorx; - int cursory; + float cursorx; + float cursory; + int cursor_hx; + int cursor_hy; int menusp; menuframework_s* activemenu; menuframework_s* stack[MAX_MENUDEPTH]; glconfig_t glconfig; qboolean debug; qhandle_t whiteShader; qhandle_t menuBackShader;