summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2011-09-25 18:44:10 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2011-09-25 18:44:10 +0000
commit0b6b01f08f13f22bdd53e51a525b118131626551 (patch)
tree5f4c25bda5a15729493611a6c06520e2be9c2d0d
parent5d7c1caffebc5ed44c08774f3d4ab5a5426d4ce9 (diff)
downloadnetsurf-0b6b01f08f13f22bdd53e51a525b118131626551.tar.gz
netsurf-0b6b01f08f13f22bdd53e51a525b118131626551.tar.bz2
Add context menu items for frames
svn path=/trunk/netsurf/; revision=12877
-rw-r--r--!NetSurf/Resources/de/Messages5
-rw-r--r--!NetSurf/Resources/en/Messages5
-rw-r--r--!NetSurf/Resources/fr/Messages5
-rw-r--r--!NetSurf/Resources/it/Messages5
-rw-r--r--!NetSurf/Resources/nl/Messages5
-rwxr-xr-xamiga/context_menu.c105
6 files changed, 126 insertions, 4 deletions
diff --git a/!NetSurf/Resources/de/Messages b/!NetSurf/Resources/de/Messages
index f471bb8c6..027e59e47 100644
--- a/!NetSurf/Resources/de/Messages
+++ b/!NetSurf/Resources/de/Messages
@@ -300,6 +300,11 @@ CopyClip:Inhalt ins Clipboard
SaveAs:Speichern als...
SaveIFF:Speichern als IFF...
ObjShow:Zeige Objekt
+Frame:Frame
+FrameNewWin:Show in new window
+FrameNewTab:Show in new tab
+FrameOnly:Show only this frame
+
SelectFile:Datei auswählen...
ExternalApp:Open in external application
diff --git a/!NetSurf/Resources/en/Messages b/!NetSurf/Resources/en/Messages
index 22475bd86..8da169590 100644
--- a/!NetSurf/Resources/en/Messages
+++ b/!NetSurf/Resources/en/Messages
@@ -302,6 +302,11 @@ CopyClip:Copy to clipboard
SaveAs:Save as...
SaveIFF:Save as IFF...
ObjShow:Show object
+Frame:Frame
+FrameNewWin:Show in new window
+FrameNewTab:Show in new tab
+FrameOnly:Show only this frame
+
SelectFile:Select file...
ExternalApp:Open in external application
diff --git a/!NetSurf/Resources/fr/Messages b/!NetSurf/Resources/fr/Messages
index 6ee56689e..b6c42eb37 100644
--- a/!NetSurf/Resources/fr/Messages
+++ b/!NetSurf/Resources/fr/Messages
@@ -300,6 +300,11 @@ CopyClip:Copy to clipboard
SaveAs:Save as...
SaveIFF:Save as IFF...
ObjShow:Show object
+Frame:Frame
+FrameNewWin:Show in new window
+FrameNewTab:Show in new tab
+FrameOnly:Show only this frame
+
SelectFile:Select file...
ExternalApp:Open in external application
diff --git a/!NetSurf/Resources/it/Messages b/!NetSurf/Resources/it/Messages
index 5a64ae1fe..cbde5aaf6 100644
--- a/!NetSurf/Resources/it/Messages
+++ b/!NetSurf/Resources/it/Messages
@@ -304,6 +304,11 @@ CopyClip:Copia nella clipboard
SaveAs:Salva come...
SaveIFF:Salva come IFF...
ObjShow:Mostra oggetto
+Frame:Frame
+FrameNewWin:Show in new window
+FrameNewTab:Show in new tab
+FrameOnly:Show only this frame
+
SelectFile:Seleziona file...
ExternalApp:Apri con un'applicazione esterna
diff --git a/!NetSurf/Resources/nl/Messages b/!NetSurf/Resources/nl/Messages
index 89ca8b0f4..f8160d2e7 100644
--- a/!NetSurf/Resources/nl/Messages
+++ b/!NetSurf/Resources/nl/Messages
@@ -300,6 +300,11 @@ CopyClip:Copy to clipboard
SaveAs:Save as...
SaveIFF:Save as IFF...
ObjShow:Show object
+Frame:Frame
+FrameNewWin:Show in new window
+FrameNewTab:Show in new tab
+FrameOnly:Show only this frame
+
SelectFile:Select file...
ExternalApp:Open in external application
diff --git a/amiga/context_menu.c b/amiga/context_menu.c
index 91b85dcf0..f6acdf822 100755
--- a/amiga/context_menu.c
+++ b/amiga/context_menu.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2008-9 Chris Young <chris@unsatisfactorysoftware.co.uk>
+ * Copyright 2008 - 2011 Chris Young <chris@unsatisfactorysoftware.co.uk>
*
* This file is part of NetSurf, http://www.netsurf-browser.org/
*
@@ -66,16 +66,25 @@ enum {
CMID_CLIPOBJ,
CMID_SAVEOBJ,
CMID_SAVEIFFOBJ,
+ CMID_RELOADOBJ,
CMID_SELALL,
CMID_SELCLEAR,
CMID_SELCUT,
CMID_SELCOPY,
CMID_SELPASTE,
CMID_SELSEARCH,
+ CMID_FRAMEWIN,
+ CMID_FRAMETAB,
+ CMID_FRAMESHOW,
+ CMID_FRAMERELOAD,
+ CMID_FRAMECOPYURL,
+ CMID_FRAMESAVE,
CMID_PLUGINCMD,
CMSUB_OBJECT,
CMSUB_URL,
CMSUB_SEL,
+ CMSUB_PAGE,
+ CMSUB_FRAME,
CMID_HISTORY,
CMID_LAST
};
@@ -96,11 +105,16 @@ void ami_context_menu_init(void)
ctxmenulab[CMID_SELECTFILE] = ami_utf8_easy((char *)messages_get("SelectFile"));
ctxmenulab[CMID_COPYURL] = ami_utf8_easy((char *)messages_get("CopyURL"));
ctxmenulab[CMID_SHOWOBJ] = ami_utf8_easy((char *)messages_get("ObjShow"));
+ ctxmenulab[CMID_RELOADOBJ] = ami_utf8_easy((char *)messages_get("ObjReload"));
ctxmenulab[CMID_COPYOBJ] = ami_utf8_easy((char *)messages_get("CopyURL"));
ctxmenulab[CMID_CLIPOBJ] = ami_utf8_easy((char *)messages_get("CopyClip"));
ctxmenulab[CMID_SAVEOBJ] = ami_utf8_easy((char *)messages_get("SaveAs"));
ctxmenulab[CMID_SAVEIFFOBJ] = ami_utf8_easy((char *)messages_get("SaveIFF"));
+ ctxmenulab[CMID_FRAMEWIN] = ami_utf8_easy((char *)messages_get("FrameNewWin"));
+ ctxmenulab[CMID_FRAMETAB] = ami_utf8_easy((char *)messages_get("FrameNewTab"));
+ ctxmenulab[CMID_FRAMESHOW] = ami_utf8_easy((char *)messages_get("FrameOnly"));
+
ctxmenulab[CMID_SAVEURL] = ami_utf8_easy((char *)messages_get("LinkDload"));
ctxmenulab[CMID_URLOPENWIN] = ami_utf8_easy((char *)messages_get("LinkNewWin"));
ctxmenulab[CMID_URLOPENTAB] = ami_utf8_easy((char *)messages_get("LinkNewTab"));
@@ -114,6 +128,7 @@ void ami_context_menu_init(void)
ctxmenulab[CMID_PLUGINCMD] = ami_utf8_easy((char *)messages_get("ExternalApp"));
+ ctxmenulab[CMSUB_FRAME] = ami_utf8_easy((char *)messages_get("Frame"));
ctxmenulab[CMSUB_OBJECT] = ami_utf8_easy((char *)messages_get("Object"));
ctxmenulab[CMSUB_URL] = ami_utf8_easy((char *)messages_get("Link"));
ctxmenulab[CMSUB_SEL] = ami_utf8_easy((char *)messages_get("Selection"));
@@ -171,7 +186,7 @@ void ami_context_menu_show(struct gui_window_2 *gwin,int x,int y)
int box_x=0;
int box_y=0;
bool menuhascontent = false;
- bool no_url = true, no_obj = true, no_sel = true;
+ bool no_url = true, no_obj = true, no_sel = true, no_frame = true;
ULONG ret = 0;
struct contextual_content ccdata;
@@ -238,6 +253,59 @@ void ami_context_menu_show(struct gui_window_2 *gwin,int x,int y)
{
browser_window_get_contextual_content(gwin->bw, x, y, &ccdata);
+ if(no_frame && (ccdata.main != gwin->bw->current_content))
+ {
+ IDoMethod(ctxmenuobj,PM_INSERT,
+ NewObject(POPUPMENU_GetItemClass(), NULL,
+ PMIA_Title, (ULONG)ctxmenulab[CMSUB_FRAME],
+ PMSIMPLESUB,
+ PMA_AddItem, NewObject(POPUPMENU_GetItemClass(), NULL,
+ PMIA_Title, (ULONG)ctxmenulab[CMID_FRAMEWIN],
+ PMIA_ID, CMID_FRAMEWIN,
+ PMIA_UserData, content_get_url(ccdata.main),
+ TAG_DONE),
+ PMA_AddItem, NewObject(POPUPMENU_GetItemClass(), NULL,
+ PMIA_Title, (ULONG)ctxmenulab[CMID_FRAMETAB],
+ PMIA_ID, CMID_FRAMETAB,
+ PMIA_UserData, content_get_url(ccdata.main),
+ TAG_DONE),
+ PMA_AddItem, NewObject(POPUPMENU_GetItemClass(), NULL,
+ PMIA_Title, (ULONG)ctxmenulab[CMID_FRAMESHOW],
+ PMIA_ID, CMID_FRAMESHOW,
+ PMIA_UserData, ccdata.main,
+ TAG_DONE),
+ PMA_AddItem,NewObject(POPUPMENU_GetItemClass(), NULL,
+ PMIA_Title, ~0,
+ TAG_DONE),
+ PMA_AddItem, NewObject(POPUPMENU_GetItemClass(), NULL,
+ PMIA_Title, (ULONG)ctxmenulab[CMID_RELOADOBJ],
+ PMIA_ID, CMID_FRAMERELOAD,
+ PMIA_UserData, ccdata.main,
+ TAG_DONE),
+ PMA_AddItem,NewObject(POPUPMENU_GetItemClass(), NULL,
+ PMIA_Title, ~0,
+ TAG_DONE),
+ PMA_AddItem, NewObject(POPUPMENU_GetItemClass(), NULL,
+ PMIA_Title, (ULONG)ctxmenulab[CMID_COPYOBJ],
+ PMIA_ID, CMID_FRAMECOPYURL,
+ PMIA_UserData, content_get_url(ccdata.main),
+ TAG_DONE),
+ PMA_AddItem,NewObject(POPUPMENU_GetItemClass(), NULL,
+ PMIA_Title, ~0,
+ TAG_DONE),
+ PMA_AddItem, NewObject(POPUPMENU_GetItemClass(), NULL,
+ PMIA_Title, (ULONG)ctxmenulab[CMID_SAVEOBJ],
+ PMIA_ID, CMID_FRAMESAVE,
+ PMIA_UserData, content_get_url(ccdata.main),
+ TAG_DONE),
+ TAG_DONE),
+ TAG_DONE),
+ ~0);
+
+ no_frame = false;
+ menuhascontent = true;
+ }
+
if(no_url && ccdata.link_url)
{
IDoMethod(ctxmenuobj,PM_INSERT,
@@ -254,11 +322,17 @@ void ami_context_menu_show(struct gui_window_2 *gwin,int x,int y)
PMIA_ID, CMID_URLOPENTAB,
PMIA_UserData, ccdata.link_url,
TAG_DONE),
+ PMA_AddItem,NewObject(POPUPMENU_GetItemClass(), NULL,
+ PMIA_Title, ~0,
+ TAG_DONE),
PMA_AddItem, NewObject(POPUPMENU_GetItemClass(), NULL,
PMIA_Title, (ULONG)ctxmenulab[CMID_COPYURL],
PMIA_ID, CMID_COPYURL,
PMIA_UserData, ccdata.link_url,
TAG_DONE),
+ PMA_AddItem,NewObject(POPUPMENU_GetItemClass(), NULL,
+ PMIA_Title, ~0,
+ TAG_DONE),
PMA_AddItem, NewObject(POPUPMENU_GetItemClass(), NULL,
PMIA_Title, (ULONG)ctxmenulab[CMID_SAVEURL],
PMIA_ID, CMID_SAVEURL,
@@ -282,7 +356,15 @@ void ami_context_menu_show(struct gui_window_2 *gwin,int x,int y)
PMA_AddItem, NewObject(POPUPMENU_GetItemClass(), NULL,
PMIA_Title, (ULONG)ctxmenulab[CMID_SHOWOBJ],
PMIA_ID, CMID_SHOWOBJ,
- PMIA_UserData, content_get_url(ccdata.object),
+ PMIA_UserData, ccdata.object,
+ TAG_DONE),
+ PMA_AddItem, NewObject(POPUPMENU_GetItemClass(), NULL,
+ PMIA_Title, (ULONG)ctxmenulab[CMID_RELOADOBJ],
+ PMIA_ID, CMID_RELOADOBJ,
+ PMIA_UserData, ccdata.object,
+ TAG_DONE),
+ PMA_AddItem,NewObject(POPUPMENU_GetItemClass(), NULL,
+ PMIA_Title, ~0,
TAG_DONE),
PMA_AddItem,NewObject(POPUPMENU_GetItemClass(), NULL,
PMIA_Title, (ULONG)ctxmenulab[CMID_COPYOBJ],
@@ -294,6 +376,9 @@ void ami_context_menu_show(struct gui_window_2 *gwin,int x,int y)
PMIA_ID, CMID_CLIPOBJ,
PMIA_UserData, ccdata.object,
TAG_DONE),
+ PMA_AddItem,NewObject(POPUPMENU_GetItemClass(), NULL,
+ PMIA_Title, ~0,
+ TAG_DONE),
PMA_AddItem, NewObject(POPUPMENU_GetItemClass(), NULL,
PMIA_Title, (ULONG)ctxmenulab[CMID_SAVEOBJ],
PMIA_ID, CMID_SAVEOBJ,
@@ -465,31 +550,43 @@ static uint32 ami_context_menu_hook(struct Hook *hook,Object *item,APTR reserved
}
break;
+ case CMID_FRAMECOPYURL:
case CMID_COPYURL:
case CMID_COPYOBJ:
ami_easy_clipboard((char *)userdata);
break;
+ case CMID_FRAMEWIN:
case CMID_URLOPENWIN:
bw = browser_window_create(userdata, gwin->bw,
content_get_url(gwin->bw->current_content), true, false);
break;
+ case CMID_FRAMETAB:
case CMID_URLOPENTAB:
bw = browser_window_create(userdata, gwin->bw,
content_get_url(gwin->bw->current_content), true, true);
break;
+ case CMID_FRAMESAVE:
case CMID_SAVEURL:
browser_window_download(gwin->bw, userdata,
content_get_url(gwin->bw->current_content));
break;
+ case CMID_FRAMESHOW:
case CMID_SHOWOBJ:
- browser_window_go(gwin->bw, userdata,
+ browser_window_go(gwin->bw, content_get_url(userdata),
content_get_url(gwin->bw->current_content), true);
break;
+ case CMID_FRAMERELOAD:
+ case CMID_RELOADOBJ:
+ object = (struct hlcache_handle *)userdata;
+ content_invalidate_reuse_data(object);
+ browser_window_reload(gwin->bw, false);
+ break;
+
case CMID_CLIPOBJ:
object = (struct hlcache_handle *)userdata;
if((bm = content_get_bitmap(object)))