forked from bartvdbraak/blender
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:
parent
c0e4c7bbc6
commit
29bee35112
@ -169,9 +169,10 @@ typedef struct wmWindow {
|
|||||||
short monitor; /* multiscreen... no idea how to store yet */
|
short monitor; /* multiscreen... no idea how to store yet */
|
||||||
short active; /* set to 1 if an active window, for quick rejects */
|
short active; /* set to 1 if an active window, for quick rejects */
|
||||||
short cursor; /* current mouse cursor type */
|
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 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 */
|
struct wmEvent *eventstate; /* storage for event system */
|
||||||
|
|
||||||
|
@ -116,6 +116,9 @@ void WM_cursor_set(wmWindow *win, int curs)
|
|||||||
|
|
||||||
GHOST_SetCursorVisibility(win->ghostwin, 1);
|
GHOST_SetCursorVisibility(win->ghostwin, 1);
|
||||||
|
|
||||||
|
if(curs == CURSOR_STD && win->modalcursor)
|
||||||
|
curs= win->modalcursor;
|
||||||
|
|
||||||
win->cursor= curs;
|
win->cursor= curs;
|
||||||
|
|
||||||
/* detect if we use system cursor or Blender cursor */
|
/* 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)
|
if(win->lastcursor == 0)
|
||||||
win->lastcursor = win->cursor;
|
win->lastcursor = win->cursor;
|
||||||
|
win->modalcursor = val;
|
||||||
WM_cursor_set(win, val);
|
WM_cursor_set(win, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WM_cursor_restore(wmWindow *win)
|
void WM_cursor_restore(wmWindow *win)
|
||||||
{
|
{
|
||||||
|
win->modalcursor = 0;
|
||||||
if(win->lastcursor)
|
if(win->lastcursor)
|
||||||
WM_cursor_set(win, win->lastcursor);
|
WM_cursor_set(win, win->lastcursor);
|
||||||
win->lastcursor = 0;
|
win->lastcursor = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user