[g-a-devel]ATK patch to add support for embedded text



Hi:

I attach a patch for atk to add two things:

ATK_RELATION_EMBEDS/ATK_RELATION_EMBEDDED_BY, to handle embedded content
of the simple "flows around" variety:

------------------
---------XXXXXXXXX
---------XXXXXXXXX
---------XXXXXXXXX
------------------
------------------

and 
gboolean atk_hyperlink_is_inline (AtkHyperlink)

which allows for images, etc. embedded at specific locations/offsets in
another object (such as a text object).  The "is_inline" API also allows
better handling of HTML <embed> and <img> elements.

OK to commit?

-Bill



? atk-patch-nov14.diff
? atk-patch.diff
? stamp-h
? stamp-h.in
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/atk/ChangeLog,v
retrieving revision 1.219
diff -u -r1.219 ChangeLog
--- ChangeLog	13 Nov 2002 17:09:03 -0000	1.219
+++ ChangeLog	14 Nov 2002 11:28:49 -0000
@@ -1,3 +1,21 @@
+2002-11-14  Bill Haneman <bill haneman sun com>
+
+	* atk/atkrelationtype.h:
+	(ATK_RELATION_EMBEDS, ATK_RELATION_EMBEDDED_BY):
+	New relations to handle content embedding, for instance
+	text that embeds or flows around images.
+	* atk/atkhyperlink.h:
+	(atk_hyperlink_is_inline):
+	New API, returns whether a hyperlink's content is
+	partially displayed inline; useful for small images
+	emedded in text, and for HTML <src> elements.
+	(AtkHyperlinkClass->link_state):
+	New virtualized method, used to implement various
+	state query API such as atk_hyperlink_is_inline().
+	* atk/atkhyperlink.c:
+	(atk_hyperlink_is_inline):
+	New method.
+
 2002-11-13  Padraig O'Briain  <padraig obriain sun com>
 
 	* atk/atkobject.[ch]: Add signal active-descendant-changed
Index: atk/atkhyperlink.c
===================================================================
RCS file: /cvs/gnome/atk/atk/atkhyperlink.c,v
retrieving revision 1.10
diff -u -r1.10 atkhyperlink.c
--- atk/atkhyperlink.c	8 Nov 2002 18:53:55 -0000	1.10
+++ atk/atkhyperlink.c	14 Nov 2002 11:28:49 -0000
@@ -199,6 +199,32 @@
 }
 
 /**
+ * atk_hyperlink_is_inline:
+ * @link_: an #AtkHyperlink
+ *
+ * Indicates whether the link currently displays some or all of its
+ *           content inline.  Ordinary HTML links will usually return
+ *           %FALSE, but an inline &lt;src&gt; HTML element will return
+ *           %TRUE.
+a *
+ * Returns: whether or not this link displays its content inline.
+ *
+ **/
+gboolean
+atk_hyperlink_is_inline (AtkHyperlink *link)
+{
+  AtkHyperlinkClass *klass;
+
+  g_return_val_if_fail (ATK_IS_HYPERLINK (link), FALSE);
+
+  klass = ATK_HYPERLINK_GET_CLASS (link);
+  if (klass->link_state)
+    return (klass->link_state (link) & ATK_HYPERLINK_IS_INLINE);
+  else
+    return FALSE;
+}
+
+/**
  * atk_hyperlink_get_n_anchors:
  * @link_: an #AtkHyperlink
  *
Index: atk/atkhyperlink.h
===================================================================
RCS file: /cvs/gnome/atk/atk/atkhyperlink.h,v
retrieving revision 1.7
diff -u -r1.7 atkhyperlink.h
--- atk/atkhyperlink.h	8 Nov 2002 18:53:55 -0000	1.7
+++ atk/atkhyperlink.h	14 Nov 2002 11:28:49 -0000
@@ -85,10 +85,17 @@
    */
   gint	           (* get_n_anchors)	   (AtkHyperlink     *link_);
 
+  /*
+   * Returns a set of bitflags which encode state information.
+   * Used by non-virtualized state query methods, not intended,
+   * for direct client use.  It is virtualized, but clients should use
+   * atk_hyperlink_is_inline (), etc.
+   */
+  guint	           (* link_state)	   (AtkHyperlink     *link_);
+  
   AtkFunction      pad1;
   AtkFunction      pad2;
   AtkFunction      pad3;
-  AtkFunction      pad4;
 };
 
 GType            atk_hyperlink_get_type             (void);
@@ -104,6 +111,8 @@
 gint             atk_hyperlink_get_start_index      (AtkHyperlink     *link_);
 
 gboolean         atk_hyperlink_is_valid             (AtkHyperlink     *link_);
+
+gboolean         atk_hyperlink_is_inline             (AtkHyperlink     *link_);
 
 gint		 atk_hyperlink_get_n_anchors        (AtkHyperlink     *link_);
 
Index: atk/atkrelationtype.h
===================================================================
RCS file: /cvs/gnome/atk/atk/atkrelationtype.h,v
retrieving revision 1.1
diff -u -r1.1 atkrelationtype.h
--- atk/atkrelationtype.h	30 Oct 2002 09:42:27 -0000	1.1
+++ atk/atkrelationtype.h	14 Nov 2002 11:28:49 -0000
@@ -37,7 +37,12 @@
  *  AtkObject in a sequential way, (for instance text-flow).
  * ATK_RELATION_FLOWS_FROM: Indicates that the object has content that flows logically from
  *  another AtkObject in a sequential way, (for instance text-flow).
- * ATK_RELATION_SUBWINDOW_OF: [not sure about this one, ask peter]
+ * ATK_RELATION_SUBWINDOW_OF: [not sure about this one, ask Peter]
+ * ATK_RELATION_EMBEDS: Indicates that the object visually embeds 
+ *  another object's content, i.e. this object's content flows around 
+ *  another's content.
+ * ATK_RELATION_EMBEDDED_BY: Inverse of %ATK_RELATION_EMBEDS, indicates that
+ *  this object's content is visualy embedded in another object.
  * ATK_RELATION_LAST_DEFINED:
  * 
  *Describes the type of the relation
@@ -53,7 +58,9 @@
   ATK_RELATION_NODE_CHILD_OF,
   ATK_RELATION_FLOWS_TO,
   ATK_RELATION_FLOWS_FROM,
-  ATK_RELATION_SUBWINDOW_OF, /* not sure about this one, ask Peter */
+  ATK_RELATION_SUBWINDOW_OF, 
+  ATK_RELATION_EMBEDS, 
+  ATK_RELATION_EMBEDDED_BY, 
   ATK_RELATION_LAST_DEFINED
 } AtkRelationType;
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]