diff options
author | Matt Ebb <matt@mke3.net> | 2005-10-05 17:08:07 +0400 |
---|---|---|
committer | Matt Ebb <matt@mke3.net> | 2005-10-05 17:08:07 +0400 |
commit | 9b010e476295e4b59038cf4095d220f8dad1d850 (patch) | |
tree | 07753bc5d938c41e13f58ab2c83a5d3271ce55b1 /source | |
parent | d6f1390a3231b5f39cfde9d8582e663d0c453d75 (diff) |
* Added a Select -> Inverse for object mode, available
in the 3d view header and toolbox.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/include/BIF_editview.h | 5 | ||||
-rw-r--r-- | source/blender/include/BSE_headerbuttons.h | 1 | ||||
-rw-r--r-- | source/blender/src/editview.c | 25 | ||||
-rw-r--r-- | source/blender/src/header_view3d.c | 8 | ||||
-rw-r--r-- | source/blender/src/toolbox.c | 13 |
5 files changed, 42 insertions, 10 deletions
diff --git a/source/blender/include/BIF_editview.h b/source/blender/include/BIF_editview.h index ef4c417188f..c98057c80bc 100644 --- a/source/blender/include/BIF_editview.h +++ b/source/blender/include/BIF_editview.h @@ -42,8 +42,9 @@ void arrows_move_cursor(unsigned short event); void borderselect(void); void circle_select(void); void deselectall(void); -void selectall_type(short obtype); -void selectall_layer(unsigned int layernum); +void selectswap(void); +void selectall_type(short obtype); +void selectall_layer(unsigned int layernum); void draw_sel_circle(short *mval, short *mvalo, float rad, float rado, int selecting); void fly(void); int gesture(void); diff --git a/source/blender/include/BSE_headerbuttons.h b/source/blender/include/BSE_headerbuttons.h index 091d80b6438..a42cfe0801f 100644 --- a/source/blender/include/BSE_headerbuttons.h +++ b/source/blender/include/BSE_headerbuttons.h @@ -124,6 +124,7 @@ void do_info_add_lampmenu(void *arg, int event); void do_info_addmenu(void *arg, int event); /* header_view3d.c */ +void do_view3d_select_objectmenu(void *arg, int event); void do_view3d_select_object_groupedmenu(void *arg, int event); void do_view3d_select_object_linkedmenu(void *arg, int event); void do_view3d_select_object_layermenu(void *arg, int event); diff --git a/source/blender/src/editview.c b/source/blender/src/editview.c index 7db0747e503..3bab4124201 100644 --- a/source/blender/src/editview.c +++ b/source/blender/src/editview.c @@ -893,6 +893,31 @@ void deselectall(void) /* is toggle */ BIF_undo_push("(De)select all"); } +/* inverts object selection */ +void selectswap(void) +{ + Base *base; + int a=0; + + base= FIRSTBASE; + while(base) { + if(base->lay & G.vd->lay) { + if TESTBASE(base) base->flag &= ~SELECT; + else base->flag |= SELECT; + base->object->flag= base->flag; + } + base= base->next; + } + + allqueue(REDRAWVIEW3D, 0); + allqueue(REDRAWDATASELECT, 0); + allqueue(REDRAWNLA, 0); + + countall(); + BIF_undo_push("Select Inverse"); +} + + /* selects all objects of a particular type, on currently visible layers */ void selectall_type(short obtype) { diff --git a/source/blender/src/header_view3d.c b/source/blender/src/header_view3d.c index 370c51b9a22..2294e7e002e 100644 --- a/source/blender/src/header_view3d.c +++ b/source/blender/src/header_view3d.c @@ -750,7 +750,7 @@ static uiBlock *view3d_select_object_groupedmenu(void *arg_unused) return block; } -static void do_view3d_select_objectmenu(void *arg, int event) +void do_view3d_select_objectmenu(void *arg, int event) { switch(event) { @@ -760,6 +760,9 @@ static void do_view3d_select_objectmenu(void *arg, int event) case 1: /* Select/Deselect All */ deselectall(); break; + case 2: /* inverse */ + selectswap(); + break; } allqueue(REDRAWVIEW3D, 0); } @@ -776,7 +779,8 @@ static uiBlock *view3d_select_objectmenu(void *arg_unused) uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Select/Deselect All|A", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Select/Deselect All|A", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Inverse", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); uiDefIconTextBlockBut(block, view3d_select_object_layermenu, NULL, ICON_RIGHTARROW_THIN, "Select All by Layer", 0, yco-=20, 120, 19, ""); uiDefIconTextBlockBut(block, view3d_select_object_typemenu, NULL, ICON_RIGHTARROW_THIN, "Select All by Type", 0, yco-=20, 120, 19, ""); diff --git a/source/blender/src/toolbox.c b/source/blender/src/toolbox.c index d270f3184ff..10877d21fd6 100644 --- a/source/blender/src/toolbox.c +++ b/source/blender/src/toolbox.c @@ -1633,15 +1633,16 @@ static TBitem tb_object_select_grouped[]= { { -1, "", 0, do_view3d_select_object_groupedmenu}}; static TBitem tb_object_select[]= { -{ 0, "Border Select|B", 'b', NULL}, +{ 0, "Border Select|B", 0, NULL}, { 0, "SEPR", 0, NULL}, -{ 0, "Select/Deselect All|A", 'a', NULL}, +{ 0, "Select/Deselect All|A", 1, NULL}, +{ 0, "Inverse", 2, NULL}, { 0, "Select All by Layer", 0, tb_object_select_layer}, { 0, "Select All by Type", 0, tb_object_select_type}, { 0, "SEPR", 0, NULL}, { 0, "Linked", 0, tb_object_select_linked}, { 0, "Grouped", 0, tb_object_select_grouped}, -{ -1, "", 0, tb_do_hotkey}}; +{ -1, "", 0, do_view3d_select_objectmenu}}; static TBitem tb_mesh_select[]= { { 0, "Border Select|B", 0, NULL}, @@ -1671,9 +1672,9 @@ static TBitem tb_curve_select[]= { { -1, "", 0, do_view3d_select_curvemenu}}; static TBitem tb__select[]= { -{ 0, "Border Select|B", 'b', NULL}, -{ 0, "(De)select All|A", 'a', NULL}, -{ -1, "", 0, tb_do_hotkey}}; +{ 0, "Border Select|B", 'b', NULL}, +{ 0, "(De)select All|A", 'a', NULL}, +{ -1, "", 0, tb_do_hotkey}}; /* *************Edit ********** */ |