Fix: Open tmp windows with size multiplied by virtual pixelsize

Opening a tmp window on a 4K display with virtual pixelsize set to double results in a too small window. For Retina this seems to be handled on GHOST level already, so multiply by virtual pixelsize only.
This commit is contained in:
Julian Eisel 2015-10-27 12:53:58 +01:00
parent 19137e86bb
commit 505a31bd22
1 changed files with 12 additions and 13 deletions

View File

@ -371,17 +371,14 @@ void wm_window_title(wmWindowManager *wm, wmWindow *win)
}
}
static float wm_window_get_virtual_pixelsize(void)
{
return ((U.virtual_pixel == VIRTUAL_PIXEL_NATIVE) ? 1.0f : 2.0f);
}
float wm_window_pixelsize(wmWindow *win)
{
float pixelsize = GHOST_GetNativePixelSize(win->ghostwin);
switch (U.virtual_pixel) {
default:
case VIRTUAL_PIXEL_NATIVE:
return pixelsize;
case VIRTUAL_PIXEL_DOUBLE:
return 2.0f * pixelsize;
}
return (GHOST_GetNativePixelSize(win->ghostwin) * wm_window_get_virtual_pixelsize());
}
/* belongs to below */
@ -626,6 +623,7 @@ wmWindow *WM_window_open_temp(bContext *C, const rcti *rect_init, int type)
Scene *scene = CTX_data_scene(C);
const char *title;
rcti rect = *rect_init;
const short px_virtual = (short)wm_window_get_virtual_pixelsize();
/* changes rect to fit within desktop */
wm_window_check_position(&rect);
@ -642,10 +640,11 @@ wmWindow *WM_window_open_temp(bContext *C, const rcti *rect_init, int type)
win->posx = rect.xmin;
win->posy = rect.ymin;
}
win->sizex = BLI_rcti_size_x(&rect);
win->sizey = BLI_rcti_size_y(&rect);
/* multiply with virtual pixelsize, ghost handles native one (e.g. for retina) */
win->sizex = BLI_rcti_size_x(&rect) * px_virtual;
win->sizey = BLI_rcti_size_y(&rect) * px_virtual;
if (win->ghostwin) {
wm_window_set_size(win, win->sizex, win->sizey);
wm_window_raise(win);