[Bf-blender-cvs] [505a31b] master: Fix: Open tmp windows with size multiplied by virtual pixelsize
Julian Eisel
noreply at git.blender.org
Tue Oct 27 13:01:41 CET 2015
Commit: 505a31bd22e530825e6abd4ed61b0ad143b14820
Author: Julian Eisel
Date: Tue Oct 27 12:53:58 2015 +0100
Branches: master
https://developer.blender.org/rB505a31bd22e530825e6abd4ed61b0ad143b14820
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.
===================================================================
M source/blender/windowmanager/intern/wm_window.c
===================================================================
diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c
index d8e6671..22a7027 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);
More information about the Bf-blender-cvs
mailing list