[Bf-blender-cvs] [164a1af] HMD_viewport: Use a more common way to open the HMD window
Julian Eisel
noreply at git.blender.org
Wed Mar 16 20:19:07 CET 2016
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);
More information about the Bf-blender-cvs
mailing list