Revision: 54459
          http://brlcad.svn.sourceforge.net/brlcad/?rev=54459&view=rev
Author:   n_reed
Date:     2013-02-21 16:39:37 +0000 (Thu, 21 Feb 2013)
Log Message:
-----------
restore draw behavior of only autoviewing when starting with an empty display

Modified Paths:
--------------
    brlcad/trunk/src/libged/draw.c

Modified: brlcad/trunk/src/libged/draw.c
===================================================================
--- brlcad/trunk/src/libged/draw.c      2013-02-21 15:50:18 UTC (rev 54458)
+++ brlcad/trunk/src/libged/draw.c      2013-02-21 16:39:37 UTC (rev 54459)
@@ -1492,8 +1492,15 @@
        char *ptr_o=NULL;
        char *c;
 
-       if (*argv[i] != '-')
+       if (*argv[i] != '-') {
+           /* Done checking options. If our display is non-empty,
+            * add -R to keep current view.
+            */
+           if (BU_LIST_NON_EMPTY(&gedp->ged_gdp->gd_headDisplay)) {
+               bu_vls_strcat(&vls, " -R");
+           }
            break;
+       }
 
        ptr_A=strchr(argv[i], 'A');
        if (ptr_A)
@@ -1601,8 +1608,14 @@
        bu_vls_free(&vls);
        bu_free((char *)new_argv, "ged_draw_guts new_argv");
     } else {
+       int empty_display;
        bu_vls_free(&vls);
 
+       empty_display = 1;
+       if (BU_LIST_NON_EMPTY(&gedp->ged_gdp->gd_headDisplay)) {
+           empty_display = 0;
+       }
+
        /* First, delete any mention of these objects.
         * Silently skip any leading options (which start with minus signs).
         */
@@ -1614,7 +1627,27 @@
            ged_erasePathFromDisplay(gedp, argv[i], 0);
        }
 
-       _ged_drawtrees(gedp, argc, argv, kind, (struct _ged_client_data *)0);
+       /* if our display is non-empty add -R to keep current view */
+       if (!empty_display) {
+           int new_argc;
+           char **new_argv;
+
+           new_argc = argc + 1;
+           new_argv = (char **)bu_malloc(new_argc * sizeof(char *), 
"ged_draw_guts new_argv");
+
+           new_argv[0] = bu_strdup("-R");
+           for (i = 0; i < (size_t)argc; ++i) {
+               new_argv[i + 1] = bu_strdup(argv[i]);
+           }
+
+           _ged_drawtrees(gedp, new_argc, (const char **)new_argv, kind, 
(struct _ged_client_data *)0);
+
+           for (i = 0; i < (size_t)new_argc; ++i) {
+               bu_free(new_argv[i], "ged_draw_guts new_argv");
+           }
+       } else {
+           _ged_drawtrees(gedp, argc, argv, kind, (struct _ged_client_data 
*)0);
+       }
     }
 
     return GED_OK;

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_feb
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to