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:
Diffstat (limited to 'source/blender/src/editview.c')
-rw-r--r--source/blender/src/editview.c35
1 files changed, 31 insertions, 4 deletions
diff --git a/source/blender/src/editview.c b/source/blender/src/editview.c
index 2376fe93619..458be9a0897 100644
--- a/source/blender/src/editview.c
+++ b/source/blender/src/editview.c
@@ -46,10 +46,11 @@
#include "DNA_action_types.h"
#include "DNA_armature_types.h"
-#include "DNA_meta_types.h"
-#include "DNA_mesh_types.h"
#include "DNA_curve_types.h"
+#include "DNA_group_types.h"
#include "DNA_lattice_types.h"
+#include "DNA_meta_types.h"
+#include "DNA_mesh_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "DNA_screen_types.h"
@@ -63,7 +64,9 @@
#include "BKE_armature.h"
#include "BKE_depsgraph.h"
#include "BKE_global.h"
+#include "BKE_group.h"
#include "BKE_lattice.h"
+#include "BKE_main.h"
#include "BKE_mesh.h"
#include "BKE_utildefines.h"
@@ -1034,8 +1037,6 @@ void set_active_base(Base *base)
if(base) {
/* signals to buttons */
redraw_test_buttons(base->object);
-
- set_active_group();
/* signal to ipo */
allqueue(REDRAWIPO, base->object->ipowin);
@@ -1069,6 +1070,29 @@ void set_active_object(Object *ob)
}
}
+static void select_all_from_groups(Base *basact)
+{
+ Group *group;
+ GroupObject *go;
+ int deselect= basact->flag & SELECT;
+
+ for(group= G.main->group.first; group; group= group->id.next) {
+ if(object_in_group(basact->object, group)) {
+ for(go= group->gobject.first; go; go= go->next) {
+ if(deselect) go->ob->flag &= ~SELECT;
+ else go->ob->flag |= SELECT;
+ }
+ }
+ }
+ /* sync bases */
+ for(basact= G.scene->base.first; basact; basact= basact->next) {
+ if(basact->object->flag & SELECT)
+ basact->flag |= SELECT;
+ else
+ basact->flag &= ~SELECT;
+ }
+}
+
/* The max number of menu items in an object select menu */
#define SEL_MENU_SIZE 22
@@ -1342,6 +1366,9 @@ void mouse_select(void)
deselectall_except(basact);
basact->flag |= SELECT;
}
+ else if(G.qual==(LR_SHIFTKEY|LR_ALTKEY)) {
+ select_all_from_groups(basact);
+ }
else {
if(basact->flag & SELECT) {
if(basact==oldbasact)