diff options
author | Ton Roosendaal <ton@blender.org> | 2013-05-25 18:08:56 +0400 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2013-05-25 18:08:56 +0400 |
commit | 24321d4891224befb9e9ee666950f02b21e6f1c7 (patch) | |
tree | 7859c456b71cc4a67ab5855c6a1dac6c3ce1fa63 /source/blender | |
parent | 9bf7a2a8c49d07bf41b5b2f743075ccf45cc9e02 (diff) |
Solving ancient Blender window sizing issue;
- Removed grid-snapping for area coordinates on scaling windows.
That caused the areas to shrink or expand, and eventually corrupt screen layouts.
- Added simple but efficient life resize for OSX. I need to know why this is so much
code for Windows... I suggest Windows to just copy same method; dispatch the queue,
and just let the event system draw.
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/editors/screen/screen_edit.c | 8 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_window.c | 7 |
2 files changed, 11 insertions, 4 deletions
diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index e3c5161463b..39bc31c35cf 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -664,15 +664,15 @@ static void screen_test_scale(bScreen *sc, int winsizex, int winsizey) * need some way to store these as floats internally and re-apply from there. */ tempf = ((float)sv->vec.x) * facx; sv->vec.x = (short)(tempf + 0.5f); - sv->vec.x += AREAGRID - 1; - sv->vec.x -= (sv->vec.x % AREAGRID); + //sv->vec.x += AREAGRID - 1; + //sv->vec.x -= (sv->vec.x % AREAGRID); CLAMP(sv->vec.x, 0, winsizex); tempf = ((float)sv->vec.y) * facy; sv->vec.y = (short)(tempf + 0.5f); - sv->vec.y += AREAGRID - 1; - sv->vec.y -= (sv->vec.y % AREAGRID); + //sv->vec.y += AREAGRID - 1; + //sv->vec.y -= (sv->vec.y % AREAGRID); CLAMP(sv->vec.y, 0, winsizey); } diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c index fe419010780..282e14cc5fe 100644 --- a/source/blender/windowmanager/intern/wm_window.c +++ b/source/blender/windowmanager/intern/wm_window.c @@ -900,6 +900,13 @@ static int ghost_event_proc(GHOST_EventHandle evt, GHOST_TUserDataPtr C_void_ptr wm_draw_window_clear(win); WM_event_add_notifier(C, NC_SCREEN | NA_EDITED, NULL); WM_event_add_notifier(C, NC_WINDOW | NA_EDITED, NULL); + +#if defined(__APPLE__) + /* OSX doesn't return to the mainloop while resize */ + wm_event_do_handlers(C); + wm_event_do_notifiers(C); + wm_draw_update(C); +#endif } } break; |