* eww.el (eww-convert-widgets): Make widgets from non-tabular layouts work, too.
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Tue, 11 Jun 2013 16:09:32 +0000 (18:09 +0200)
committerLars Magne Ingebrigtsen <larsi@gnus.org>
Tue, 11 Jun 2013 16:09:32 +0000 (18:09 +0200)
lisp/ChangeLog
lisp/eww.el

index 29f678c..cafd18a 100644 (file)
@@ -1,3 +1,8 @@
+2013-06-11  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * eww.el (eww-convert-widgets): Make widgets from non-tabular layouts
+       work, too.
+
 2013-06-10  Albert Krewinkel  <krewinkel@moltkeplatz.de>
 
        * sieve-manage.el (sieve-manage-open): work with STARTTLS: shorten
index cf3f62b..7f48fce 100644 (file)
        (when shr-final-table-render
          (nconc eww-form (list widget)))
       (apply 'widget-create widget))
-    (put-text-property start (point) 'eww-widget widget)))
+    (put-text-property start (point) 'eww-widget widget)
+    (insert " ")))
 
 (defun eww-click-radio (widget &rest ignore)
   (let ((form (plist-get (cdr widget) :eww-form))
 (defun eww-convert-widgets ()
   (let ((start (point-min))
        widget)
+    ;; Some widgets come from different buffers (rendered for tables),
+    ;; so we need to nix out the list of widgets and recreate them.
+    (setq widget-field-list nil
+         widget-field-new nil)
     (while (setq start (next-single-property-change start 'eww-widget))
       (setq widget (get-text-property start 'eww-widget))
       (goto-char start)
       (let ((end (next-single-property-change start 'eww-widget)))
        (dolist (overlay (overlays-in start end))
-         (when (plist-get (overlay-properties overlay) 'button)
+         (when (or (plist-get (overlay-properties overlay) 'button)
+                   (plist-get (overlay-properties overlay) 'field))
            (delete-overlay overlay)))
        (delete-region start end))
       (apply 'widget-create widget))