[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [59366] branches/soc-2013-ui_replay/source /blender: Positioning of the redo panel is better.

Vincent Akkermans vincent at ack-err.net
Wed Aug 21 16:37:28 CEST 2013


Revision: 59366
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=59366
Author:   ack-err
Date:     2013-08-21 14:37:27 +0000 (Wed, 21 Aug 2013)
Log Message:
-----------
Positioning of the redo panel is better. There is still a draw loop, which needs to be solved.

Modified Paths:
--------------
    branches/soc-2013-ui_replay/source/blender/blenloader/intern/readfile.c
    branches/soc-2013-ui_replay/source/blender/editors/interface/interface_panel.c
    branches/soc-2013-ui_replay/source/blender/editors/screen/area.c
    branches/soc-2013-ui_replay/source/blender/editors/space_view3d/space_view3d.c
    branches/soc-2013-ui_replay/source/blender/editors/space_view3d/view3d_toolbar.c
    branches/soc-2013-ui_replay/source/blender/windowmanager/intern/wm_event_system.c

Modified: branches/soc-2013-ui_replay/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/soc-2013-ui_replay/source/blender/blenloader/intern/readfile.c	2013-08-21 14:35:51 UTC (rev 59365)
+++ branches/soc-2013-ui_replay/source/blender/blenloader/intern/readfile.c	2013-08-21 14:37:27 UTC (rev 59366)
@@ -9531,7 +9531,7 @@
 					ar = MEM_callocN(sizeof(ARegion), "tool properties for view3d");
 					ar->alignment = RGN_ALIGN_FLOAT;
 					ar->regiontype = RGN_TYPE_TOOL_PROPS;
-					BLI_insertlinkbefore(&sa->regionbase, wr, ar);
+					BLI_insertlinkafter(&sa->regionbase, wr, ar);
 				}
 				
 				for (sl = sa->spacedata.first; sl; sl = sl->next) {
@@ -9542,7 +9542,7 @@
 						ar = MEM_callocN(sizeof(ARegion), "tool properties for view3d");
 						ar->alignment = RGN_ALIGN_FLOAT;
 						ar->regiontype = RGN_TYPE_TOOL_PROPS;
-						BLI_insertlinkbefore(&sl->regionbase, wr, ar);
+						BLI_insertlinkafter(&sl->regionbase, wr, ar);
 					}
 				}
 			}

Modified: branches/soc-2013-ui_replay/source/blender/editors/interface/interface_panel.c
===================================================================
--- branches/soc-2013-ui_replay/source/blender/editors/interface/interface_panel.c	2013-08-21 14:35:51 UTC (rev 59365)
+++ branches/soc-2013-ui_replay/source/blender/editors/interface/interface_panel.c	2013-08-21 14:37:27 UTC (rev 59366)
@@ -1251,18 +1251,13 @@
 					else pa->flag &= ~PNL_CLOSED;
 				}
 			}
-			if (align)
-				panel_activate_state(C, block->panel, PANEL_STATE_ANIMATION);
-			else
-				ED_region_tag_redraw(ar);
-			break;
 		case 2:
 			/* close */
 			ED_region_tag_redraw(ar);
 			if (align)
 				panel_activate_state(C, block->panel, PANEL_STATE_ANIMATION);
-			else
-				ED_region_tag_redraw(ar);
+			if (ar->regiontype == RGN_TYPE_TOOL_PROPS)
+				WM_event_add_notifier(C, NC_SPACE | ND_SPACE_VIEW3D, NULL);
 			break;
 		case 3:
 			uiPupBlock(C, panel_popup_create_block, block->panel);

Modified: branches/soc-2013-ui_replay/source/blender/editors/screen/area.c
===================================================================
--- branches/soc-2013-ui_replay/source/blender/editors/screen/area.c	2013-08-21 14:35:51 UTC (rev 59365)
+++ branches/soc-2013-ui_replay/source/blender/editors/screen/area.c	2013-08-21 14:37:27 UTC (rev 59366)
@@ -937,11 +937,14 @@
 	
 	/* set here, assuming userpref switching forces to call this again */
 	ar->overlap = region_is_overlap(win, sa, ar);
