diff options
author | Julian Eisel <eiseljulian@gmail.com> | 2015-10-27 14:53:58 +0300 |
---|---|---|
committer | Julian Eisel <eiseljulian@gmail.com> | 2015-10-27 14:53:58 +0300 |
commit | 505a31bd22e530825e6abd4ed61b0ad143b14820 (patch) | |
tree | f2a0553d639bd6a64e6e6886bd2d6df5201bcf24 /source/blender/windowmanager | |
parent | 19137e86bb9e718726898228e11657a57ae4f311 (diff) |
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.
Diffstat (limited to 'source/blender/windowmanager')
-rw-r--r-- | source/blender/windowmanager/intern/wm_window.c | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c index d8e6671afda..22a70278b95 100644 --- a/source/blender/windowmanager/intern/wm_window.c +++ b/source/blender/windowmanager/intern/wm_window.c @@ -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); |