diff options
| author | Grégoire Jadi | 2013-07-16 19:39:19 +0200 |
|---|---|---|
| committer | Grégoire Jadi | 2013-07-16 19:39:19 +0200 |
| commit | 360a89e080197f6ea68ee7156dbac72db252f344 (patch) | |
| tree | 8bf68d27f07b968059c7bc96701d7be9db85b81e /src/xwidget.c | |
| parent | aa61edd3095f082a2c717e67aeb9efe563e0cfc4 (diff) | |
| download | emacs-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.c | 42 |
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 | ||
| 1548 | DEFUN ("xwidget-view-lookup", Fxwidget_view_lookup, Sxwidget_view_lookup, | ||
| 1549 | 1, 2, 0, | ||
| 1550 | doc: /* Return the xwidget-view associated to XWIDGET in | ||
| 1551 | WINDOW 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 | ||
| 1549 | DEFUN ("xwidget-plist", Fxwidget_plist, Sxwidget_plist, | 1571 | DEFUN ("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 | |||
| 1726 | struct xwidget_view* | 1747 | struct xwidget_view* |
| 1727 | xwidget_view_lookup (struct xwidget* xw, struct window *w) | 1748 | xwidget_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 | ||
| 1741 | struct xwidget* | 1759 | struct xwidget* |