Skip to content

Commit

Permalink
ui/cocoa: Set UI information
Browse files Browse the repository at this point in the history
Signed-off-by: Akihiko Odaki <akihiko.odaki@gmail.com>
Message-Id: <20210616141910.54188-1-akihiko.odaki@gmail.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
  • Loading branch information
akihikodaki authored and kraxel committed Jun 23, 2021
1 parent b22726a commit 15280e8
Showing 1 changed file with 49 additions and 0 deletions.
49 changes: 49 additions & 0 deletions ui/cocoa.m
Expand Up @@ -518,6 +518,43 @@ - (void) setContentDimensions
}
}

- (void) updateUIInfo
{
NSSize frameSize;
QemuUIInfo info;

if (!qemu_console_is_graphic(dcl.con)) {
return;
}

if ([self window]) {
NSDictionary *description = [[[self window] screen] deviceDescription];
CGDirectDisplayID display = [[description objectForKey:@"NSScreenNumber"] unsignedIntValue];
NSSize screenSize = [[[self window] screen] frame].size;
CGSize screenPhysicalSize = CGDisplayScreenSize(display);

frameSize = isFullscreen ? screenSize : [self frame].size;
info.width_mm = frameSize.width / screenSize.width * screenPhysicalSize.width;
info.height_mm = frameSize.height / screenSize.height * screenPhysicalSize.height;
} else {
frameSize = [self frame].size;
info.width_mm = 0;
info.height_mm = 0;
}

info.xoff = 0;
info.yoff = 0;
info.width = frameSize.width;
info.height = frameSize.height;

dpy_set_ui_info(dcl.con, &info);
}

- (void)viewDidMoveToWindow
{
[self updateUIInfo];
}

- (void) switchSurface:(pixman_image_t *)image
{
COCOA_DEBUG("QemuCocoaView: switchSurface\n");
Expand Down Expand Up @@ -1172,6 +1209,16 @@ - (NSApplicationTerminateReply)applicationShouldTerminate:
return [self verifyQuit];
}

- (void)windowDidChangeScreen:(NSNotification *)notification
{
[cocoaView updateUIInfo];
}

- (void)windowDidResize:(NSNotification *)notification
{
[cocoaView updateUIInfo];
}

/* Called when the user clicks on a window's close button */
- (BOOL)windowShouldClose:(id)sender
{
Expand Down Expand Up @@ -1836,6 +1883,8 @@ static void cocoa_switch(DisplayChangeListener *dcl,

COCOA_DEBUG("qemu_cocoa: cocoa_switch\n");

[cocoaView updateUIInfo];

// The DisplaySurface will be freed as soon as this callback returns.
// We take a reference to the underlying pixman image here so it does
// not disappear from under our feet; the switchSurface method will
Expand Down

0 comments on commit 15280e8

Please sign in to comment.