diff options
| author | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2019-06-03 21:09:03 +0200 |
|---|---|---|
| committer | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2019-06-03 21:09:03 +0200 |
| commit | 5ab26a17b00187f4f6600cda7cc09507a99c7113 (patch) | |
| tree | 3b022c38c4d2403932a3d668561caf00b33f6f47 /src | |
| parent | ad1747008cf520ce53020cfe9ee42957f73ce77c (diff) | |
Better use of the did_view_resolution_change message sent to FLViewLayer
Diffstat (limited to 'src')
| -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.; |
