#include "control-data.h"
GtkMathViewControlData*
-gtk_math_view_control_data_new(GtkMathView *math_view)
+gtk_math_view_control_data_new(BonoboControl* control, GtkMathView *math_view)
{
GtkMathViewControlData *cd = g_new(GtkMathViewControlData,1);
+ cd->control = control; /* we don't ref the control this is a weak pointer */
cd->math_view = math_view;
+ gtk_widget_ref(GTK_WIDGET(math_view));
+ cd->item_factory = NULL;
+ cd->semantic_selection = FALSE;
cd->first_selected = NULL;
cd->root_selected = NULL;
cd->id_ns_uri = gdome_str_mkref("http://www.cs.unibo.it/helm");
cd->id_name = gdome_str_mkref("xref");
+ cd->x = cd->y = 0;
return cd;
}
gtk_math_view_control_data_destroy(GtkMathViewControlData* cd)
{
GdomeException exc = 0;
- //gtk_object_unref(cd->math_view);
+ cd->control = NULL; /* don't unref the control, see above */
+ gtk_widget_unref(GTK_WIDGET(cd->math_view));
cd->math_view = NULL;
+ if (cd->item_factory != NULL)
+ {
+ gtk_object_unref(cd->item_factory);
+ cd->item_factory = NULL;
+ }
if (cd->first_selected != NULL)
{
gdome_el_unref(cd->first_selected, &exc);
if (cd->id_name != NULL) gdome_str_unref(cd->id_name);
cd->id_name = (name != NULL) ? gdome_str_mkref_dup(name) : NULL;
}
+
+void
+gtk_math_view_control_data_set_root_selected(GtkMathViewControlData* cd, GdomeElement* elem)
+{
+ g_return_if_fail(cd != NULL);
+ GdomeException exc = 0;
+
+ gtk_math_view_freeze(cd->math_view);
+
+ if (cd->root_selected != NULL)
+ {
+ gtk_math_view_unselect(cd->math_view, cd->root_selected);
+ gdome_el_unref(cd->root_selected, &exc);
+ g_assert(exc == 0);
+ }
+
+ cd->root_selected = elem;
+ if (cd->root_selected != NULL)
+ {
+ gdome_el_ref(cd->root_selected, &exc);
+ g_assert(exc == 0);
+ gtk_math_view_select(cd->math_view, cd->root_selected);
+ }
+
+ gtk_math_view_thaw(cd->math_view);
+}