Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Eisel <eiseljulian@gmail.com>2015-10-27 14:53:58 +0300
committerJulian Eisel <eiseljulian@gmail.com>2015-10-27 14:53:58 +0300
commit505a31bd22e530825e6abd4ed61b0ad143b14820 (patch)
treef2a0553d639bd6a64e6e6886bd2d6df5201bcf24 /source/blender/windowmanager
parent19137e86bb9e718726898228e11657a57ae4f311 (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.c25
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);