Commit: 764a87893888db07f508f41dff7f7766ab4b4b8e
Author: Julian Eisel
Date: Thu Mar 10 03:58:09 2016 +0100
Branches: HMD_viewport
https://developer.blender.org/rB764a87893888db07f508f41dff7f7766ab4b4b8e
Get operator to open HMD window to work
===================================================================
M source/blender/windowmanager/intern/wm_operators.c
===================================================================
diff --git a/source/blender/windowmanager/intern/wm_operators.c
b/source/blender/windowmanager/intern/wm_operators.c
index ee8672f..8852857 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -5099,19 +5099,51 @@ static void WM_OT_stereo3d_set(wmOperatorType *ot)
static int wm_md_view_open_invoke(bContext *C, wmOperator *UNUSED(op), const
wmEvent *UNUSED(event))
{
- wmWindow *win_old = CTX_wm_window(C);
- wm_window_copy_test(C, win_old);
- return OPERATOR_FINISHED;
+ wmWindow *win = wm_window_copy_test(C, CTX_wm_window(C));
+ ScrArea *sa;
+
+ /* 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);
+ }
+ 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;
}
static void WM_OT_hmd_view_open(wmOperatorType *ot)
{
- ot->name = "Open HMD View Window";
- ot->idname = "WM_OT_hmd_view_open";
- ot->description = "Open a separate window for display on a head mounted
display";
+ ot->name = "Open HMD View Window";
+ ot->idname = "WM_OT_hmd_view_open";
+ ot->description = "Open a separate window for display on a head mounted
display";
- ot->invoke = wm_md_view_open_invoke;
- ot->poll = WM_operator_winactive;
+ ot->invoke = wm_md_view_open_invoke;
+ ot->poll = WM_operator_winactive;
}
/* ******************************************************* */
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs