Small fix from the todo:

"Modal cursors" now remain visible, until reset. These cursors
were reset already on edges. Example: 3d view toolbar, grease 
pencil. Do note, only use WM_cursor_modal() on real modal tools,
and restore it at end.
This commit is contained in:
Ton Roosendaal 2011-01-22 18:00:11 +00:00
parent c0e4c7bbc6
commit 29bee35112
2 changed files with 8 additions and 2 deletions

@ -169,9 +169,10 @@ typedef struct wmWindow {
short monitor; /* multiscreen... no idea how to store yet */
short active; /* set to 1 if an active window, for quick rejects */
short cursor; /* current mouse cursor type */
short lastcursor; /* for temp waitcursor */
short lastcursor; /* previous cursor when setting modal one */
short modalcursor; /* the current modal cursor */
short addmousemove; /* internal: tag this for extra mousemove event, makes cursors/buttons active on UI switching */
short pad2[2];
short pad2;
struct wmEvent *eventstate; /* storage for event system */

@ -116,6 +116,9 @@ void WM_cursor_set(wmWindow *win, int curs)
GHOST_SetCursorVisibility(win->ghostwin, 1);
if(curs == CURSOR_STD && win->modalcursor)
curs= win->modalcursor;
win->cursor= curs;
/* detect if we use system cursor or Blender cursor */
@ -141,11 +144,13 @@ void WM_cursor_modal(wmWindow *win, int val)
{
if(win->lastcursor == 0)
win->lastcursor = win->cursor;
win->modalcursor = val;
WM_cursor_set(win, val);
}
void WM_cursor_restore(wmWindow *win)
{
win->modalcursor = 0;
if(win->lastcursor)
WM_cursor_set(win, win->lastcursor);
win->lastcursor = 0;