5 set_frame(BonoboControl *control, gpointer data)
10 click_cb(GtkMathView* math_view, GdomeElement* elem, gint state,
11 GtkMathViewControlData* control_data)
13 GdomeException exc = 0;
15 g_return_if_fail(math_view != NULL);
16 g_return_if_fail(control_data != NULL);
21 GdomeDOMString* href = find_hyperlink(elem);
25 gtk_math_view_load_uri(math_view,href->str);
26 gdome_str_unref(href);
30 action = find_self_or_ancestor(elem, MATHML_NS_URI, "maction");
33 gtk_math_view_freeze(math_view);
34 action_toggle(action);
35 gtk_math_view_thaw(math_view);
36 gdome_el_unref(action, &exc);
42 if (control_data->root_selected != NULL)
44 gtk_math_view_freeze(math_view);
45 gtk_math_view_unselect(math_view, control_data->root_selected);
46 gtk_math_view_thaw(math_view);
47 gdome_el_unref(control_data->root_selected, &exc);
49 control_data->root_selected = NULL;
54 select_begin_cb(GtkMathView* math_view, GdomeElement* elem, gint state,
55 GtkMathViewControlData* control_data)
57 g_return_if_fail(math_view != NULL);
58 g_return_if_fail(control_data != NULL);
62 GdomeException exc = 0;
63 gtk_math_view_freeze(math_view);
64 if (control_data->root_selected != NULL)
66 gtk_math_view_unselect(math_view, control_data->root_selected);
67 gdome_el_unref(control_data->root_selected, &exc);
69 control_data->root_selected = NULL;
72 if (control_data->id_ns_uri != NULL || control_data->id_name != NULL)
74 GdomeElement* new_elem = find_element_with_id(elem, control_data->id_ns_uri, control_data->id_name);
77 gdome_el_ref(new_elem, &exc);
80 control_data->first_selected = control_data->root_selected = new_elem;
84 gdome_el_ref(elem, &exc);
86 gdome_el_ref(elem, &exc);
88 control_data->first_selected = control_data->root_selected = elem;
91 if (control_data->root_selected != NULL)
92 gtk_math_view_select(math_view, control_data->root_selected);
94 gtk_math_view_thaw(math_view);
99 select_over_cb(GtkMathView* math_view, GdomeElement* elem, gint state,
100 GtkMathViewControlData* control_data)
102 g_return_if_fail(math_view != NULL);
103 g_return_if_fail(control_data != NULL);
105 if (control_data->first_selected != NULL && elem != NULL)
107 GdomeException exc = 0;
109 gtk_math_view_freeze(math_view);
111 if (control_data->root_selected != NULL)
113 gtk_math_view_unselect(math_view, control_data->root_selected);
114 gdome_el_unref(control_data->root_selected, &exc);
116 control_data->root_selected = NULL;
119 if (control_data->id_ns_uri != NULL || control_data->id_name != NULL)
121 GdomeElement* new_root = find_common_ancestor(control_data->first_selected, elem);
122 if (new_root != NULL)
124 control_data->root_selected = find_element_with_id(new_root, control_data->id_ns_uri, control_data->id_name);
125 gdome_el_unref(new_root, &exc);
129 control_data->root_selected = NULL;
132 control_data->root_selected = find_common_ancestor(control_data->first_selected, elem);
134 if (control_data->root_selected != NULL)
135 gtk_math_view_select(math_view, control_data->root_selected);
137 gtk_math_view_thaw(math_view);
142 select_end_cb(GtkMathView* math_view, GdomeElement* elem, gint state,
143 GtkMathViewControlData* control_data)
145 g_return_if_fail(math_view != NULL);
146 g_return_if_fail(control_data != NULL);
148 if (control_data->first_selected != NULL)
150 GdomeException exc = 0;
151 gdome_el_unref(control_data->first_selected, &exc);
153 control_data->first_selected = NULL;
158 select_abort_cb(GtkMathView* math_view, GtkMathViewControlData* control_data)
160 GdomeException exc = 0;
162 g_return_if_fail(math_view != NULL);
163 g_return_if_fail(control_data != NULL);
165 if (control_data->first_selected != NULL)
167 gdome_el_unref(control_data->first_selected, &exc);
169 control_data->first_selected = NULL;
172 if (control_data->root_selected != NULL)
174 gtk_math_view_freeze(math_view);
175 gtk_math_view_unselect(math_view, control_data->root_selected);
176 gtk_math_view_thaw(math_view);
177 gdome_el_unref(control_data->root_selected, &exc);
179 control_data->root_selected = NULL;