+ if (control_data->root_selected != NULL)
+ {
+ gtk_math_view_unselect(control_data->math_view, control_data->root_selected);
+ control_data->root_selected = NULL;
+ }
+}
+
+/* Our menu, an array of GtkItemFactoryEntry structures that defines each menu item */
+static GtkItemFactoryEntry menu_items[] = {
+ { "/Activate <maction>", NULL, activate_maction, 0, "<StockItem>", GTK_STOCK_EXECUTE },
+ { "/Copy Link Address", NULL, copy_link_address, 0, "<StockItem>", GTK_STOCK_COPY },
+ /* { "/Jump To", NULL, NULL, 0, "<StockItem>", GTK_STOCK_JUMP_TO }, */
+ { "/sep1", NULL, NULL, 0, "<Separator>" },
+ /* { "/Semantic Selection", NULL, switch_semantic_selection, 0, "<CheckItem>" }, */
+ /* { "/Copy Selected Markup", NULL, copy_selected_markup, 0, "<Item>" }, */
+ /* { "/Copy Id", NULL, copy_selected_id, 0, "<Item>" }, */
+ /* { "/Show Selected", NULL, NULL, 0, "<Item>" }, */
+ { "/Select Parent", NULL, select_parent, 0, "<Item>" },
+ { "/De-Select", NULL, deselect, 0, "<StockItem>", GTK_STOCK_CLEAR },
+ { "/sep2", NULL, NULL, 0, "<Separator>" },
+ { "/Smaller", NULL, zoom_out, 0, "<StockItem>", GTK_STOCK_ZOOM_OUT },
+ { "/Bigger", NULL, zoom_in, 0, "<StockItem>", GTK_STOCK_ZOOM_IN },
+ /* { "/Properties...", NULL, NULL, 0, "<StockItem>", GTK_STOCK_PROPERTIES }, */
+};
+
+static gint nmenu_items = sizeof (menu_items) / sizeof (menu_items[0]);
+
+void
+button_pressed_cb(GtkMathView* math_view, GdkEventButton* event, GtkMathViewControlData* control_data)
+{
+ g_return_if_fail(math_view != NULL);
+ g_return_if_fail(event != NULL);
+ g_return_if_fail(control_data != NULL);
+
+ if (event->button == 3)
+ {
+#if 0
+ gtk_menu_popup (GTK_MENU(control_data->popup_menu), NULL, NULL,
+ NULL, event, event->button, event->time);
+#endif
+ control_data->x = (gint) event->x;
+ control_data->y = (gint) event->y;
+ printf("data %d %d\n", control_data->x, control_data->y);
+
+ gtk_item_factory_popup_with_data(control_data->item_factory,
+ NULL, NULL, event->x_root, event->y_root,
+ event->button, gtk_get_current_event_time());
+ }
+}
+
+
+static void
+get_prop(BonoboPropertyBag* bag,
+ BonoboArg* arg,
+ guint arg_id,
+ CORBA_Environment *ev,
+ gpointer user_data)
+{
+ GtkMathViewControlData* control_data = user_data;
+ g_assert(control_data != NULL);
+
+ switch (arg_id)