[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