summaryrefslogtreecommitdiff
path: root/amiga/context_menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'amiga/context_menu.c')
-rwxr-xr-xamiga/context_menu.c39
1 files changed, 37 insertions, 2 deletions
diff --git a/amiga/context_menu.c b/amiga/context_menu.c
index 704bd8c0c..6a53248ec 100755
--- a/amiga/context_menu.c
+++ b/amiga/context_menu.c
@@ -32,6 +32,7 @@
#include "utils/utils.h"
#include <proto/asl.h>
#include "desktop/textinput.h"
+#include "desktop/selection.h"
#include "amiga/bitmap.h"
#include "amiga/iff_dr2d.h"
@@ -53,8 +54,11 @@ void ami_context_menu_init(void)
ctxmenulab[CMID_URLOPENWIN] = ami_utf8_easy((char *)messages_get("LinkNewWin"));
ctxmenulab[CMID_URLOPENTAB] = ami_utf8_easy((char *)messages_get("LinkNewTab"));
+ ctxmenulab[CMID_SELCUT] = ami_utf8_easy((char *)messages_get("CutNS"));
ctxmenulab[CMID_SELCOPY] = ami_utf8_easy((char *)messages_get("CopyNS"));
+ ctxmenulab[CMID_SELPASTE] = ami_utf8_easy((char *)messages_get("PasteNS"));
ctxmenulab[CMID_SELALL] = ami_utf8_easy((char *)messages_get("SelectAllNS"));
+ ctxmenulab[CMID_SELCLEAR] = ami_utf8_easy((char *)messages_get("ClearNS"));
ctxmenulab[CMSUB_OBJECT] = ami_utf8_easy((char *)messages_get("Object"));
ctxmenulab[CMSUB_URL] = ami_utf8_easy((char *)messages_get("Link"));
@@ -170,20 +174,38 @@ void ami_context_menu_show(struct gui_window_2 *gwin,int x,int y)
if(curbox->text)
{
+ BOOL disabled_readonly = selection_read_only(gwin->bw->sel);
+ BOOL disabled_noselection = !selection_defined(gwin->bw->sel);
+
IDoMethod(gwin->objects[OID_MENU],PM_INSERT,
NewObject(POPUPMENU_GetItemClass(), NULL,
PMIA_Title, (ULONG)ctxmenulab[CMSUB_SEL],
- PMSIMPLESUB,
+ PMIA_SubMenu, NewObject(POPUPMENU_GetClass(), NULL,
+ PMA_AddItem,NewObject(POPUPMENU_GetItemClass(), NULL,
+ PMIA_Title, (ULONG)ctxmenulab[CMID_SELCUT],
+ PMIA_ID,CMID_SELCUT,
+ PMIA_Disabled, disabled_noselection && disabled_readonly,
+ TAG_DONE),
PMA_AddItem,NewObject(POPUPMENU_GetItemClass(), NULL,
PMIA_Title, (ULONG)ctxmenulab[CMID_SELCOPY],
PMIA_ID,CMID_SELCOPY,
- //PMIA_UserData,curbox->href,
+ PMIA_Disabled, disabled_noselection,
+ TAG_DONE),
+ PMA_AddItem,NewObject(POPUPMENU_GetItemClass(), NULL,
+ PMIA_Title, (ULONG)ctxmenulab[CMID_SELPASTE],
+ PMIA_ID,CMID_SELPASTE,
+ PMIA_Disabled, (gwin->bw->window->c_h == 0),
TAG_DONE),
PMA_AddItem,NewObject(POPUPMENU_GetItemClass(), NULL,
PMIA_Title, (ULONG)ctxmenulab[CMID_SELALL],
PMIA_ID,CMID_SELALL,
//PMIA_UserData,curbox->href,
TAG_DONE),
+ PMA_AddItem,NewObject(POPUPMENU_GetItemClass(), NULL,
+ PMIA_Title, (ULONG)ctxmenulab[CMID_SELCLEAR],
+ PMIA_ID,CMID_SELALL,
+ PMIA_Disabled, disabled_noselection,
+ TAG_DONE),
TAG_DONE),
TAG_DONE),
~0);
@@ -362,14 +384,27 @@ uint32 ami_context_menu_hook(struct Hook *hook,Object *item,APTR reserved)
}
break;
+ case CMID_SELCUT:
+ browser_window_key_press(gwin->bw, KEY_COPY_SELECTION);
+ browser_window_key_press(gwin->bw, KEY_CUT_SELECTION);
+ break;
+
case CMID_SELCOPY:
browser_window_key_press(gwin->bw, KEY_COPY_SELECTION);
browser_window_key_press(gwin->bw, KEY_CLEAR_SELECTION);
break;
+ case CMID_SELPASTE:
+ browser_window_key_press(gwin->bw, KEY_PASTE);
+ break;
+
case CMID_SELALL:
browser_window_key_press(gwin->bw, KEY_SELECT_ALL);
break;
+
+ case CMID_SELCLEAR:
+ browser_window_key_press(gwin->bw, KEY_CLEAR_SELECTION);
+ break;
}
}