Code

noop: dialogs/rdf.cpp: Mark a few pointers as not being written through. Make rdf_ma...
[inkscape.git] / src / dialogs / xml-tree.cpp
index b843819894f4b5cb578b514dce1cbe3c2fc2afc0..dd5371460f7c21a552f5a3f58a1f147f709bb002 100644 (file)
@@ -7,8 +7,9 @@
  *   Lauris Kaplinski <lauris@kaplinski.com>
  *   MenTaLguY <mental@rydia.net>
  *   bulia byak <buliabyak@users.sf.net>
+ *   Johan Engelen <goejendaagh@zonnet.nl>
  *
- * Copyright (C) 1999-2005 Authors
+ * Copyright (C) 1999-2006 Authors
  * Copyright (C) 2004 David Turner
  *
  * Released under GNU GPL, read the file 'COPYING' for more information
@@ -63,6 +64,8 @@
 #include "message-stack.h"
 #include "message-context.h"
 
+#define MIN_ONSCREEN_DISTANCE 50
+
 struct EditableDest {
     GtkEditable *editable;
     gchar *text;
@@ -210,26 +213,26 @@ void sp_xml_tree_dialog()
 
         dlg = sp_window_new("", TRUE);
         if (x == -1000 || y == -1000) {
-            x = prefs_get_int_attribute(prefs_path, "x", 0);
-            y = prefs_get_int_attribute(prefs_path, "y", 0);
+            x = prefs_get_int_attribute(prefs_path, "x", -1000);
+            y = prefs_get_int_attribute(prefs_path, "y", -1000);
         }
         if (w ==0 || h == 0) {
             w = prefs_get_int_attribute(prefs_path, "w", 0);
             h = prefs_get_int_attribute(prefs_path, "h", 0);
         }
         
-        if (x<0) x=0;
-        if (y<0) y=0;
+//        if (x<0) x=0;
+//        if (y<0) y=0;
 
-        if (x != 0 || y != 0) {
+        if (w && h) {
+            gtk_window_resize((GtkWindow *) dlg, w, h);
+        }
+        if (x >= 0 && y >= 0 && (x < (gdk_screen_width()-MIN_ONSCREEN_DISTANCE)) && (y < (gdk_screen_height()-MIN_ONSCREEN_DISTANCE))) {
             gtk_window_move((GtkWindow *) dlg, x, y);
         } else {
             gtk_window_set_position(GTK_WINDOW(dlg), GTK_WIN_POS_CENTER);
         }
 
-        if (w && h) {
-            gtk_window_resize((GtkWindow *) dlg, w, h);
-        }
         sp_transientize(dlg);
         wd.win = dlg;
         wd.stop = 0;
@@ -1365,8 +1368,9 @@ void cmd_new_element_node(GtkObject *object, gpointer data)
     g_assert(selected_repr != NULL);
 
     if (name.text) {
+        Inkscape::XML::Document *xml_doc = sp_document_repr_doc(current_document);
         Inkscape::XML::Node *new_repr;
-        new_repr = sp_repr_new(name.text);
+        new_repr = xml_doc->createElement(name.text);
         g_free(name.text);
         selected_repr->appendChild(new_repr);
         set_tree_select(new_repr);
@@ -1384,7 +1388,8 @@ void cmd_new_text_node(GtkObject *object, gpointer data)
 {
     g_assert(selected_repr != NULL);
 
-    Inkscape::XML::Node *text = sp_repr_new_text("");
+    Inkscape::XML::Document *xml_doc = sp_document_repr_doc(current_document);
+    Inkscape::XML::Node *text = xml_doc->createTextNode("");
     selected_repr->appendChild(text);
 
     sp_document_done(current_document, SP_VERB_DIALOG_XML_EDITOR,
@@ -1402,7 +1407,7 @@ void cmd_duplicate_node(GtkObject *object, gpointer data)
     g_assert(selected_repr != NULL);
 
     Inkscape::XML::Node *parent = sp_repr_parent(selected_repr);
-    Inkscape::XML::Node *dup = selected_repr->duplicate();
+    Inkscape::XML::Node *dup = selected_repr->duplicate(parent->document());
     parent->addChild(dup, selected_repr);
 
     sp_document_done(current_document, SP_VERB_DIALOG_XML_EDITOR,