[Bf-blender-cvs] [5d3f679013b] blender2.8: Code cleanup: remove WM subwindows.

Brecht Van Lommel noreply at git.blender.org
Sat Feb 17 14:27:41 CET 2018


Commit: 5d3f679013bbbb9f0c7aae47b5653c54266cf7ca
Author: Brecht Van Lommel
Date:   Fri Feb 16 22:41:46 2018 +0100
Branches: blender2.8
https://developer.blender.org/rB5d3f679013bbbb9f0c7aae47b5653c54266cf7ca

Code cleanup: remove WM subwindows.

These no longer made much sense after regions were added, they just
duplicated state that was already in the regions.

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

M	source/blender/blenkernel/intern/screen.c
M	source/blender/blenloader/intern/readfile.c
M	source/blender/editors/include/ED_screen.h
M	source/blender/editors/interface/interface.c
M	source/blender/editors/interface/interface_region_popup.c
M	source/blender/editors/screen/area.c
M	source/blender/editors/screen/screen_draw.c
M	source/blender/editors/screen/screen_edit.c
M	source/blender/editors/screen/screen_ops.c
M	source/blender/editors/space_info/info_report.c
M	source/blender/editors/space_view3d/view3d_utils.c
M	source/blender/makesdna/DNA_screen_types.h
M	source/blender/makesdna/DNA_windowmanager_types.h
M	source/blender/makesrna/intern/rna_screen.c
M	source/blender/windowmanager/CMakeLists.txt
M	source/blender/windowmanager/WM_api.h
M	source/blender/windowmanager/WM_types.h
M	source/blender/windowmanager/intern/wm_draw.c
M	source/blender/windowmanager/intern/wm_event_system.c
M	source/blender/windowmanager/intern/wm_gesture.c
M	source/blender/windowmanager/intern/wm_gesture_ops.c
M	source/blender/windowmanager/intern/wm_operators.c
M	source/blender/windowmanager/intern/wm_subwindow.c
M	source/blender/windowmanager/intern/wm_window.c
D	source/blender/windowmanager/wm_subwindow.h

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

diff --git a/source/blender/blenkernel/intern/screen.c b/source/blender/blenkernel/intern/screen.c
index 754f59d2e33..a985fb9275a 100644
--- a/source/blender/blenkernel/intern/screen.c
+++ b/source/blender/blenkernel/intern/screen.c
@@ -182,7 +182,7 @@ ARegion *BKE_area_region_copy(SpaceType *st, ARegion *ar)
 	BLI_listbase_clear(&newar->panels_category);
 	BLI_listbase_clear(&newar->panels_category_active);
 	BLI_listbase_clear(&newar->ui_lists);
-	newar->swinid = 0;
+	newar->visible = 0;
 	newar->manipulator_map = NULL;
 	newar->regiontimer = NULL;
 	newar->headerstr = NULL;
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index d1646137d11..6e89ed36add 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -6505,7 +6505,6 @@ static void direct_link_windowmanager(FileData *fd, wmWindowManager *wm)
 		BLI_listbase_clear(&win->queue);
 		BLI_listbase_clear(&win->handlers);
 		BLI_listbase_clear(&win->modalhandlers);
-		BLI_listbase_clear(&win->subwindows);
 		BLI_listbase_clear(&win->gesture);
 		BLI_listbase_clear(&win->drawdata);
 		
@@ -7307,7 +7306,7 @@ static void direct_link_region(FileData *fd, ARegion *ar, int spacetype)
 	BLI_listbase_clear(&ar->handlers);
 	BLI_listbase_clear(&ar->uiblocks);
 	ar->headerstr = NULL;
-	ar->swinid = 0;
+	ar->visible = 0;
 	ar->type = NULL;
 	ar->swap = 0;
 	ar->do_draw = 0;
@@ -7354,8 +7353,7 @@ static bool direct_link_screen(FileData *fd, bScreen *sc)
 	link_list(fd, &(sc->areabase));
 	sc->regionbase.first = sc->regionbase.last= NULL;
 	sc->context = NULL;
-	
-	sc->mainwin = sc->subwinactive= 0;	/* indices */
+	sc->active_region = NULL;
 	sc->swap = 0;
 
 	sc->preview = direct_link_preview_image(fd, sc->preview);
diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h
index 01c1e308fb0..be1a24aeac4 100644
--- a/source/blender/editors/include/ED_screen.h
+++ b/source/blender/editors/include/ED_screen.h
@@ -134,7 +134,7 @@ void    ED_screen_update_after_scene_change(
         const struct bScreen *screen,
         struct Scene *scene_new,
         struct ViewLayer *view_layer);