+	
+	if (ar->regiontype == RGN_TYPE_TOOL_PROPS)
+		printf("yep, overlep!\n");
 
 	/* clear state flags first */
 	ar->flag &= ~RGN_FLAG_TOO_SMALL;
 	/* user errors */
-	if (ar->next == NULL && alignment != RGN_ALIGN_QSPLIT)
+	if (ar->next == NULL && alignment != RGN_ALIGN_QSPLIT && alignment != RGN_ALIGN_FLOAT)
 		alignment = RGN_ALIGN_NONE;
 	
 	/* prefsize, for header we stick to exception (prevent dpi rounding error) */
@@ -966,16 +969,32 @@
 	}
 
 
-	if (ar->flag & RGN_FLAG_HIDDEN) {
+	if (alignment == RGN_ALIGN_FLOAT && ar->regiontype == RGN_TYPE_TOOL_PROPS) {
+		/* special case for floating tool properties regions */
+		Panel *pa = NULL;
+		for (pa = ar->panels.first; pa; pa = pa->next) {
+			// TODO: is there a better way to test for the identity of a panel type?
+			if (pa->type && strcmp(pa->type->idname, "VIEW3D_PT_last_operator") == 0) {
+				break;
+			}
+		}
+
+		ARegion *mw = BKE_area_find_region_type(sa, RGN_TYPE_WINDOW);
+		ar->winrct.xmax = mw->winrct.xmax;
+		ar->winrct.xmin = mw->winrct.xmax - (ar->type ? ar->type->prefsizex : 160);
+		ar->winrct.ymin = mw->winrct.ymin;
+		
+		if (pa && !uiPanelClosed(pa)) {
+			// TODO: This is the previous panel size...
+			ar->winrct.ymax = ar->winrct.ymin + pa->sizey + 26;
+		}
+		else {
+			ar->winrct.ymax = ar->winrct.ymin + 26;
+		}
+	}
+	else if (ar->flag & RGN_FLAG_HIDDEN) {
 		/* hidden is user flag */
 	}
-	else if (alignment == RGN_ALIGN_FLOAT) {
-		/* XXX floating area region, not handled yet here */
-		ar->winrct.ymax = 500;
-		ar->winrct.ymin = 100;
-		ar->winrct.xmax = 500;
-		ar->winrct.xmin = 200;
-	}
 	else if (rct_fits(remainder, 'v', 1) < 0 || rct_fits(remainder, 'h', 1) < 0) {
 		/* remainder is too small for any usage */
 		ar->flag |= RGN_FLAG_TOO_SMALL;
@@ -1180,7 +1199,7 @@
 
 /* used for area initialize below */
 static void region_subwindow(wmWindow *win, ARegion *ar)
-{
+{	
 	if (ar->flag & (RGN_FLAG_HIDDEN | RGN_FLAG_TOO_SMALL)) {
 		if (ar->swinid)
 			wm_subwindow_close(win, ar->swinid);

Modified: branches/soc-2013-ui_replay/source/blender/editors/space_view3d/space_view3d.c
===================================================================
--- branches/soc-2013-ui_replay/source/blender/editors/space_view3d/space_view3d.c	2013-08-21 14:35:51 UTC (rev 59365)
+++ branches/soc-2013-ui_replay/source/blender/editors/space_view3d/space_view3d.c	2013-08-21 14:37:27 UTC (rev 59366)
@@ -330,8 +330,8 @@
 	rv3d->persp = RV3D_PERSP;
 	rv3d->view = RV3D_VIEW_PERSPORTHO;
 	rv3d->dist = 10.0;
-		
-	/* tool props */
+	
+	/* tool props, floating and therefore last! */
 	ar = MEM_callocN(sizeof(ARegion), "tool properties for view3d");
 	
 	BLI_addtail(&v3d->regionbase, ar);
@@ -774,6 +774,14 @@
 	}
 }
 
+static void view3d_main_area_listener_refresh(bScreen *sc, ScrArea *sa, ARegion *ar)
+{
+	ARegion *redo = BKE_area_find_region_type(sa, RGN_TYPE_TOOL_PROPS);
+	ED_region_tag_redraw(ar);
+	ED_region_tag_redraw(redo);
+	sc->do_refresh = TRUE;
+}
+
 static void view3d_main_area_listener(bScreen *sc, ScrArea *sa, ARegion *ar, wmNotifier *wmn)
 {
 	Scene *scene = sc->scene;
@@ -785,16 +793,16 @@
 			switch (wmn->data) {
 				case ND_KEYFRAME_PROP:
 				case ND_NLA_ACTCHANGE:
-					ED_region_tag_redraw(ar);
+					view3d_main_area_listener_refresh(sc, sa, ar);
 					break;
 				case ND_NLA:
 				case ND_KEYFRAME:
 					if (wmn->action == NA_EDITED)
-						ED_region_tag_redraw(ar);
+						view3d_main_area_listener_refresh(sc, sa, ar);
 					break;
 				case ND_ANIMCHAN:
 					if (wmn->action == NA_SELECTED)
-						ED_region_tag_redraw(ar);
+						view3d_main_area_listener_refresh(sc, sa, ar);
 					break;
 			}
 			break;
@@ -803,7 +811,7 @@
 				case ND_LAYER_CONTENT:
 					if (wmn->reference)
 						view3d_recalc_used_layers(ar, wmn, wmn->reference);
-					ED_region_tag_redraw(ar);
+					view3d_main_area_listener_refresh(sc, sa, ar);
 					break;
 				case ND_FRAME:
 				case ND_TRANSFORM:
@@ -813,14 +821,14 @@
 				case ND_LAYER:
 				case ND_RENDER_OPTIONS:
 				case ND_MODE:
-					ED_region_tag_redraw(ar);
+					view3d_main_area_listener_refresh(sc, sa, ar);
 					break;
 				case ND_WORLD:
 					/* handled by space_view3d_listener() for v3d access */
 					break;
 			}
 			if (wmn->action == NA_EDITED)
-				ED_region_tag_redraw(ar);
+				view3d_main_area_listener_refresh(sc, sa, ar);
 			break;
 		case NC_OBJECT:
 			switch (wmn->data) {
@@ -833,12 +841,12 @@
 				case ND_CONSTRAINT:
 				case ND_KEYS:
 				case ND_PARTICLE:
-					ED_region_tag_redraw(ar);
+					view3d_main_area_listener_refresh(sc, sa, ar);
 					break;
 			}
 			switch (wmn->action) {
 				case NA_ADDED:
-					ED_region_tag_redraw(ar);
+					view3d_main_area_listener_refresh(sc, sa, ar);
 					break;
 			}
 			break;
@@ -847,22 +855,22 @@
 				case ND_DATA:
 				case ND_VERTEX_GROUP:
 				case ND_SELECT:
-					ED_region_tag_redraw(ar);
+					view3d_main_area_listener_refresh(sc, sa, ar);
 					break;
 			}
 			switch (wmn->action) {
 				case NA_EDITED:
-					ED_region_tag_redraw(ar);
+					view3d_main_area_listener_refresh(sc, sa, ar);
 					break;
 			}
 			break;
 		case NC_GROUP:
 			/* all group ops for now */
-			ED_region_tag_redraw(ar);
+			view3d_main_area_listener_refresh(sc, sa, ar);
 			break;
 		case NC_BRUSH:
 			if (wmn->action == NA_EDITED)
-				ED_region_tag_redraw_overlay(ar);
+				view3d_main_area_listener_refresh(sc, sa, ar);
 			break;
 		case NC_MATERIAL:
 			switch (wmn->data) {
@@ -870,13 +878,11 @@
 				case ND_NODES:
 					if ((v3d->drawtype == OB_MATERIAL) ||
 					    (v3d->drawtype == OB_TEXTURE && scene->gm.matmode == GAME_MAT_GLSL))
-					{
-						ED_region_tag_redraw(ar);
-					}
+						view3d_main_area_listener_refresh(sc, sa, ar);
 					break;
 				case ND_SHADING_DRAW:
 				case ND_SHADING_LINKS:
-					ED_region_tag_redraw(ar);
+					view3d_main_area_listener_refresh(sc, sa, ar);
 					break;
 			}
 			break;
@@ -888,9 +894,8 @@
 				case ND_WORLD_STARS:
 				{
 					RegionView3D *rv3d = ar->regiondata;
-					if (rv3d->persp == RV3D_CAMOB) {
-						ED_region_tag_redraw(ar);
-					}
+					if (rv3d->persp == RV3D_CAMOB)
+						view3d_main_area_listener_refresh(sc, sa, ar);
 				}
 			}
 			break;
@@ -899,27 +904,25 @@
 				case ND_LIGHTING:
 					if ((v3d->drawtype == OB_MATERIAL) ||
 					    (v3d->drawtype == OB_TEXTURE && (scene->gm.matmode == GAME_MAT_GLSL)))
-					{
-						ED_region_tag_redraw(ar);
-					}
+						view3d_main_area_listener_refresh(sc, sa, ar);
 					break;
 				case ND_LIGHTING_DRAW:
-					ED_region_tag_redraw(ar);
+					view3d_main_area_listener_refresh(sc, sa, ar);
 					break;
 			}
 			break;
 		case NC_IMAGE:
 			/* this could be more fine grained checks if we had
 			 * more context than just the region */
