Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Poirier <theeth@yahoo.com>2009-12-09 07:51:35 +0300
committerMartin Poirier <theeth@yahoo.com>2009-12-09 07:51:35 +0300
commitbc795694198a700aeb6283741da2a4ed515a70c3 (patch)
tree2e7bcbf523f507d395023015fb05fd749e04a6a8 /source/blender/windowmanager
parent1c47b3acb6fa03ea13f9a1f545a750439dcd68ab (diff)
grabcursor attribute stores full grab mode so we can better differentiate when it needs to wrap around cursor draw.
Also add cocoa exception to wm_get_cursor_position (this should be fixed at the ghost level)
Diffstat (limited to 'source/blender/windowmanager')
-rw-r--r--source/blender/windowmanager/intern/wm_cursors.c4
-rw-r--r--source/blender/windowmanager/intern/wm_draw.c5
-rw-r--r--source/blender/windowmanager/intern/wm_window.c5
3 files changed, 11 insertions, 3 deletions
diff --git a/source/blender/windowmanager/intern/wm_cursors.c b/source/blender/windowmanager/intern/wm_cursors.c
index cec5886014a..dfcc1fcd227 100644
--- a/source/blender/windowmanager/intern/wm_cursors.c
+++ b/source/blender/windowmanager/intern/wm_cursors.c
@@ -181,7 +181,7 @@ void WM_cursor_grab(wmWindow *win, int wrap, int hide, int *bounds)
else if (tabletdata->Active == GHOST_kTabletModeNone)
GHOST_SetCursorGrab(win->ghostwin, mode, bounds);
- win->grabcursor = 1;
+ win->grabcursor = mode;
}
}
}
@@ -191,7 +191,7 @@ void WM_cursor_ungrab(wmWindow *win)
if ((G.f & G_DEBUG) == 0) {
if(win && win->ghostwin) {
GHOST_SetCursorGrab(win->ghostwin, GHOST_kGrabDisable, NULL);
- win->grabcursor = 0;
+ win->grabcursor = GHOST_kGrabDisable;
}
}
}
diff --git a/source/blender/windowmanager/intern/wm_draw.c b/source/blender/windowmanager/intern/wm_draw.c
index 96aea760e20..3335efeb166 100644
--- a/source/blender/windowmanager/intern/wm_draw.c
+++ b/source/blender/windowmanager/intern/wm_draw.c
@@ -41,6 +41,9 @@
#include "BKE_context.h"
#include "BKE_global.h"
+#include "BKE_utildefines.h"
+
+#include "GHOST_C-api.h"
#include "ED_screen.h"
@@ -74,7 +77,7 @@ static void wm_paintcursor_draw(bContext *C, ARegion *ar)
for(pc= wm->paintcursors.first; pc; pc= pc->next) {
if(pc->poll == NULL || pc->poll(C)) {
ARegion *ar= CTX_wm_region(C);
- if (win->grabcursor) {
+ if (ELEM(win->grabcursor, GHOST_kGrabWrap, GHOST_kGrabHide)) {
int x = 0, y = 0;
wm_get_cursor_position(win, &x, &y);
pc->draw(C, x - ar->winrct.xmin, y - ar->winrct.ymin, pc->customdata);
diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c
index 31ad8cdcc63..6ae320da912 100644
--- a/source/blender/windowmanager/intern/wm_window.c
+++ b/source/blender/windowmanager/intern/wm_window.c
@@ -977,7 +977,12 @@ void wm_get_cursor_position(wmWindow *win, int *x, int *y)
{
GHOST_GetCursorPosition(g_system, x, y);
GHOST_ScreenToClient(win->ghostwin, *x, *y, x, y);
+#if defined(__APPLE__) && defined(GHOST_COCOA)
+ //Cocoa has silly exception that should be fixed at the ghost level
+ //(ghost is an allegory for an invisible system specific code)
+#else
*y = (win->sizey-1) - *y;
+#endif
}
/* ******************* exported api ***************** */