Commit: 164a1af8cdb8a54caf873c74d3792fee95914803
Author: Julian Eisel
Date:   Wed Mar 16 20:14:49 2016 +0100
Branches: HMD_viewport
https://developer.blender.org/rB164a1af8cdb8a54caf873c74d3792fee95914803

Use a more common way to open the HMD window

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

M       source/blender/windowmanager/WM_api.h
M       source/blender/windowmanager/intern/wm_operators.c
M       source/blender/windowmanager/intern/wm_window.c

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

diff --git a/source/blender/windowmanager/WM_api.h 
b/source/blender/windowmanager/WM_api.h
index 8386ce2..6ce9da7 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -95,7 +95,7 @@ bool          WM_window_is_fullscreen (struct wmWindow *win);
 enum {
        WM_WINDOW_RENDER = 1,
        WM_WINDOW_USERPREFS,
-       // WM_WINDOW_FILESEL // UNUSED
+       WM_WINDOW_HMD,
 };
 
 struct wmWindow        *WM_window_open(struct bContext *C, const struct rcti 
*rect);
diff --git a/source/blender/windowmanager/intern/wm_operators.c 
b/source/blender/windowmanager/intern/wm_operators.c
index 8ab02d4..134f1aa 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -5099,6 +5099,7 @@ static void WM_OT_stereo3d_set(wmOperatorType *ot)
 
 static int wm_hmd_view_open_invoke(bContext *C, wmOperator *UNUSED(op), const 
wmEvent *UNUSED(event))
 {
+       wmWindow *prevwin = CTX_wm_window(C);
        wmWindowManager *wm = CTX_wm_manager(C);
        wmWindow *win;
 
@@ -5109,44 +5110,10 @@ static int wm_hmd_view_open_invoke(bContext *C, 
wmOperator *UNUSED(op), const wm
        }
        /* open */
        else {
-               ScrArea *sa;
-
-               win = wm_window_copy_test(C, CTX_wm_window(C));
-
-               /* XXX this is assuming there's already a 3d view, we should 
create a new one instead */
-               for (sa = win->screen->areabase.first; sa; sa = sa->next) {
-                       if (sa->spacetype == SPACE_VIEW3D) {
-                               break;
-                       }
-               }
-
-               if (!sa) {
-                       BLI_assert(0);
-                       return (OPERATOR_CANCELLED | OPERATOR_PASS_THROUGH);
-               }
-
+               rcti rect = {0, prevwin->sizex, 0, prevwin->sizey};
+               win = WM_window_open_temp(C, &rect, WM_WINDOW_HMD);
+               ED_screen_state_toggle(C, win, win->screen->areabase.first, 
SCREENFULL);
                wm->win_hmd = win;
-               wm_window_title(wm, win, "Blender HMD View");
-
-               wmWindow *prevwin = CTX_wm_window(C);
-               ScrArea *prevsa = CTX_wm_area(C);
-               ARegion *prevar = CTX_wm_region(C);
-
-               CTX_wm_window_set(C, win);
-               CTX_wm_area_set(C, sa);
-               CTX_wm_region_set(C, NULL);
-               ED_screen_state_toggle(C, win, sa, SCREENFULL);
-
-               ED_area_tag_redraw(sa);
-
-               /* It is possible that new layers becomes visible. */
-               if (sa->spacetype == SPACE_VIEW3D) {
-                       DAG_on_visible_update(CTX_data_main(C), false);
-               }
-
-               CTX_wm_window_set(C, prevwin);
-               CTX_wm_area_set(C, prevsa);
-               CTX_wm_region_set(C, prevar);
        }
 
        return OPERATOR_FINISHED;
diff --git a/source/blender/windowmanager/intern/wm_window.c 
b/source/blender/windowmanager/intern/wm_window.c
index fb2a8e8..6fa7993 100644
--- a/source/blender/windowmanager/intern/wm_window.c
+++ b/source/blender/windowmanager/intern/wm_window.c
@@ -619,7 +619,7 @@ wmWindow *WM_window_open(bContext *C, const rcti *rect)
  * Uses `screen->temp` tag to define what to do, currently it limits
  * to only one "temp" window for render out, preferences, filewindow, etc...
  *
- * \param type: WM_WINDOW_RENDER, WM_WINDOW_USERPREFS...
+ * \param type: WM_WINDOW_RENDER, WM_WINDOW_USERPREFS, WM_WINDOW_HMD...
  * \return the window or NULL.
  */
 wmWindow *WM_window_open_temp(bContext *C, const rcti *rect_init, int type)
@@ -682,25 +682,30 @@ wmWindow *WM_window_open_temp(bContext *C, const rcti 
*rect_init, int type)
        /* ensure it shows the right spacetype editor */
        sa = win->screen->areabase.first;
        CTX_wm_area_set(C, sa);
-       
-       if (type == WM_WINDOW_RENDER) {
-               ED_area_newspace(C, sa, SPACE_IMAGE, false);
-       }
-       else {
-               ED_area_newspace(C, sa, SPACE_USERPREF, false);
+
+       int spacetype;
+       switch (type) {
+               case WM_WINDOW_RENDER:
+                       spacetype = SPACE_IMAGE;
+                       title = IFACE_("Blender Render");
+                       break;
+               case WM_WINDOW_USERPREFS:
+                       spacetype = SPACE_IMAGE;
+                       title = IFACE_("Blender User Preferences");
+                       break;
+               case WM_WINDOW_HMD:
+                       spacetype = SPACE_VIEW3D;
+                       title = IFACE_("HMD View");
+                       break;
+               default:
+                       title = IFACE_("Blender");
+                       BLI_assert(0);
+                       break;
        }
-       
+       ED_area_newspace(C, sa, spacetype, false);
+
        ED_screen_set(C, win->screen);
        ED_screen_refresh(CTX_wm_manager(C), win); /* test scale */
-       
-       if (sa->spacetype == SPACE_IMAGE)
-               title = IFACE_("Blender Render");
-       else if (ELEM(sa->spacetype, SPACE_OUTLINER, SPACE_USERPREF))
-               title = IFACE_("Blender User Preferences");
-       else if (sa->spacetype == SPACE_FILE)
-               title = IFACE_("Blender File View");
-       else
-               title = "Blender";
 
        if (win->ghostwin) {
                GHOST_SetTitle(win->ghostwin, title);

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

Reply via email to