-			ED_region_tag_redraw(ar);
+			view3d_main_area_listener_refresh(sc, sa, ar);
 			break;
 		case NC_TEXTURE:
 			/* same as above */
-			ED_region_tag_redraw(ar);
+			view3d_main_area_listener_refresh(sc, sa, ar);
 			break;
 		case NC_MOVIECLIP:
 			if (wmn->data == ND_DISPLAY)
-				ED_region_tag_redraw(ar);
+				view3d_main_area_listener_refresh(sc, sa, ar);
 			break;
 		case NC_SPACE:
 			if (wmn->data == ND_SPACE_VIEW3D) {
@@ -927,18 +930,18 @@
 					RegionView3D *rv3d = ar->regiondata;
 					rv3d->rflag |= RV3D_GPULIGHT_UPDATE;
 				}
-				ED_region_tag_redraw(ar);
+				view3d_main_area_listener_refresh(sc, sa, ar);
 			}
 			break;
 		case NC_ID:
 			if (wmn->action == NA_RENAME)
-				ED_region_tag_redraw(ar);
+				view3d_main_area_listener_refresh(sc, sa, ar);
 			break;
 		case NC_SCREEN:
 			switch (wmn->data) {
 				case ND_ANIMPLAY:
 				case ND_SKETCH:
-					ED_region_tag_redraw(ar);
+					view3d_main_area_listener_refresh(sc, sa, ar);
 					break;
 				case ND_SCREENBROWSE:
 				case ND_SCREENDELETE:
@@ -949,15 +952,18 @@
 						bScreen *sc = wmn->reference;
 						view3d_recalc_used_layers(ar, wmn, sc->scene);
 					}
-					ED_region_tag_redraw(ar);
+					view3d_main_area_listener_refresh(sc, sa, ar);
 					break;
 			}
-
 			break;
 		case NC_GPENCIL:
 			if (wmn->action == NA_EDITED)

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list