diff options
Diffstat (limited to 'src/menu.cc')
-rw-r--r-- | src/menu.cc | 57 |
1 files changed, 41 insertions, 16 deletions
diff --git a/src/menu.cc b/src/menu.cc index fe8ff139..b76e22bc 100644 --- a/src/menu.cc +++ b/src/menu.cc @@ -68,10 +68,12 @@ static void filemenu_cb(Fl_Widget*, void *data) } -static void Menu_copy_urlstr_cb(Fl_Widget*, void*) +static void Menu_copy_urlstr_cb(Fl_Widget*, void *user_data) { - if (popup_url) - a_UIcmd_copy_urlstr(popup_bw, URL_STR(popup_url)); + if (user_data) { + DilloUrl *url = (DilloUrl *)user_data ; + a_UIcmd_copy_urlstr(popup_bw, URL_STR(url)); + } } static void Menu_link_cb(Fl_Widget*, void *user_data) @@ -86,37 +88,41 @@ static void Menu_link_cb(Fl_Widget*, void *user_data) /* * Open URL */ -static void Menu_open_url_cb(Fl_Widget*, void*) +static void Menu_open_url_cb(Fl_Widget*, void *user_data) { + DilloUrl *url = (DilloUrl *)user_data; _MSG("Open URL cb: click! :-)\n"); - a_UIcmd_open_url(popup_bw, popup_url); + a_UIcmd_open_url(popup_bw, url); } /* * Open URL in new window */ -static void Menu_open_url_nw_cb(Fl_Widget*, void*) +static void Menu_open_url_nw_cb(Fl_Widget*, void *user_data) { + DilloUrl *url = (DilloUrl *)user_data; _MSG("Open URL in new window cb: click! :-)\n"); - a_UIcmd_open_url_nw(popup_bw, popup_url); + a_UIcmd_open_url_nw(popup_bw, url); } /* * Open URL in new Tab */ -static void Menu_open_url_nt_cb(Fl_Widget*, void*) +static void Menu_open_url_nt_cb(Fl_Widget*, void *user_data) { + DilloUrl *url = (DilloUrl *)user_data; int focus = prefs.focus_new_tab ? 1 : 0; if (Fl::event_state(FL_SHIFT)) focus = !focus; - a_UIcmd_open_url_nt(popup_bw, popup_url, focus); + a_UIcmd_open_url_nt(popup_bw, url, focus); } /* * Add bookmark */ -static void Menu_add_bookmark_cb(Fl_Widget*, void*) +static void Menu_add_bookmark_cb(Fl_Widget*, void *user_data) { - a_UIcmd_add_bookmark(popup_bw, popup_url); + DilloUrl *url = (DilloUrl *)user_data; + a_UIcmd_add_bookmark(popup_bw, url); } /* @@ -130,9 +136,10 @@ static void Menu_find_text_cb(Fl_Widget*, void*) /* * Save link */ -static void Menu_save_link_cb(Fl_Widget*, void*) +static void Menu_save_link_cb(Fl_Widget*, void *user_data) { - a_UIcmd_save_link(popup_bw, popup_url); + DilloUrl *url = (DilloUrl *)user_data; + a_UIcmd_save_link(popup_bw, url); } /* @@ -146,9 +153,10 @@ static void Menu_save_page_cb(Fl_Widget*, void*) /* * View current page source */ -static void Menu_view_page_source_cb(Fl_Widget*, void*) +static void Menu_view_page_source_cb(Fl_Widget*, void *user_data) { - a_UIcmd_view_page_source(popup_bw, popup_url); + DilloUrl *url = (DilloUrl *)user_data; + a_UIcmd_view_page_source(popup_bw, url); } /* @@ -330,8 +338,10 @@ void a_Menu_page_popup(BrowserWindow *bw, const DilloUrl *url, if (dStrAsciiCasecmp(URL_SCHEME(url), "dpi") == 0 && strncmp(URL_PATH(url), "/vsource/", 9) == 0) pm[0].deactivate(); - else + else { pm[0].activate(); + pm[0].user_data(popup_url); + } if (stylesheets) { while (stylesheets[j].text) { @@ -376,6 +386,7 @@ void a_Menu_page_popup(BrowserWindow *bw, const DilloUrl *url, } else { pm[2].deactivate(); } + pm[3].user_data(popup_url); a_Timeout_add(0.0, Menu_popup_cb, (void*)pm); } @@ -401,6 +412,12 @@ void a_Menu_link_popup(BrowserWindow *bw, const DilloUrl *url) a_Url_free(popup_url); popup_url = a_Url_dup(url); + pm[0].user_data(popup_url); + pm[1].user_data(popup_url); + pm[2].user_data(popup_url); + pm[3].user_data(popup_url); + pm[4].user_data(popup_url); + a_Timeout_add(0.0, Menu_popup_cb, (void*)pm); } @@ -437,6 +454,10 @@ void a_Menu_image_popup(BrowserWindow *bw, const DilloUrl *url, popup_link_url = a_Url_dup(link_url); + pm[0].user_data(popup_url); + pm[1].user_data(popup_url); + pm[2].user_data(popup_url); + if (loaded_img) { pm[3].deactivate(); } else { @@ -444,6 +465,10 @@ void a_Menu_image_popup(BrowserWindow *bw, const DilloUrl *url, pm[3].user_data(popup_page_url); } + pm[4].user_data(popup_url); + pm[5].user_data(popup_url); + pm[6].user_data(popup_url); + if (link_url) { pm[7].activate(); pm[7].user_data(popup_link_url); |