diff options
author | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2008-12-28 17:17:41 +0100 |
---|---|---|
committer | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2008-12-28 17:17:41 +0100 |
commit | 0f8ac3432252390dc46b600409ba6fc88e958e95 (patch) | |
tree | bb66505421eb0cc1e9201586d027200fdb89213c /src/menu.cc | |
parent | 7149a1e3fc877a8c060cbf07e4325d636cc807ad (diff) | |
parent | 5486bedf18450ae4de413c4174a0175948c95c3e (diff) |
merge with main
Diffstat (limited to 'src/menu.cc')
-rw-r--r-- | src/menu.cc | 65 |
1 files changed, 64 insertions, 1 deletions
diff --git a/src/menu.cc b/src/menu.cc index ac23117d..54babc0b 100644 --- a/src/menu.cc +++ b/src/menu.cc @@ -38,7 +38,7 @@ static DilloUrl *popup_url = NULL; // Weak reference to the popup's bw static BrowserWindow *popup_bw = NULL; // Where to place the filemenu popup -int popup_x, popup_y; +static int popup_x, popup_y; // History popup direction (-1 = back, 1 = forward). static int history_direction = -1; // History popup, list of URL-indexes. @@ -212,6 +212,44 @@ static void Menu_load_images_cb(Widget*, void *user_data) } } +/* + * Submit form + */ +static void Menu_form_submit_cb(Widget*, void *v_form) +{ + if (popup_bw && popup_bw->Docs) { + if (dList_find_custom(popup_bw->PageUrls, popup_url, + (dCompareFunc)a_Url_cmp)){ + /* HTML page is still there */ + int n = dList_length(popup_bw->Docs); + if (n == 1) { + a_Html_form_submit(dList_nth_data(popup_bw->Docs, 0), v_form); + } else if (n > 1) { + MSG ("Menu_form_submit_cb multiple Docs not implemented\n"); + } + } + } +} + +/* + * Reset form + */ +static void Menu_form_reset_cb(Widget*, void *v_form) +{ + if (popup_bw && popup_bw->Docs) { + if (dList_find_custom(popup_bw->PageUrls, popup_url, + (dCompareFunc)a_Url_cmp)){ + /* HTML page is still there */ + int n = dList_length(popup_bw->Docs); + if (n == 1) { + a_Html_form_reset(dList_nth_data(popup_bw->Docs, 0), v_form); + } else if (n > 1) { + MSG ("Menu_form_reset_cb multiple Docs not implemented\n"); + } + } + } +} + /* * Validate URL with the W3C */ @@ -452,6 +490,31 @@ void a_Menu_image_popup(BrowserWindow *bw, const DilloUrl *url, } /* + * Form popup menu (construction & popup) + */ +void a_Menu_form_popup(BrowserWindow *bw, const DilloUrl *page_url, + void *formptr) +{ + static PopupMenu *pm = 0; + + popup_bw = bw; + a_Url_free(popup_url); + popup_url = a_Url_dup(page_url); + if (!pm) { + Item *i; + pm = new PopupMenu(0,0,0,0,"FORM OPTIONS"); + pm->add(i = new Item("Submit form")); + i->callback(Menu_form_submit_cb); + pm->add(i = new Item("Reset form")); + i->callback(Menu_form_reset_cb); + pm->type(PopupMenu::POPUP123); + } + pm->user_data(formptr); + + a_Timeout_add(0.0, Menu_popup_cb, (void *)pm); +} + +/* * File popup menu (construction & popup) */ void a_Menu_file_popup(BrowserWindow *bw, void *v_wid) |