Tsutomu Okada ($B2,ED(B $BJY(B) <okada@furuno.co.jp> writes:
> $B;d$N<j85$N%=!<%9$K$O(B [w3m-dev 00959], [w3m-dev 00990] $B$bEv$?$C$F$$$^$7(B
> $B$?!#(B
[w3m-dev 00959] $B$NJ}$O(B </select> $B$HF1$807$$$K$7$?J}$,NI$$$@$m$&$H;W$C(B
$B$F$"$F$F$J$+$C$?$N$G$9$,(B, $B=$@5$9$k$N$rK:$l$F$$$^$7$?(B.
$B0J2<$K%Q%C%A$rIU$1$^$9(B.
--- table.c 2000/10/11 04:15:12 1.9.2.3
+++ table.c 2000/10/16 07:02:10
@@ -2357,11 +2357,48 @@
}
}
+static void
+table_close_select(struct table *tbl, struct table_mode *mode, int width)
+{
+ Str tmp = process_n_select();
+#ifdef MENU_SELECT
+ mode->pre_mode &= ~TBLM_INSELECT;
+#endif
+ feed_table1(tbl, tmp, mode, width);
+}
+
+static void
+table_close_textarea(struct table *tbl, struct table_mode *mode, int width)
+{
+ Str tmp = process_n_textarea();
+ mode->pre_mode &= ~TBLM_INTXTA;
+ feed_table1(tbl, tmp, mode, width);
+}
+
#define TAG_ACTION_NONE 0
#define TAG_ACTION_FEED 1
#define TAG_ACTION_TABLE 2
#define TAG_ACTION_N_TABLE 3
+#define CASE_TABLE_TAG \
+ case HTML_TABLE:\
+ case HTML_N_TABLE:\
+ case HTML_TR:\
+ case HTML_N_TR:\
+ case HTML_TD:\
+ case HTML_N_TD:\
+ case HTML_TH:\
+ case HTML_N_TH:\
+ case HTML_THEAD:\
+ case HTML_N_THEAD:\
+ case HTML_TBODY:\
+ case HTML_N_TBODY:\
+ case HTML_TFOOT:\
+ case HTML_N_TFOOT:\
+ case HTML_COLGROUP:\
+ case HTML_N_COLGROUP:\
+ case HTML_COL
+
static int
feed_table_tag(struct table *tbl, char *line, struct table_mode *mode, int width)
{
@@ -2378,27 +2415,22 @@
s_line = line;
cmd = gethtmlcmd(&s_line, &status);
+ switch (cmd) {
+ CASE_TABLE_TAG:
+ if (mode->caption)
+ mode->caption = 0;
+ if (mode->pre_mode & (TBLM_IGNORE|TBLM_XMP|TBLM_LST))
+ mode->pre_mode &= ~(TBLM_IGNORE|TBLM_XMP|TBLM_LST);
+ if (mode->pre_mode & TBLM_INTXTA)
+ table_close_textarea(tbl, mode, width);
+#ifdef MENU_SELECT
+ if (mode->pre_mode & TBLM_INSELECT)
+ table_close_select(tbl, mode, width);
+#endif
+ }
+
if (mode->caption) {
switch (cmd) {
- case HTML_TABLE:
- case HTML_N_TABLE:
- case HTML_TR:
- case HTML_N_TR:
- case HTML_TD:
- case HTML_N_TD:
- case HTML_TH:
- case HTML_N_TH:
- case HTML_THEAD:
- case HTML_N_THEAD:
- case HTML_TBODY:
- case HTML_N_TBODY:
- case HTML_TFOOT:
- case HTML_N_TFOOT:
- case HTML_COLGROUP:
- case HTML_N_COLGROUP:
- case HTML_COL:
- mode->caption = 0;
- break;
case HTML_N_CAPTION:
mode->caption = 0;
return TAG_ACTION_NONE;
@@ -2421,30 +2453,8 @@
#ifdef MENU_SELECT
/* failsafe: a tag other than <option></option>and </select> in *
* <select> environment is regarded as the end of <select>. */
- if (mode->pre_mode & TBLM_INSELECT) {
- switch (cmd) {
- case HTML_N_FORM:
- case HTML_TABLE:
- case HTML_N_TABLE:
- case HTML_TR:
- case HTML_N_TR:
- case HTML_TD:
- case HTML_N_TD:
- case HTML_TH:
- case HTML_N_TH:
- case HTML_THEAD:
- case HTML_N_THEAD:
- case HTML_TBODY:
- case HTML_N_TBODY:
- case HTML_TFOOT:
- case HTML_N_TFOOT:
- case HTML_COLGROUP:
- case HTML_N_COLGROUP:
- case HTML_COL:
- mode->pre_mode &= ~TBLM_INSELECT;
- tmp = process_n_select();
- feed_table1(tbl, tmp, mode, width);
- }
+ if (mode->pre_mode & TBLM_INSELECT && cmd == HTML_N_FORM) {
+ table_close_select(tbl, mode, width);
}
#endif /* MENU_SELECT */
@@ -2833,11 +2843,7 @@
#endif /* MENU_SELECT */
break;
case HTML_N_SELECT:
-#ifdef MENU_SELECT
- mode->pre_mode &= ~TBLM_INSELECT;
-#endif /* MENU_SELECT */
- tmp = process_n_select();
- feed_table1(tbl, tmp, mode, width);
+ table_close_select(tbl, mode, width);
break;
case HTML_OPTION:
tmp = process_option(parse_tag(line + 7));
@@ -2865,9 +2871,7 @@
mode->pre_mode |= TBLM_INTXTA;
break;
case HTML_N_TEXTAREA:
- mode->pre_mode &= ~TBLM_INTXTA;
- tmp = process_n_textarea();
- feed_table1(tbl, tmp, mode, width);
+ table_close_textarea(tbl, mode, width);
break;
case HTML_A:
anchor = NULL;
--
$B2,It9nLi(B
e-mail: okabek@guitar.ocn.ne.jp
------------------------------------------------
This archive was generated by hypermail 2b29 : Mon Oct 16 2000 - 04:09:30 CDT