forked from bartvdbraak/blender
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:
parent
9bf7a2a8c4
commit
24321d4891
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user