aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGrégoire Jadi2013-06-24 10:22:45 +0200
committerGrégoire Jadi2013-06-24 10:22:45 +0200
commitd65ea7dd1d4aa93a44c39a44d0e79fca6e912690 (patch)
tree715e0de814d4c2523c9f30ec4a72c8ca4a3061ef
parent4d3eadf4d596788c6b70c2fac347d486c5b4658a (diff)
downloademacs-d65ea7dd1d4aa93a44c39a44d0e79fca6e912690.tar.gz
emacs-d65ea7dd1d4aa93a44c39a44d0e79fca6e912690.zip
* src/xwidget.c (Fmake_xwidget): Store xwidget in Vxwidget_list.
(syms_of_xwidget): Rename Vxwidget_alist to Vxwidget_list and register `get-buffer-xwidgets' as a new subr. (Fget_buffer_xwidgets): New function to return a list of xwidgets attached to the specified buffer.
-rw-r--r--src/xwidget.c32
1 files changed, 28 insertions, 4 deletions
diff --git a/src/xwidget.c b/src/xwidget.c
index a73710479d7..ed7ea98fb42 100644
--- a/src/xwidget.c
+++ b/src/xwidget.c
@@ -216,7 +216,7 @@ TYPE is a symbol which can take one of the following values:
216 xw->height = XFASTINT(height); 216 xw->height = XFASTINT(height);
217 xw->width = XFASTINT(width); 217 xw->width = XFASTINT(width);
218 XSETPSEUDOVECTOR (val, xw, PVEC_XWIDGET); // set the vectorlike_header of VAL with the correct value 218 XSETPSEUDOVECTOR (val, xw, PVEC_XWIDGET); // set the vectorlike_header of VAL with the correct value
219 Vxwidget_alist = Fcons (val, Vxwidget_alist); 219 Vxwidget_list = Fcons (val, Vxwidget_list);
220 xw->widgetwindow_osr = NULL; 220 xw->widgetwindow_osr = NULL;
221 xw->widget_osr = NULL; 221 xw->widget_osr = NULL;
222 xw->plist = Qnil; 222 xw->plist = Qnil;
@@ -302,6 +302,30 @@ TYPE is a symbol which can take one of the following values:
302 return val; 302 return val;
303} 303}
304 304
305DEFUN ("get-buffer-xwidgets", Fget_buffer_xwidgets, Sget_buffer_xwidgets, 1, 1, 0,
306 doc: /* Return the xwidgets associated with BUFFER.
307BUFFER may be a buffer or the name of one.
308 */
309 )
310 (Lisp_Object buffer)
311{
312 Lisp_Object xw, tail, xw_list;
313
314 if (NILP (buffer)) return Qnil;
315 buffer = Fget_buffer (buffer);
316 if (NILP (buffer)) return Qnil;
317
318 xw_list = Qnil;
319
320 for (tail = Vxwidget_list; CONSP (tail); tail = XCDR (tail))
321 {
322 xw = XCAR (tail);
323 if (XXWIDGETP (xw) && EQ (Fxwidget_buffer (xw), buffer))
324 xw_list = Fcons (xw, xw_list);
325 }
326 return xw_list;
327}
328
305int 329int
306xwidget_hidden(struct xwidget_view *xv) 330xwidget_hidden(struct xwidget_view *xv)
307{ 331{
@@ -1557,6 +1581,7 @@ syms_of_xwidget (void)
1557 defsubr (&Sxwidget_info); 1581 defsubr (&Sxwidget_info);
1558 defsubr (&Sxwidget_view_info); 1582 defsubr (&Sxwidget_view_info);
1559 defsubr (&Sxwidget_resize); 1583 defsubr (&Sxwidget_resize);
1584 defsubr (&Sget_buffer_xwidgets);
1560 1585
1561#ifdef HAVE_WEBKIT_OSR 1586#ifdef HAVE_WEBKIT_OSR
1562 defsubr (&Sxwidget_webkit_goto_uri); 1587 defsubr (&Sxwidget_webkit_goto_uri);
@@ -1594,8 +1619,8 @@ syms_of_xwidget (void)
1594 1619
1595 DEFSYM (QCplist, ":plist"); 1620 DEFSYM (QCplist, ":plist");
1596 1621
1597 DEFVAR_LISP ("xwidget-alist", Vxwidget_alist, doc: /*xwidgets list*/); 1622 DEFVAR_LISP ("xwidget-alist", Vxwidget_list, doc: /*xwidgets list*/);
1598 Vxwidget_alist = Qnil; 1623 Vxwidget_list = Qnil;
1599 1624
1600 DEFVAR_LISP ("xwidget-view-alist", Vxwidget_view_alist, doc: /*xwidget views list*/); 1625 DEFVAR_LISP ("xwidget-view-alist", Vxwidget_view_alist, doc: /*xwidget views list*/);
1601 Vxwidget_view_alist = Qnil; 1626 Vxwidget_view_alist = Qnil;
@@ -1820,5 +1845,4 @@ xwidget_end_redisplay (struct window *w, struct glyph_matrix *matrix)
1820 } 1845 }
1821} 1846}
1822 1847
1823
1824#endif /* HAVE_XWIDGETS */ 1848#endif /* HAVE_XWIDGETS */