Commit: 42f6252f2d3d08f07d395f581c9acc419c670c19
Author: Brecht Van Lommel
Date:   Thu Aug 4 01:05:27 2016 +0200
Branches: master
https://developer.blender.org/rB42f6252f2d3d08f07d395f581c9acc419c670c19

Fix T47782: popups with wrong size when switching from retina to non-retina on 
OS X.

===================================================================

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 b68b607..4252879 100644
--- a/source/blender/windowmanager/intern/wm_window.c
+++ b/source/blender/windowmanager/intern/wm_window.c
@@ -69,6 +69,8 @@
 #include "ED_screen.h"
 #include "ED_fileselect.h"
 
+#include "UI_interface.h"
+
 #include "PIL_time.h"
 
 #include "GPU_draw.h"
@@ -1194,11 +1196,19 @@ static int ghost_event_proc(GHOST_EventHandle evt, 
GHOST_TUserDataPtr C_void_ptr
                                break;
                        }
                        case GHOST_kEventNativeResolutionChange:
+                       {
                                // printf("change, pixel size %f\n", 
GHOST_GetNativePixelSize(win->ghostwin));
                                
                                U.pixelsize = wm_window_pixelsize(win);
                                BKE_blender_userdef_refresh();
 
+                               // close all popups since they are positioned 
with the pixel
+                               // size baked in and it's difficult to correct 
them
+                               wmWindow *oldWindow = CTX_wm_window(C);
+                               CTX_wm_window_set(C, win);
+                               UI_popup_handlers_remove_all(C, 
&win->modalhandlers);
+                               CTX_wm_window_set(C, oldWindow);
+
                                wm_window_make_drawable(wm, win);
                                wm_draw_window_clear(win);
 
@@ -1206,6 +1216,7 @@ static int ghost_event_proc(GHOST_EventHandle evt, 
GHOST_TUserDataPtr C_void_ptr
                                WM_event_add_notifier(C, NC_WINDOW | NA_EDITED, 
NULL);
 
                                break;
+                       }
                        case GHOST_kEventTrackpad:
                        {
                                GHOST_TEventTrackpadData *pd = data;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to