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.
This commit is contained in:
Ton Roosendaal 2013-05-25 14:08:56 +00:00
parent 9bf7a2a8c4
commit 24321d4891
4 changed files with 15 additions and 22 deletions

@ -53,17 +53,7 @@ enum {
#endif
#pragma mark Cocoa window delegate object
/* live resize ugly patch
extern "C" {
struct bContext;
typedef struct bContext bContext;
bContext* ghostC;
extern int wm_window_timer(const bContext *C);
extern void wm_window_process_events(const bContext *C);
extern void wm_event_do_handlers(bContext *C);
extern void wm_event_do_notifiers(bContext *C);
extern void wm_draw_update(bContext *C);
};*/
@interface CocoaWindowDelegate : NSObject
<NSWindowDelegate>
{
@ -125,14 +115,10 @@ extern "C" {
#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
//}
#endif
/* Live resize ugly patch. Needed because live resize runs in a modal loop, not letting main loop run
/* Live resize, send event, gets handled in wm_window.c. Needed because live resize runs in a modal loop, not letting main loop run */
if ([[notification object] inLiveResize]) {
systemCocoa->dispatchEvents();
wm_window_timer(ghostC);
wm_event_do_handlers(ghostC);
wm_event_do_notifiers(ghostC);
wm_draw_update(ghostC);
}*/
}
}
- (void)windowDidChangeBackingProperties:(NSNotification *)notification

@ -887,7 +887,7 @@ GHOST_TSuccess GHOST_WindowWin32::installDrawingContext(GHOST_TDrawingContextTyp
}
else {
m_multisampleEnabled = GHOST_kSuccess;
printf("Multisample failed to initialized\n");
printf("Multisample failed to initialize\n");
success = GHOST_kSuccess;
}
}

@ -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);
}

@ -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;