Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-06-21 03:21:36 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-06-21 03:21:36 +0400
commitd4d4f2d511f5ee0482223367f32b76d7bd8d7d60 (patch)
treeb9a3c9dfd6cf62e2e6903fcac528be01814ef8a6 /source/blender/editors/space_outliner
parent091c71619898c939c74f4d40e5116da4c4ee1085 (diff)
workarond for outliner group object selection trick - which is so slow it had to be disabled. Now use the first object of the group, which isn't great but is at least usable.
Diffstat (limited to 'source/blender/editors/space_outliner')
-rw-r--r--source/blender/editors/space_outliner/outliner_draw.c31
1 files changed, 16 insertions, 15 deletions
diff --git a/source/blender/editors/space_outliner/outliner_draw.c b/source/blender/editors/space_outliner/outliner_draw.c
index f0ecaf3ab2c..2f5e32c61d1 100644
--- a/source/blender/editors/space_outliner/outliner_draw.c
+++ b/source/blender/editors/space_outliner/outliner_draw.c
@@ -202,26 +202,39 @@ static int group_restrict_flag(Group *gr, int flag)
{
GroupObject *gob;
+#ifdef USE_GROUP_SELECT
for (gob = gr->gobject.first; gob; gob = gob->next) {
if ((gob->ob->restrictflag & flag) == 0)
return 0;
}
-
return 1;
+#else
+ /* weak but fast */
+ if ((gob = gr->gobject.first))
+ if ((gob->ob->restrictflag & flag) == 0)
+ return 0;
+ return 1;
+#endif
}
-#ifdef USE_GROUP_SELECT
static int group_select_flag(Group *gr)
{
GroupObject *gob;
+#ifdef USE_GROUP_SELECT
for (gob = gr->gobject.first; gob; gob = gob->next)
if ((gob->ob->flag & SELECT))
return 1;
return 0;
-}
+#else
+ /* weak but fast */
+ if ((gob = gr->gobject.first))
+ if (gob->ob->flag & SELECT)
+ return 1;
+ return 0;
#endif
+}
void restrictbutton_gr_restrict_flag(void *poin, void *poin2, int flag)
{
@@ -428,25 +441,15 @@ static void outliner_draw_restrictbuts(uiBlock *block, Scene *scene, ARegion *ar
uiBlockSetEmboss(block, UI_EMBOSSN);
-#ifndef USE_GROUP_SELECT
- restrict_bool = FALSE;
-#endif
-
-#ifdef USE_GROUP_SELECT
restrict_bool = group_restrict_flag(gr, OB_RESTRICT_VIEW);
-#endif
bt = uiDefIconBut(block, ICONTOG, 0, restrict_bool ? ICON_RESTRICT_VIEW_ON : ICON_RESTRICT_VIEW_OFF, (int)ar->v2d.cur.xmax - OL_TOG_RESTRICT_VIEWX, (int)te->ys, UI_UNIT_X - 1, UI_UNIT_Y - 1, NULL, 0, 0, 0, 0, "Restrict/Allow visibility in the 3D View");
uiButSetFunc(bt, restrictbutton_gr_restrict_view, scene, gr);
-#ifdef USE_GROUP_SELECT
restrict_bool = group_restrict_flag(gr, OB_RESTRICT_SELECT);
-#endif
bt = uiDefIconBut(block, ICONTOG, 0, restrict_bool ? ICON_RESTRICT_SELECT_ON : ICON_RESTRICT_SELECT_OFF, (int)ar->v2d.cur.xmax - OL_TOG_RESTRICT_SELECTX, (int)te->ys, UI_UNIT_X - 1, UI_UNIT_Y - 1, NULL, 0, 0, 0, 0, "Restrict/Allow selection in the 3D View");
uiButSetFunc(bt, restrictbutton_gr_restrict_select, scene, gr);
-#ifdef USE_GROUP_SELECT
restrict_bool = group_restrict_flag(gr, OB_RESTRICT_RENDER);
-#endif
bt = uiDefIconBut(block, ICONTOG, 0, restrict_bool ? ICON_RESTRICT_RENDER_ON : ICON_RESTRICT_RENDER_OFF, (int)ar->v2d.cur.xmax - OL_TOG_RESTRICT_RENDERX, (int)te->ys, UI_UNIT_X - 1, UI_UNIT_Y - 1, NULL, 0, 0, 0, 0, "Restrict/Allow renderability");
uiButSetFunc(bt, restrictbutton_gr_restrict_render, scene, gr);
@@ -1289,7 +1292,6 @@ static void outliner_draw_tree_element(bContext *C, uiBlock *block, Scene *scene
}
}
else if (te->idcode == ID_GR) {
-#ifdef USE_GROUP_SELECT
Group *gr = (Group *)tselem->id;
if (group_select_flag(gr)) {
char col[4];
@@ -1299,7 +1301,6 @@ static void outliner_draw_tree_element(bContext *C, uiBlock *block, Scene *scene
active = 2;
}
-#endif
}
else if (te->idcode == ID_OB) {
Object *ob = (Object *)tselem->id;