[w3m-dev 01192] Re: <textarea> in table ( Re: w3m-0.1.11-pre-kokb16 patch)

From: Okabe Katsuya (okabek@guitar.ocn.ne.jp)
Date: Mon Oct 16 2000 - 03:55:58 CDT

  • Next message: $B2,ED: "[w3m-dev 01193] Re: frame bug?"

    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