-void    ED_screen_set_subwinactive(struct bContext *C, const struct wmEvent *event);
+void    ED_screen_set_active_region(struct bContext *C, const struct wmEvent *event);
 void    ED_screen_exit(struct bContext *C, struct wmWindow *window, struct bScreen *screen);
 void    ED_screen_animation_timer(struct bContext *C, int redraws, int refresh, int sync, int enable);
 void    ED_screen_animation_timer_update(struct bScreen *screen, int redraws, int refresh);
diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c
index d524a03f24d..a4eaf800801 100644
--- a/source/blender/editors/interface/interface.c
+++ b/source/blender/editors/interface/interface.c
@@ -69,7 +69,6 @@
 
 #include "WM_api.h"
 #include "WM_types.h"
-#include "wm_subwindow.h"
 #include "WM_message.h"
 
 #include "RNA_access.h"
@@ -2853,7 +2852,6 @@ uiBlock *UI_block_begin(const bContext *C, ARegion *region, const char *name, sh
 	uiBlock *block;
 	wmWindow *window;
 	Scene *scn;
-	int getsizex, getsizey;
 
 	window = CTX_wm_window(C);
 	scn = CTX_data_scene(C);
@@ -2884,22 +2882,22 @@ uiBlock *UI_block_begin(const bContext *C, ARegion *region, const char *name, sh
 		UI_block_region_set(block, region);
 
 	/* window matrix and aspect */
-	if (region && region->swinid) {
-		wm_subwindow_matrix_get(window, region->swinid, block->winmat);
-		wm_subwindow_size_get(window, region->swinid, &getsizex, &getsizey);
+	if (region && region->visible) {
+		gpuGetProjectionMatrix(block->winmat);
 
-		block->aspect = 2.0f / fabsf(getsizex * block->winmat[0][0]);
+		block->aspect = 2.0f / fabsf(region->winx * block->winmat[0][0]);
 	}
 	else {
-		const bScreen *screen = WM_window_get_active_screen(window);
-
 		/* no subwindow created yet, for menus for example, so we
 		 * use the main window instead, since buttons are created
 		 * there anyway */
-		wm_subwindow_matrix_get(window, screen->mainwin, block->winmat);
-		wm_subwindow_size_get(window, screen->mainwin, &getsizex, &getsizey);
+		int width = WM_window_pixels_x(window);
+		int height = WM_window_pixels_y(window);
+		rcti winrct = {0, width -1, 0, height - 1};
+
+		wmGetProjectionMatrix(block->winmat, &winrct);
 
-		block->aspect = 2.0f / fabsf(getsizex * block->winmat[0][0]);
+		block->aspect = 2.0f / fabsf(width * block->winmat[0][0]);
 		block->auto_open = true;
 		block->flag |= UI_BLOCK_LOOP; /* tag as menu */
 	}
diff --git a/source/blender/editors/interface/interface_region_popup.c b/source/blender/editors/interface/interface_region_popup.c
index 24990c593ac..c3d6d635c17 100644
--- a/source/blender/editors/interface/interface_region_popup.c
+++ b/source/blender/editors/interface/interface_region_popup.c
@@ -48,7 +48,6 @@
 
 #include "WM_api.h"
 #include "WM_types.h"
-#include "wm_subwindow.h"
 
 #include "UI_interface.h"
 
@@ -589,9 +588,7 @@ uiBlock *ui_popup_block_refresh(
 	ED_region_init(C, ar);
 
 	/* get winmat now that we actually have the subwindow */
-	wmSubWindowSet(window, ar->swinid);
-
-	wm_subwindow_matrix_get(window, ar->swinid, block->winmat);
+	wmGetProjectionMatrix(block->winmat, &ar->winrct);
 
 	/* notify change and redraw */
 	ED_region_tag_redraw(ar);
diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c
index b8301b5d44d..f6a1e8913ff 100644
--- a/source/blender/editors/screen/area.c
+++ b/source/blender/editors/screen/area.c
@@ -52,7 +52,6 @@
 #include "WM_api.h"
 #include "WM_types.h"
 #include "WM_message.h"
-#include "wm_subwindow.h"
 
 #include "ED_screen.h"
 #include "ED_screen_types.h"
@@ -529,27 +528,15 @@ void ED_region_do_draw(bContext *C, ARegion *ar)
 	wmWindow *win = CTX_wm_window(C);
 	ScrArea *sa = CTX_wm_area(C);
 	ARegionType *at = ar->type;
-	bool scissor_pad;
 
 	/* see BKE_spacedata_draw_locks() */
 	if (at->do_lock)
 		return;
 
-	/* if no partial draw rect set, full rect */
-	if (ar->drawrct.xmin == ar->drawrct.xmax) {
-		ar->drawrct = ar->winrct;
-		scissor_pad = true;
-	}
-	else {
-		/* extra clip for safety */
-		BLI_rcti_isect(&ar->winrct, &ar->drawrct, &ar->drawrct);
-		scissor_pad = false;
-	}
-
 	ar->do_draw |= RGN_DRAWING;
 	
-	/* note; this sets state, so we can use wmOrtho and friends */
-	wmSubWindowScissorSet(win, ar->swinid, &ar->drawrct, scissor_pad);
+	/* Set viewport, scissor, ortho and ar->drawrct. */
+	wmPartialViewport(&ar->drawrct, &ar->winrct, &ar->drawrct);
 
 	wmOrtho2_region_pixelspace(ar);
 	
@@ -1436,24 +1423,14 @@ static void area_calc_totrct(ScrArea *sa, int sizex, int sizey)
 
 
 /* used for area initialize below */
-static void region_subwindow(wmWindow *win, ARegion *ar, bool activate)
+static void region_subwindow(ARegion *ar)
 {
 	bool hidden = (ar->flag & (RGN_FLAG_HIDDEN | RGN_FLAG_TOO_SMALL)) != 0;
 
 	if ((ar->alignment & RGN_SPLIT_PREV) && ar->prev)
 		hidden = hidden || (ar->prev->flag & (RGN_FLAG_HIDDEN | RGN_FLAG_TOO_SMALL));
 
-	if (hidden) {
-		if (ar->swinid)
-			wm_subwindow_close(win, ar->swinid);
-		ar->swinid = 0;
-	}
-	else if (ar->swinid == 0) {
-		ar->swinid = wm_subwindow_open(win, &ar->winrct, activate);
-	}
-	else {
-		wm_subwindow_position(win, ar->swinid, &ar->winrct, activate);
-	}
+	ar->visible = !hidden;
 }
 
 static void ed_default_handlers(wmWindowManager *wm, ScrArea *sa, ListBase *handlers, int flag)
@@ -1560,9 +1537,9 @@ void ED_area_initialize(wmWindowManager *wm, wmWindow *win, ScrArea *sa)
 	
 	/* region windows, default and own handlers */
 	for (ar = sa->regionbase.first; ar; ar = ar->next) {
-		region_subwindow(win, ar, false);
+		region_subwindow(ar);
 		
-		if (ar->swinid) {
+		if (ar->visible) {
 			/* default region handlers */
 			ed_default_handlers(wm, sa, &ar->handlers, ar->type->keymapflag);
 			/* own handlers */
@@ -1589,22 +1566,16 @@ static void region_update_rect(ARegion *ar)
 /**
  * Call to move a popup window (keep OpenGL context free!)
  */
-void ED_region_update_rect(bContext *C, ARegion *ar)
+void ED_region_update_rect(bContext *UNUSED(C), ARegion *ar)
 {
-	wmWindow *win = CTX_wm_window(C);
-
-	wm_subwindow_rect_set(win, ar->swinid, &ar->winrct);
-
 	region_update_rect(ar);
 }
 
 /* externally called for floating regions like menus */
-void ED_region_init(bContext *C, ARegion *ar)
+void ED_region_init(bContext *UNUSED(C), ARegion *ar)
 {
-//	ARegionType *at = ar->type;
-
 	/* refresh can be called before window opened */
-	region_subwindow(CTX_wm_window(C), ar, false);
+	region_subwindow(ar);
 
 	region_update_rect(ar);
 }
diff --git a/source/blender/editors/screen/screen_draw.c b/source/blender/editors/screen/screen_draw.c
index ca30663e511..c749d77869f 100644
--- a/source/blender/editors/screen/screen_draw.c
+++ b/source/blender/editors/screen/screen_draw.c
@@ -298,7 +298,7 @@ void ED_screen_draw_edges(wmWindow *win)
 
 	ScrArea *sa;
 
-	wmSubWindowSet(win, screen->mainwin);
+	wmWindowViewport(win);
 
 	unsigned int pos = GWN_vertformat_attr_add(immVertexFormat(), "pos", GWN_COMP_F32, 2, GWN_FETCH_FLOAT);
 	immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c
index 0d9fc7c60e3..a3287b2be51 100644
--- a/source/blender/editors/screen/screen_edit.c
+++ b/source/blender/editors/screen/screen_edit.c
@@ -68,9 +68,6 @@
 
 #include "WM_message.h"
 
-/* XXX actually should be not here... solve later */
-#include "wm_subwindow.h"
-
 #include "screen_intern.h"  /* own module include */
 
 
@@ -848,14 +845,14 @@ static void screen_test_scale(bScreen *sc, int winsize_x, int winsize_y)
 
 /* ****************** EXPORTED API TO OTHER MODULES *************************** */
 
-/* screen sets cursor based on swinid */
-static void region_cursor_set(wmWindow *win, int swinid, int swin_changed)
+/* screen sets cursor based on active region */
+static void region_cursor_set(wmWindow *win, bool swin_changed)
 {
 	bScreen *screen = WM_window_get_active_screen(win);
 
 	for (ScrArea *sa = screen->areabase.first; sa; sa = sa->next) {
 		for (ARegion *ar = sa->regionbase.firs

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list