]> matita.cs.unibo.it Git - helm.git/commitdiff
* completed implementation of View interface
authorLuca Padovani <luca.padovani@unito.it>
Wed, 10 Sep 2003 07:55:33 +0000 (07:55 +0000)
committerLuca Padovani <luca.padovani@unito.it>
Wed, 10 Sep 2003 07:55:33 +0000 (07:55 +0000)
helm/gtkmathview-bonobo/src/aux.cc
helm/gtkmathview-bonobo/src/aux.h
helm/gtkmathview-bonobo/src/control-data.c
helm/gtkmathview-bonobo/src/control-data.h
helm/gtkmathview-bonobo/src/handlers.c
helm/gtkmathview-bonobo/src/view.c

index 6fe151bc1035141ae88bb739e80da7e3ff4f93e6..6ab6f63d4856308b93f7b550bdcdd478df8ee030 100644 (file)
@@ -270,9 +270,14 @@ findElementWithAttributeNS(const DOM::Element& elem, const std::string& ns_uri,
 }
 
 extern "C" GdomeElement*
-find_xref_element(GdomeElement* elem)
+find_element_with_id(GdomeElement* elem, GdomeDOMString* ns_uri, GdomeDOMString* name)
 {
-  DOM::Element el = findElementWithAttribute(DOM::Element(elem), "xref");
+  assert(name != NULL);
+  DOM::Element el;
+  if (ns_uri != NULL)
+    el = findElementWithAttributeNS(DOM::Element(elem), DOM::GdomeString(ns_uri), DOM::GdomeString(name));
+  else
+    el = findElementWithAttribute(DOM::Element(elem), DOM::GdomeString(name));
   return gdome_cast_el(el.gdome_object());
 }
 
index a91bf587a00a79e9536071e0ba3f2500065a8c70..50abcd40963ac73339e5d7c1094f8fe17d7757e3 100644 (file)
@@ -8,7 +8,8 @@
 extern "C" {
 #endif
 
-  GdomeElement* find_xref_element(GdomeElement*);
+  void action_toggle(GdomeElement*);
+  GdomeElement* find_element_with_id(GdomeElement*, GdomeDOMString*, GdomeDOMString*);
   GdomeDOMString* find_hyperlink(GdomeElement*);
   GdomeElement* find_element_by_id(GdomeElement*, GdomeDOMString*, GdomeDOMString*,
                                   const char*);
index 10f06491c338a197cd9e04ddd78b6e39c35561e6..b96e993383a3b20d2207b3716d6529dfe70d24ee 100644 (file)
@@ -6,7 +6,6 @@ gtk_math_view_control_data_new(GtkMathView *math_view)
 {
   GtkMathViewControlData *cd = g_new(GtkMathViewControlData,1);
   cd->math_view = math_view;
-  cd->semantic_selection = FALSE;
   cd->first_selected = NULL;
   cd->root_selected = NULL;
   cd->id_ns_uri = NULL;
index f7a95cfab728d1e7afa7e30dae7db0ea70fa1a46..089ed688f046d02fdb4216d553da73c574cedaa8 100644 (file)
@@ -8,7 +8,6 @@
 typedef struct _GtkMathViewControlData
 {
   GtkMathView* math_view;
-  gboolean semantic_selection;
   GdomeElement* first_selected;
   GdomeElement* root_selected;
   GdomeDOMString* id_ns_uri;
index 485ad0183ad1ecadde2f5119e09b01cca7b92eb9..cca4f1e9e51fa82b5c798b62e2d434a8ecc2bc90 100644 (file)
@@ -69,9 +69,9 @@ select_begin_cb(GtkMathView* math_view, GdomeElement* elem, gint state,
          control_data->root_selected = NULL;
        }
       
-      if (control_data->semantic_selection)
+      if (control_data->id_ns_uri != NULL || control_data->id_name != NULL)
        {
-         GdomeElement* new_elem = find_xref_element(elem);
+         GdomeElement* new_elem = find_element_with_id(elem, control_data->id_ns_uri, control_data->id_name);
          if (new_elem != NULL)
            {
              gdome_el_ref(new_elem, &exc);
@@ -116,12 +116,12 @@ select_over_cb(GtkMathView* math_view, GdomeElement* elem, gint state,
           control_data->root_selected = NULL;
        }
       
-      if (control_data->semantic_selection)
+      if (control_data->id_ns_uri != NULL || control_data->id_name != NULL)
        {
          GdomeElement* new_root = find_common_ancestor(control_data->first_selected, elem);
          if (new_root != NULL)
            {
-             control_data->root_selected = find_xref_element(new_root);
+             control_data->root_selected = find_element_with_id(new_root, control_data->id_ns_uri, control_data->id_name);
              gdome_el_unref(new_root, &exc);
              g_assert(exc == 0);
            }
index bc0c903ef97a9fd8611908b6aef1030db62aa977..b0385a6fe6bc8552481184f313b07a3a7381b262 100644 (file)
@@ -1,6 +1,7 @@
 
 #include <config.h>
 
+#define HAVE_GMETADOM
 #include <gtkmathview.h>
 
 #include "aux.h"
@@ -210,7 +211,7 @@ impl_view_elementBoundingBox(PortableServer_Servant servant,
          gint w;
          gint h;
          gint d;
-         res = gtk_math_view_get_element_coords(view->control_data->math_view, el, &w, &h, &d) ? CORBA_TRUE : CORBA_FALSE;
+         res = gtk_math_view_get_element_bounding_box(view->control_data->math_view, el, &w, &h, &d) ? CORBA_TRUE : CORBA_FALSE;
          gdome_el_unref(el, &exc);
          g_assert(exc == 0);
          *width = w;