diff options
| -rw-r--r-- | src/Fl_cocoa.mm | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm index a64f70c16..cb549001e 100644 --- a/src/Fl_cocoa.mm +++ b/src/Fl_cocoa.mm @@ -2185,6 +2185,11 @@ static FLTextInputContext* fltextinputcontext_instance = nil; Fl_Window *window = [(FLWindow*)[self window] getFl_Window]; if (!window) return; // needed e.g. when closing a tab in a window if (!layer_data) { // runs when window is created, resized, changed screen resolution + Fl_Cocoa_Window_Driver *d = Fl_Cocoa_Window_Driver::driver(window); + if (d->wait_for_expose_value) { + [super did_view_resolution_change]; + d->wait_for_expose_value = 0; + } [self prepare_bitmap_for_layer]; Fl_X *i = Fl_X::i(window); if ( i->region ) { @@ -2193,7 +2198,7 @@ static FLTextInputContext* fltextinputcontext_instance = nil; } window->clear_damage(FL_DAMAGE_ALL); through_Fl_X_flush = YES; - Fl_Cocoa_Window_Driver::driver(window)->Fl_Window_Driver::flush(); + d->Fl_Window_Driver::flush(); Fl_Cocoa_Window_Driver::q_release_context(); through_Fl_X_flush = NO; window->clear_damage(); @@ -2206,13 +2211,10 @@ static FLTextInputContext* fltextinputcontext_instance = nil; } - (void)prepare_bitmap_for_layer { Fl_Window *window = [(FLWindow*)[self window] getFl_Window]; - Fl_Cocoa_Window_Driver *d = Fl_Cocoa_Window_Driver::driver(window); CALayer *layer = [self layer]; NSRect rect = [self frame]; layer.bounds = NSRectToCGRect(rect); - [self did_view_resolution_change]; - d->wait_for_expose_value = 0; - if (d->mapped_to_retina()) { + if (Fl_Cocoa_Window_Driver::driver(window)->mapped_to_retina()) { rect.size.width *= 2; rect.size.height *= 2; layer.contentsScale = 2.; } else layer.contentsScale = 1.; |
