aboutsummaryrefslogtreecommitdiffstats
path: root/src/xwidget.c
diff options
context:
space:
mode:
authorGrégoire Jadi2013-07-16 19:39:19 +0200
committerGrégoire Jadi2013-07-16 19:39:19 +0200
commit360a89e080197f6ea68ee7156dbac72db252f344 (patch)
tree8bf68d27f07b968059c7bc96701d7be9db85b81e /src/xwidget.c
parentaa61edd3095f082a2c717e67aeb9efe563e0cfc4 (diff)
downloademacs-360a89e080197f6ea68ee7156dbac72db252f344.tar.gz
emacs-360a89e080197f6ea68ee7156dbac72db252f344.zip
* src/xwidget.c (Fxwidget_view_lookup): Bring `xwidget-view-lookup' to the
Lisp side. (xwidget_view_lookup): `xwidget_view_lookup' is just a wrapper around `xwidget-view-lookup' to convert from `struct *' to `Lisp_Object'.
Diffstat (limited to 'src/xwidget.c')
-rw-r--r--src/xwidget.c42
1 files changed, 30 insertions, 12 deletions
diff --git a/src/xwidget.c b/src/xwidget.c
index e716308e27f..fcebc85bba1 100644
--- a/src/xwidget.c
+++ b/src/xwidget.c
@@ -1545,6 +1545,28 @@ DEFUN("xwidget-delete-zombies", Fxwidget_delete_zombies , Sxwidget_delete_zombie
1545 } 1545 }
1546} 1546}
1547 1547
1548DEFUN ("xwidget-view-lookup", Fxwidget_view_lookup, Sxwidget_view_lookup,
1549 1, 2, 0,
1550 doc: /* Return the xwidget-view associated to XWIDGET in
1551WINDOW if specified, otherwise it uses the selected window. */)
1552 (Lisp_Object xwidget, Lisp_Object window)
1553{
1554 CHECK_XWIDGET (xwidget);
1555
1556 if (NILP (window))
1557 window = Fselected_window();
1558 CHECK_WINDOW (window);
1559
1560 for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail); tail = XCDR (tail))
1561 {
1562 Lisp_Object xwidget_view = XCAR (tail);
1563 if (EQ (Fxwidget_view_model (xwidget_view), xwidget)
1564 && EQ (Fxwidget_view_window (xwidget_view), window))
1565 return xwidget_view;
1566 }
1567
1568 return Qnil;
1569}
1548 1570
1549DEFUN ("xwidget-plist", Fxwidget_plist, Sxwidget_plist, 1571DEFUN ("xwidget-plist", Fxwidget_plist, Sxwidget_plist,
1550 1, 1, 0, 1572 1, 1, 0,
@@ -1592,6 +1614,7 @@ syms_of_xwidget (void)
1592 defsubr (&Sget_buffer_xwidgets); 1614 defsubr (&Sget_buffer_xwidgets);
1593 defsubr (&Sxwidget_view_model); 1615 defsubr (&Sxwidget_view_model);
1594 defsubr (&Sxwidget_view_window); 1616 defsubr (&Sxwidget_view_window);
1617 defsubr (&Sxwidget_view_lookup);
1595 1618
1596#ifdef HAVE_WEBKIT_OSR 1619#ifdef HAVE_WEBKIT_OSR
1597 defsubr (&Sxwidget_webkit_goto_uri); 1620 defsubr (&Sxwidget_webkit_goto_uri);
@@ -1721,21 +1744,16 @@ xwidget_view_delete_all_in_window (struct window *w)
1721 } 1744 }
1722} 1745}
1723 1746
1724
1725
1726struct xwidget_view* 1747struct xwidget_view*
1727xwidget_view_lookup (struct xwidget* xw, struct window *w) 1748xwidget_view_lookup (struct xwidget* xw, struct window *w)
1728{ 1749{
1729 struct xwidget_view* xv = NULL; 1750 Lisp_Object xwidget, window, ret;
1730 for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail); tail = XCDR (tail)) 1751 XSETXWIDGET (xwidget, xw);
1731 { 1752 XSETWINDOW (window, w);
1732 if (XWIDGET_VIEW_P (XCAR (tail))) { 1753
1733 xv = XXWIDGET_VIEW (XCAR (tail)); 1754 ret = Fxwidget_view_lookup (xwidget, window);
1734 if (XXWIDGET (xv->model) == xw && XWINDOW (xv->w) == w) 1755
1735 return xv; 1756 return EQ (ret, Qnil) ? NULL : XXWIDGET_VIEW (ret);
1736 }
1737 }
1738 return NULL; /* we didnt find a matching view */
1739} 1757}
1740 1758
1741struct xwidget* 1759struct xwidget*