2003-07-07 Pablo Gonzalo del Campo <pablodc@bigfoot.com>
[platform/core/uifw/at-spi2-atk.git] / libspi / hyperlink.c
index d5596c2..ef41984 100644 (file)
@@ -58,7 +58,7 @@ impl_isValid (PortableServer_Servant _servant,
 BONOBO_TYPE_FUNC_FULL (SpiHyperlink,
                       Accessibility_Hyperlink,
                       SPI_TYPE_BASE,
-                      spi_hyperlink);
+                      spi_hyperlink)
 
 
 static void
@@ -84,24 +84,32 @@ spi_hyperlink_init (SpiHyperlink *hyperlink)
 
 
 SpiHyperlink *
-spi_hyperlink_new (AtkObject *object)
+spi_hyperlink_new (AtkHyperlink *object)
 {
   SpiHyperlink *new_hyperlink = g_object_new (
          SPI_HYPERLINK_TYPE, NULL);
 
   spi_base_construct (SPI_BASE (new_hyperlink), G_OBJECT(object));
 
+  /* 
+   * some hyperlinks are actionable... this is an ATK convention 
+   * that seems convenient though possibly poorly documented or unintended.
+   */
+  if (ATK_IS_ACTION (object))
+    {
+      bonobo_object_add_interface (bonobo_object (new_hyperlink),
+                                  BONOBO_OBJECT (spi_action_interface_new (object)));
+    }
   return new_hyperlink;
 }
 
-
 static AtkHyperlink *
 get_hyperlink_from_servant (PortableServer_Servant servant)
 {
   SpiBase *object = SPI_BASE (bonobo_object_from_servant (servant));
 
   g_return_val_if_fail (object != NULL, NULL);
-  g_return_val_if_fail (ATK_IS_OBJECT(object->gobj), NULL);
+  g_return_val_if_fail (ATK_IS_HYPERLINK(object->gobj), NULL);
   return ATK_HYPERLINK (object->gobj);
 }