---
 libgeda/include/prototype.h |    2 +-
 libgeda/src/s_basic.c       |    4 +---
 libgeda/src/s_page.c        |   21 ++-------------------
 libgeda/src/s_tile.c        |    7 ++-----
 4 files changed, 6 insertions(+), 28 deletions(-)

diff --git a/libgeda/include/prototype.h b/libgeda/include/prototype.h
index 93a3d22..fa05ce9 100644
--- a/libgeda/include/prototype.h
+++ b/libgeda/include/prototype.h
@@ -478,7 +478,7 @@ void s_stretch_destroy_all(STRETCH *head);
 /* s_tile.c */
 void s_tile_init(TOPLEVEL *toplevel, PAGE *p_current);
 void s_tile_add_line_object(TOPLEVEL *toplevel, OBJECT *object);
-void s_tile_remove_object(TOPLEVEL *toplevel, PAGE *page, OBJECT *object);
+void s_tile_remove_object(OBJECT *object);
 void s_tile_update_object(TOPLEVEL *toplevel, OBJECT *object);
 GList *s_tile_get_objectlists(TOPLEVEL *toplevel, int world_x1, int world_y1, 
int world_x2, int world_y2);
 void s_tile_print(TOPLEVEL *toplevel);
diff --git a/libgeda/src/s_basic.c b/libgeda/src/s_basic.c
index c84e439..998a8a5 100644
--- a/libgeda/src/s_basic.c
+++ b/libgeda/src/s_basic.c
@@ -313,9 +313,7 @@ s_delete_object(TOPLEVEL *toplevel, OBJECT *o_current)
       g_free(o_current->line);
 
       /* yes this object might be in the tile system */
-      s_tile_remove_object(toplevel,
-                           toplevel->page_current,
-                           o_current);
+      s_tile_remove_object(o_current);
     }
     o_current->line = NULL;
 
diff --git a/libgeda/src/s_page.c b/libgeda/src/s_page.c
index 19c40fa..bbec414 100644
--- a/libgeda/src/s_page.c
+++ b/libgeda/src/s_page.c
@@ -138,21 +138,9 @@ PAGE *s_page_new (TOPLEVEL *toplevel, const gchar 
*filename)
  */
 void s_page_delete (TOPLEVEL *toplevel, PAGE *page)
 {
-  PAGE *tmp;
   gchar *backup_filename;
   gchar *real_filename;
 
-  /* we need to play with page_current because s_delete_list_fromstart() */
-  /* make use of it (see s_tile_remove_object) */
-
-  /* save page_current and switch to page */
-  if (page == toplevel->page_current) {
-    tmp = NULL;
-  } else {
-    tmp = toplevel->page_current;
-    s_page_goto (toplevel, page);
-  }
-
   /* Get the real filename and file permissions */
   real_filename = follow_symlinks (page->page_filename, NULL);
   
@@ -218,15 +206,10 @@ void s_page_delete (TOPLEVEL *toplevel, PAGE *page)
   o_complex_free_filename(toplevel);
 #endif
 
-  /* restore page_current */
-  if (tmp != NULL) {
-    s_page_goto (toplevel, tmp);
-  } else {
-    /* page was page_current */
+  if (toplevel->page_current == page) {
+    /* page was page_current, page_current must be updated */
     toplevel->page_current = NULL;
-    /* page_current must be updated by calling function */
   }
-  
 }
 
 
diff --git a/libgeda/src/s_tile.c b/libgeda/src/s_tile.c
index a1e3de4..4f41180 100644
--- a/libgeda/src/s_tile.c
+++ b/libgeda/src/s_tile.c
@@ -281,11 +281,8 @@ void s_tile_add_line_object (TOPLEVEL *toplevel, OBJECT 
*object)
  *  \brief
  *  \par Function Description
  *
- *  \bug
- *  this is still wrong, p_current needs to be the page the object is on 
- *  doesn't work if the current page isn't where the object lives
  */
-void s_tile_remove_object(TOPLEVEL *toplevel, PAGE *page, OBJECT *object)
+void s_tile_remove_object(OBJECT *object)
 {
   GList *tl_current;
 
@@ -310,7 +307,7 @@ void s_tile_remove_object(TOPLEVEL *toplevel, PAGE *page, 
OBJECT *object)
  */
 void s_tile_update_object(TOPLEVEL * toplevel, OBJECT * object)
 {
-  s_tile_remove_object(toplevel, toplevel->page_current, object);
+  s_tile_remove_object(object);
   s_tile_add_line_object(toplevel, object);
 }
 
-- 
1.5.6




_______________________________________________
geda-dev mailing list
[email protected]
http://www.seul.org/cgi-bin/mailman/listinfo/geda-dev

Reply via email to