[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