diff options
author | Vincent Sanders <vince@kyllikki.org> | 2014-11-02 15:46:42 +0000 |
---|---|---|
committer | Vincent Sanders <vince@kyllikki.org> | 2014-11-02 15:46:42 +0000 |
commit | c31c4babe172ab581a3196536d47fc2558a01acd (patch) | |
tree | 62d8630490f7969d0e690ba881d7b956e53d7561 /atari | |
parent | 1794ac0d333acc61eda3424141d4722b7eab9a2b (diff) | |
download | netsurf-c31c4babe172ab581a3196536d47fc2558a01acd.tar.gz netsurf-c31c4babe172ab581a3196536d47fc2558a01acd.tar.bz2 |
Change contextual content retrieval to browser features.
Update the API which allows frontends to acquire the page features
(images, link urls or form elements) present at the given coordinates
within a browser window.
By making this an explicit browser_window API and using the browser.h
header for the associated data structure with a more appropriate API
naming the usage is much more obvious and contained.
Additionally the link url is now passed around as a nsurl stopping it
being converted from nsurl to text and back again several times.
Diffstat (limited to 'atari')
-rw-r--r-- | atari/ctxmenu.c | 61 |
1 files changed, 25 insertions, 36 deletions
diff --git a/atari/ctxmenu.c b/atari/ctxmenu.c index e9c10807a..907e65d97 100644 --- a/atari/ctxmenu.c +++ b/atari/ctxmenu.c @@ -58,7 +58,7 @@ bool gui_window_get_scroll(struct gui_window *w, int *sx, int *sy); struct s_context_info { unsigned long flags; - struct contextual_content ccdata; + struct browser_window_features ccdata; }; struct s_context_info ctxinfo; @@ -86,14 +86,12 @@ static struct s_context_info * get_context_info( struct gui_window * gw, short m ctxinfo.flags |= CNT_BROWSER; - memset( &ctxinfo.ccdata, sizeof(struct contextual_content), 0 ); - gui_window_get_scroll(gw, &sx, &sy); - browser_window_get_contextual_content( gw->browser->bw, mx+sx, my+sy, - (struct contextual_content*)&ctxinfo.ccdata); + browser_window_get_features( gw->browser->bw, mx+sx, my+sy, + &ctxinfo.ccdata); - if( ctxinfo.ccdata.link_url ){ + if( ctxinfo.ccdata.link ){ ctxinfo.flags |= CNT_HREF; } if( ctxinfo.ccdata.object) { @@ -242,23 +240,18 @@ void context_popup(struct gui_window * gw, short x, short y) } case POP_CTX_SAVE_LINK_AS: - if (ctx->ccdata.link_url != NULL) { - nsurl *url; + if (ctx->ccdata.link != NULL) { nserror error; - error = nsurl_create(ctx->ccdata.link_url, &url); - if (error == NSERROR_OK) { - error = browser_window_navigate( - gw->browser->bw, - url, - browser_window_get_url(gw->browser->bw), - BW_NAVIGATE_DOWNLOAD, - NULL, - NULL, - NULL - ); - nsurl_unref(url); - } + error = browser_window_navigate( + gw->browser->bw, + ctx->ccdata.link, + browser_window_get_url(gw->browser->bw), + BW_NAVIGATE_DOWNLOAD, + NULL, + NULL, + NULL); + if (error != NSERROR_OK) { warn_user(messages_get_errorcode(error), 0); } @@ -276,27 +269,23 @@ void context_popup(struct gui_window * gw, short x, short y) break; case POP_CTX_COPY_LINK: - if ((ctx->flags & CNT_HREF) && ctx->ccdata.link_url != NULL) { - scrap_txt_write((char*)ctx->ccdata.link_url); + if ((ctx->flags & CNT_HREF) && + (ctx->ccdata.link != NULL)) { + scrap_txt_write((char*)nsurl_access(ctx->ccdata.link)); } break; case POP_CTX_OPEN_NEW: - if ((ctx->flags & CNT_HREF) && ctx->ccdata.link_url) { - nsurl *url; + if ((ctx->flags & CNT_HREF) && + (ctx->ccdata.link != NULL)) { nserror error; - error = nsurl_create(ctx->ccdata.link_url, &url); - if (error == NSERROR_OK) { - error = browser_window_create( - BW_CREATE_HISTORY | BW_CREATE_CLONE, - url, - browser_window_get_url(gw->browser->bw), - gw->browser->bw, - NULL - ); - nsurl_unref(url); - } + error = browser_window_create( + BW_CREATE_HISTORY | BW_CREATE_CLONE, + ctx->ccdata.link, + browser_window_get_url(gw->browser->bw), + gw->browser->bw, + NULL); if (error != NSERROR_OK) { warn_user(messages_get_errorcode(error), 0); } |