[brlcad-commits] SF.net SVN: brlcad:[32534] brlcad/trunk/src/libged/wdb_obj.c
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: <sta...@us...> - 2008-08-25 22:52:53
|
Revision: 32534 http://brlcad.svn.sourceforge.net/brlcad/?rev=32534&view=rev Author: starseeker Date: 2008-08-25 22:52:53 +0000 (Mon, 25 Aug 2008) Log Message: ----------- Revert previous d_flags related check - instead, explicitly set the flags for the current object when the region flag is either added with argument R or removed. This is so far robust for the attr show, tops and t -r commands Modified Paths: -------------- brlcad/trunk/src/libged/wdb_obj.c Modified: brlcad/trunk/src/libged/wdb_obj.c =================================================================== --- brlcad/trunk/src/libged/wdb_obj.c 2008-08-25 20:07:24 UTC (rev 32533) +++ brlcad/trunk/src/libged/wdb_obj.c 2008-08-25 22:52:53 UTC (rev 32534) @@ -7769,8 +7769,11 @@ return TCL_ERROR; } - i = 3; + i = 3; while ( i < argc ) { + if(strcmp( argv[i], "region") == 0 && strcmp(argv[i+1], "R") == 0) { + dp->d_flags = DIR_REGION | DIR_COMB; + } (void)bu_avs_add( &avs, argv[i], argv[i+1] ); i += 2; } @@ -7787,6 +7790,9 @@ } else if ( strcmp( argv[1], "rm" ) == 0 ) { i = 3; while ( i < argc ) { + if(strcmp( argv[i], "region") == 0) { + dp->d_flags = DIR_COMB; + } (void)bu_avs_remove( &avs, argv[i] ); i++; } @@ -7812,6 +7818,9 @@ while ( i < argc ) { const char *old_val; + if(strcmp( argv[i], "region") == 0 && strcmp(argv[i+1], "R") == 0) { + dp->d_flags = DIR_REGION | DIR_COMB; + } old_val = bu_avs_get( &avs, argv[i] ); if ( !old_val ) { (void)bu_avs_add( &avs, argv[i], argv[i+1] ); @@ -7843,18 +7852,9 @@ int tabs1=0; int is_region=0; - /* pretty print */ bu_vls_init( &vls ); - /* Need to check attributes explicitly here - as of r32532 DIR_REGION isn't updated - * based on attributes before attr is run - */ - avpp = avs.avp; - for ( i=0; i < avs.count; i++, avpp++ ) { - if(strcmp(avpp->name, "region") && strcmp(avpp->value, "R")) is_region = 1; - } - if ( dp->d_flags & DIR_COMB ) { if ( (dp->d_flags & DIR_REGION) || (is_region == 1) ) { bu_vls_printf( &vls, "%s region:\n", argv[2] ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |