summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--!NetSurf/Resources/de/Messages9
-rw-r--r--!NetSurf/Resources/en/Messages9
-rw-r--r--!NetSurf/Resources/fr/Messages9
-rwxr-xr-x!NetSurf/Resources/it/Messages9
-rw-r--r--!NetSurf/Resources/nl/Messages9
-rw-r--r--Makefile.sources2
-rwxr-xr-xamiga/context_menu.c145
-rwxr-xr-xamiga/context_menu.h10
-rwxr-xr-xamiga/dist/NetSurf.guide3
-rwxr-xr-xamiga/dist/netsurf.readme2
-rwxr-xr-xamiga/gui.c170
-rwxr-xr-xamiga/iff_cset.h1
-rw-r--r--amiga/options.h5
-rwxr-xr-xamiga/plotters.c2
14 files changed, 187 insertions, 198 deletions
diff --git a/!NetSurf/Resources/de/Messages b/!NetSurf/Resources/de/Messages
index 87d240f24..66a85e967 100644
--- a/!NetSurf/Resources/de/Messages
+++ b/!NetSurf/Resources/de/Messages
@@ -253,6 +253,15 @@ Settings:Settings
SnapshotWindow:Snapshot window
SettingsSave:Save settings
+# Context menu
+#
+Link:Link
+LinkNewTab:Open in new tab
+LinkNewWin:Open in new window
+CopyURL:Copy URL to clipboard
+ObjShow:Show object
+SelectFile:Select file...
+
# Treeview interface tokens
# =========================
#
diff --git a/!NetSurf/Resources/en/Messages b/!NetSurf/Resources/en/Messages
index 2db73456f..9b6ef9db3 100644
--- a/!NetSurf/Resources/en/Messages
+++ b/!NetSurf/Resources/en/Messages
@@ -253,6 +253,15 @@ Settings:Settings
SnapshotWindow:Snapshot window
SettingsSave:Save settings
+# Context menu
+#
+Link:Link
+LinkNewTab:Open in new tab
+LinkNewWin:Open in new window
+CopyURL:Copy URL to clipboard
+ObjShow:Show object
+SelectFile:Select file...
+
# Treeview interface tokens
# =========================
#
diff --git a/!NetSurf/Resources/fr/Messages b/!NetSurf/Resources/fr/Messages
index c9e59b58a..ec7627d1b 100644
--- a/!NetSurf/Resources/fr/Messages
+++ b/!NetSurf/Resources/fr/Messages
@@ -253,6 +253,15 @@ Settings:Settings
SnapshotWindow:Snapshot window
SettingsSave:Save settings
+# Context menu
+#
+Link:Link
+LinkNewTab:Open in new tab
+LinkNewWin:Open in new window
+CopyURL:Copy URL to clipboard
+ObjShow:Show object
+SelectFile:Select file...
+
# Treeview interface tokens
# =========================
#
diff --git a/!NetSurf/Resources/it/Messages b/!NetSurf/Resources/it/Messages
index 5a6662108..3b9f25996 100755
--- a/!NetSurf/Resources/it/Messages
+++ b/!NetSurf/Resources/it/Messages
@@ -254,6 +254,15 @@ Settings:Impostazioni
SnapshotWindow:Fissa finestra
SettingsSave:Salva impostazioni
+# Context menu
+#
+Link:Link
+LinkNewTab:Open in new tab
+LinkNewWin:Open in new window
+CopyURL:Copy URL to clipboard
+ObjShow:Show object
+SelectFile:Select file...
+
# Treeview interface tokens
# =========================
#
diff --git a/!NetSurf/Resources/nl/Messages b/!NetSurf/Resources/nl/Messages
index 3fabc3066..9ac20d134 100644
--- a/!NetSurf/Resources/nl/Messages
+++ b/!NetSurf/Resources/nl/Messages
@@ -253,6 +253,15 @@ Settings:Settings
SnapshotWindow:Snapshot window
SettingsSave:Save settings
+# Context menu
+#
+Link:Link
+LinkNewTab:Open in new tab
+LinkNewWin:Open in new window
+CopyURL:Copy URL to clipboard
+ObjShow:Show object
+SelectFile:Select file...
+
# Treeview interface tokens
# =========================
#
diff --git a/Makefile.sources b/Makefile.sources
index a84c0b072..97dc1f9ba 100644
--- a/Makefile.sources
+++ b/Makefile.sources
@@ -90,7 +90,7 @@ S_DEBUG := $(addprefix debug/,$(S_DEBUG))
S_AMIGA := compat.c gui.c tree.c history.c hotlist.c schedule.c \
thumbnail.c misc.c bitmap.c font.c filetype.c utf8.c login.c \
plotters.c object.c menu.c save_pdf.c arexx.c version.c \
- cookies.c context_menu.c
+ cookies.c context_menu.c clipboard.c
S_AMIGA := $(addprefix amiga/,$(S_AMIGA))
# S_FRAMEBUFFER are sources purely for the framebuffer build
diff --git a/amiga/context_menu.c b/amiga/context_menu.c
index 55ea2ed29..747208aaf 100755
--- a/amiga/context_menu.c
+++ b/amiga/context_menu.c
@@ -22,10 +22,51 @@
#include <proto/popupmenu.h>
#include <proto/intuition.h>
#include "amiga/utf8.h"
+#include "utils/utf8.h"
#include "utils/messages.h"
+#include "amiga/options.h"
+#include "amiga/clipboard.h"
+#include <proto/asl.h>
+#include <proto/dos.h>
+#include <string.h>
+#include "utils/utils.h"
uint32 ami_context_menu_hook(struct Hook *hook,Object *item,APTR reserved);
+char *ctxmenulab[CMID_LAST];
+
+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_COPYOBJ] = ami_utf8_easy((char *)messages_get("CopyURL"));
+
+ if(!option_force_tabs)
+ {
+ ctxmenulab[CMID_URLOPENWIN] = ami_utf8_easy((char *)messages_get("LinkNewWin"));
+ ctxmenulab[CMID_URLOPENTAB] = ami_utf8_easy((char *)messages_get("LinkNewTab"));
+ }
+ else
+ {
+ ctxmenulab[CMID_URLOPENWIN] = ami_utf8_easy((char *)messages_get("LinkNewTab"));
+ ctxmenulab[CMID_URLOPENTAB] = ami_utf8_easy((char *)messages_get("LinkNewWin"));
+ }
+
+ ctxmenulab[CMSUB_OBJECT] = ami_utf8_easy((char *)messages_get("Object"));
+ ctxmenulab[CMSUB_URL] = ami_utf8_easy((char *)messages_get("Link"));
+}
+
+void ami_context_menu_free(void)
+{
+ int i;
+
+ for(i=0;i<CMID_LAST;i++)
+ {
+ ami_utf8_free(ctxmenulab[i]);
+ }
+}
+
void ami_context_menu_show(struct gui_window_2 *gwin,int x,int y)
{
struct box *curbox = gwin->bw->current_content->data.html.layout;
@@ -52,18 +93,25 @@ void ami_context_menu_show(struct gui_window_2 *gwin,int x,int y)
{
IDoMethod(gwin->objects[OID_MENU],PM_INSERT,
NewObject(POPUPMENU_GetItemClass(), NULL,
- PMIA_Title, (ULONG)ami_utf8_easy((char *)messages_get("CopyURL")),
- PMIA_ID,CMID_COPYURL,
- PMIA_UserData,curbox->href,
- TAG_DONE),
- ~0);
-
- IDoMethod(gwin->objects[OID_MENU],PM_INSERT,
- NewObject(POPUPMENU_GetItemClass(), NULL,
- PMIA_Title, (ULONG)ami_utf8_easy((char *)messages_get("SaveURL")),
- PMIA_ID,CMID_SAVEURL,
- PMIA_UserData,curbox->href,
+ PMIA_Title, (ULONG)ctxmenulab[CMSUB_URL],
+ PMSIMPLESUB,
+ PMA_AddItem,NewObject(POPUPMENU_GetItemClass(), NULL,
+ PMIA_Title, (ULONG)ctxmenulab[CMID_URLOPENWIN],
+ PMIA_ID,CMID_URLOPENWIN,
+ PMIA_UserData,curbox->href,
+ TAG_DONE),
+ PMA_AddItem,NewObject(POPUPMENU_GetItemClass(), NULL,
+ PMIA_Title, (ULONG)ctxmenulab[CMID_URLOPENTAB],
+ PMIA_ID,CMID_URLOPENTAB,
+ PMIA_UserData,curbox->href,
+ TAG_DONE),
+ PMA_AddItem,NewObject(POPUPMENU_GetItemClass(), NULL,
+ PMIA_Title, (ULONG)ctxmenulab[CMID_COPYURL],
+ PMIA_ID,CMID_COPYURL,
+ PMIA_UserData,curbox->href,
+ TAG_DONE),
TAG_DONE),
+ TAG_DONE),
~0);
}
@@ -71,20 +119,21 @@ void ami_context_menu_show(struct gui_window_2 *gwin,int x,int y)
{
IDoMethod(gwin->objects[OID_MENU],PM_INSERT,
NewObject(POPUPMENU_GetItemClass(), NULL,
- PMIA_Title, (ULONG)ami_utf8_easy((char *)messages_get("ObjShow")),
- PMIA_ID,CMID_SHOWOBJ,
- PMIA_UserData,curbox->object->url,
- TAG_DONE),
- ~0);
-
- IDoMethod(gwin->objects[OID_MENU],PM_INSERT,
- NewObject(POPUPMENU_GetItemClass(), NULL,
- PMIA_Title, (ULONG)ami_utf8_easy((char *)messages_get("ObjSave")),
- PMIA_ID,CMID_SAVEOBJ,
- PMIA_UserData,curbox->object->url,
+ PMIA_Title, (ULONG)ctxmenulab[CMSUB_OBJECT],
+ PMSIMPLESUB,
+ PMA_AddItem,NewObject(POPUPMENU_GetItemClass(), NULL,
+ PMIA_Title, (ULONG)ctxmenulab[CMID_SHOWOBJ],
+ PMIA_ID,CMID_SHOWOBJ,
+ PMIA_UserData,curbox->object->url,
+ TAG_DONE),
+ PMA_AddItem,NewObject(POPUPMENU_GetItemClass(), NULL,
+ PMIA_Title, (ULONG)ctxmenulab[CMID_COPYOBJ],
+ PMIA_ID,CMID_COPYOBJ,
+ PMIA_UserData,curbox->object->url,
+ TAG_DONE),
TAG_DONE),
+ TAG_DONE),
~0);
-
}
if (curbox->gadget)
@@ -94,9 +143,9 @@ void ami_context_menu_show(struct gui_window_2 *gwin,int x,int y)
case GADGET_FILE:
IDoMethod(gwin->objects[OID_MENU],PM_INSERT,
NewObject(POPUPMENU_GetItemClass(), NULL,
- PMIA_Title, (ULONG)ami_utf8_easy((char *)messages_get("SelectFile")),
+ PMIA_Title, (ULONG)ctxmenulab[CMID_SELECTFILE],
PMIA_ID,CMID_SELECTFILE,
- PMIA_UserData,curbox->gadget,
+ PMIA_UserData,curbox,
TAG_DONE),
~0);
break;
@@ -113,6 +162,7 @@ uint32 ami_context_menu_hook(struct Hook *hook,Object *item,APTR reserved)
int32 itemid = 0;
struct gui_window_2 *gwin = hook->h_Data;
APTR userdata = NULL;
+ struct browser_window *bw;
if(GetAttrs(item,PMIA_ID,&itemid,
PMIA_UserData,&userdata,
@@ -121,20 +171,51 @@ uint32 ami_context_menu_hook(struct Hook *hook,Object *item,APTR reserved)
switch(itemid)
{
case CMID_SELECTFILE:
- printf("select file - gadget %lx\n",userdata);
+ if(AslRequestTags(filereq,
+ ASLFR_TitleText,messages_get("NetSurf"),
+ ASLFR_Screen,scrn,
+ ASLFR_DoSaveMode,FALSE,
+ TAG_DONE))
+ {
+ struct box *box = userdata;
+ char *utf8_fn;
+ char fname[1024];
+ int x,y;
+
+ strlcpy(&fname,filereq->fr_Drawer,1024);
+ AddPart(fname,filereq->fr_File,1024);
+
+ if(utf8_from_local_encoding(fname,0,&utf8_fn) != UTF8_CONVERT_OK)
+ {
+ warn_user("NoMemory","");
+ break;
+ }
+
+ free(box->gadget->value);
+ box->gadget->value = utf8_fn;
+
+ box_coords(box, (int *)&x, (int *)&y);
+ gui_window_redraw(gwin->bw->window,x,y,
+ x + box->width,
+ y + box->height);
+ }
break;
case CMID_COPYURL:
- printf("add to clipboard: %s\n",userdata);
+ case CMID_COPYOBJ:
+ ami_easy_clipboard((char *)userdata);
break;
- case CMID_SHOWOBJ:
- browser_window_go(gwin->bw,userdata,NULL,true);
+ case CMID_URLOPENWIN:
+ bw = browser_window_create(userdata,gwin->bw, gwin->bw->current_content->url, true, false);
+ break;
+
+ case CMID_URLOPENTAB:
+ bw = browser_window_create(userdata,gwin->bw, gwin->bw->current_content->url, true, true);
break;
- case CMID_SAVEOBJ:
- case CMID_SAVEURL:
- printf("download: %s\n",userdata);
+ case CMID_SHOWOBJ:
+ browser_window_go(gwin->bw,userdata,gwin->bw->current_content->url,true);
break;
}
}
diff --git a/amiga/context_menu.h b/amiga/context_menu.h
index e244c7b50..195896b92 100755
--- a/amiga/context_menu.h
+++ b/amiga/context_menu.h
@@ -23,10 +23,16 @@
enum {
CMID_SELECTFILE,
CMID_COPYURL,
- CMID_SAVEURL,
+ CMID_URLOPENWIN,
+ CMID_URLOPENTAB,
CMID_SHOWOBJ,
- CMID_SAVEOBJ
+ CMID_COPYOBJ,
+ CMSUB_OBJECT,
+ CMSUB_URL,
+ CMID_LAST
};
+void ami_context_menu_init(void);
+void ami_context_menu_free(void);
void ami_context_menu_show(struct gui_window_2 *gwin,int x,int y);
#endif
diff --git a/amiga/dist/NetSurf.guide b/amiga/dist/NetSurf.guide
index 211fdae52..bf80975df 100755
--- a/amiga/dist/NetSurf.guide
+++ b/amiga/dist/NetSurf.guide
@@ -34,7 +34,8 @@ The options file is stored in Resources/Options by default. The following optio
@{b}theme@{ub} Path to theme (default is Resources/Themes/Default - an alternative included theme is Resources/Themes/AISS)
@{b}no_iframes@{ub} Disable IFrames
@{b}clipboard_write_utf8@{ub} Write UTF-8 strings to the clipboard along with a charset identifier (when this option is 0, NetSurf will convert copied strings to local charset)
-@{b}throbber_frames@{ub} Not used (now in theme description file)
+@{b}context_menu@{ub} Enable context menus
+@{b}sticky_context_menu@{ub} When disabled, context menu requires mouse button to be held down to keep it visible
@{b}truecolour_mouse_pointers@{ub} Use 32-bit mouse pointers, when disabled NetSurf will use old-style 4 colour images (see Resources/Pointers)
@{b}os_mouse_pointers@{ub} Don't override default and busy mouse pointers
@{b}always_open_tabs@{ub} Force opening tabs instead of windows (actually swaps the functions so ctrl-click now opens windows and middle mouse button opens tabs)
diff --git a/amiga/dist/netsurf.readme b/amiga/dist/netsurf.readme
index 572881861..a9b0de254 100755
--- a/amiga/dist/netsurf.readme
+++ b/amiga/dist/netsurf.readme
@@ -4,7 +4,7 @@ Author: NetSurf contributors (OS4 port by Chris Young)
Type: comm/www
Version: 2.0 development (SVN 5591)
Architecture: ppc-amigaos >= 4.0.0
-Requires: AISS
+Requires: AISS, dev/c/pthreads.lha
This is a preview release of the OS4 native port of NetSurf.
It is beta software, which means it is unstable and missing
diff --git a/amiga/gui.c b/amiga/gui.c
index 6295dc154..17382d9ef 100755
--- a/amiga/gui.c
+++ b/amiga/gui.c
@@ -39,8 +39,6 @@
#include <libraries/gadtools.h>
#include <proto/layers.h>
#include <proto/asl.h>
-#include <proto/iffparse.h>
-#include <datatypes/textclass.h>
#include <datatypes/pictureclass.h>
#include "desktop/selection.h"
#include "utils/utf8.h"
@@ -53,12 +51,10 @@
#include <intuition/pointerclass.h>
#include <math.h>
#include <workbench/workbench.h>
-#include "amiga/iff_cset.h"
#include <proto/datatypes.h>
#include <proto/icon.h>
#include <workbench/icon.h>
#include "amiga/tree.h"
-#include <parserutils/charset/mibenum.h>
#include "utils/utils.h"
#include "amiga/login.h"
#include "utils/url.h"
@@ -68,6 +64,7 @@
#include "amiga/history.h"
#include "amiga/context_menu.h"
#include "amiga/cookies.h"
+#include "amiga/clipboard.h"
#ifdef WITH_HUBBUB
#include <hubbub/hubbub.h>
@@ -112,7 +109,6 @@ ULONG throbber_width,throbber_height,throbber_frames;
BOOL rmbtrapped;
static struct RastPort dummyrp;
-struct IFFHandle *iffh = NULL;
#define AMI_LASTPOINTER GUI_POINTER_PROGRESS+1
Object *mouseptrobj[AMI_LASTPOINTER+1];
@@ -193,13 +189,7 @@ void gui_init(int argc, char** argv)
ami_arexx_init();
- if(iffh = AllocIFF())
- {
- if(iffh->iff_Stream = OpenClipboard(0))
- {
- InitIFFasClip(iffh);
- }
- }
+ ami_clipboard_init();
win_destroyed = false;
@@ -323,6 +313,7 @@ void gui_init(int argc, char** argv)
/* end Amiupdate */
ami_init_menulabs();
+ if(option_context_menu) ami_context_menu_init();
schedule_list = NewObjList();
window_list = NewObjList();
@@ -571,7 +562,11 @@ void ami_handle_msg(void)
break;
case MENUDOWN:
- ami_context_menu_show(gwin,x,y);
+ if(!option_sticky_context_menu) ami_context_menu_show(gwin,x,y);
+ break;
+
+ case MENUUP:
+ if(option_sticky_context_menu) ami_context_menu_show(gwin,x,y);
break;
}
}
@@ -1053,6 +1048,8 @@ void gui_quit(void)
if(!option_use_wb) CloseScreen(scrn);
p96FreeBitMap(dummyrp.BitMap);
FreeVec(nsscreentitle);
+
+ if(option_context_menu) ami_context_menu_free();
ami_free_menulabs();
for(i=0;i<=AMI_LASTPOINTER;i++)
@@ -1065,8 +1062,7 @@ void gui_quit(void)
}
}
- if(iffh->iff_Stream) CloseClipboard((struct ClipboardHandle *)iffh->iff_Stream);
- if(iffh) FreeIFF(iffh);
+ ami_clipboard_free();
ami_arexx_cleanup();
FreeSysObject(ASOT_PORT,appport);
@@ -2425,150 +2421,6 @@ void gui_drag_save_object(gui_save_type type, struct content *c,
{
}
-void gui_drag_save_selection(struct selection *s, struct gui_window *g)
-{
-}
-
-void gui_start_selection(struct gui_window *g)
-{
-}
-
-void gui_paste_from_clipboard(struct gui_window *g, int x, int y)
-{
- /* This and the other clipboard code is heavily based on the RKRM examples */
- struct ContextNode *cn;
- ULONG rlen=0,error;
- struct CSet cset;
- char *clip;
- STRPTR readbuf = AllocVec(1024,MEMF_CLEAR);
-
- cset.CodeSet = 0;
-
- if(OpenIFF(iffh,IFFF_READ)) return;
- if(StopChunk(iffh,ID_FTXT,ID_CHRS)) return;
- if(StopChunk(iffh,ID_FTXT,ID_CSET)) return;
-
- while(1)
- {
- error = ParseIFF(iffh,IFFPARSE_SCAN);
- if(error == IFFERR_EOC) continue;
- else if(error) break;
-
- cn = CurrentChunk(iffh);
-
- if((cn)&&(cn->cn_Type == ID_FTXT)&&(cn->cn_ID == ID_CSET))
- {
- rlen = ReadChunkBytes(iffh,&cset,24);
- }
-
- if((cn)&&(cn->cn_Type == ID_FTXT)&&(cn->cn_ID == ID_CHRS))
- {
- while((rlen = ReadChunkBytes(iffh,readbuf,1024)) > 0)
- {
- if(cset.CodeSet == 0)
- {
- utf8_from_local_encoding(readbuf,rlen,&clip);
- }
- else
- {
- utf8_from_enc(readbuf,parserutils_charset_mibenum_to_name(cset.CodeSet),rlen,&clip);
- }
-
- browser_window_paste_text(g->shared->bw,clip,rlen,true);
- }
- if(rlen < 0) error = rlen;
- }
- }
- CloseIFF(iffh);
-}
-
-bool gui_empty_clipboard(void)
-{
-}
-
-bool gui_add_to_clipboard(const char *text, size_t length, bool space)
-{
- char *buffer;
- if(option_utf8_clipboard)
- {
- WriteChunkBytes(iffh,text,length);
- }
- else
- {
- utf8_to_local_encoding(text,length,&buffer);
- if(buffer) WriteChunkBytes(iffh,buffer,strlen(buffer));
- ami_utf8_free(buffer);
- }
- return true;
-}
-
-bool gui_commit_clipboard(void)
-{
- if(iffh) CloseIFF(iffh);
-
- return true;
-}
-
-bool ami_clipboard_copy(const char *text, size_t length, struct box *box,
- void *handle, const char *whitespace_text,size_t whitespace_length)
-{
- if(!(PushChunk(iffh,0,ID_CHRS,IFFSIZE_UNKNOWN)))
- {
- if (whitespace_text)
- {
- if(!gui_add_to_clipboard(whitespace_text,whitespace_length, false)) return false;
- }
-
- if(text)
- {
- if (!gui_add_to_clipboard(text, length, box->space)) return false;
- }
-
- PopChunk(iffh);
- }
- else
- {
- PopChunk(iffh);
- return false;
- }
-
- return true;
-}
-
-bool gui_copy_to_clipboard(struct selection *s)
-{
- struct CSet cset = {0};
-
- if(!(OpenIFF(iffh,IFFF_WRITE)))
- {
- if(!(PushChunk(iffh,ID_FTXT,ID_FORM,IFFSIZE_UNKNOWN)))
- {
- if(option_utf8_clipboard)
- {
- if(!(PushChunk(iffh,0,ID_CSET,24)))
- {
- cset.CodeSet = 106; // UTF-8
- WriteChunkBytes(iffh,&cset,24);
- PopChunk(iffh);
- }
- }
-
- if (s->defined && selection_traverse(s, ami_clipboard_copy, NULL))
- {
- gui_commit_clipboard();
- return true;
- }
- }
- else
- {
- PopChunk(iffh);
- }
- CloseIFF(iffh);
- }
-
- return false;
-}
-
void gui_create_form_select_menu(struct browser_window *bw,
struct form_control *control)
{
diff --git a/amiga/iff_cset.h b/amiga/iff_cset.h
index 9885baf35..2b8af8f6e 100755
--- a/amiga/iff_cset.h
+++ b/amiga/iff_cset.h
@@ -18,6 +18,7 @@
#ifndef AMIGA_IFF_CSET_H
#define AMIGA_IFF_CSET_H
+#include <exec/types.h>
/* This structure is for the IFF CSET chunk, registered by Martin Taillefer */
diff --git a/amiga/options.h b/amiga/options.h
index 56086be4c..74fd76ca7 100644
--- a/amiga/options.h
+++ b/amiga/options.h
@@ -29,6 +29,7 @@ extern char *option_theme;
extern bool option_no_iframes;
extern bool option_utf8_clipboard;
extern bool option_context_menu;
+extern bool option_sticky_context_menu;
extern bool option_truecolour_mouse_pointers;
extern bool option_use_os_pointers;
extern bool option_force_tabs;
@@ -45,7 +46,8 @@ int option_modeid = 0; \
char *option_theme = 0; \
bool option_no_iframes = false; \
bool option_utf8_clipboard = false; \
-bool option_context_menu = false; \
+bool option_context_menu = true; \
+bool option_sticky_context_menu = true; \
bool option_truecolour_mouse_pointers = true; \
bool option_use_os_pointers = false; \
bool option_force_tabs = false; \
@@ -63,6 +65,7 @@ char *option_recent_file = 0; \
{ "no_iframes", OPTION_BOOL, &option_no_iframes}, \
{ "clipboard_write_utf8", OPTION_BOOL, &option_utf8_clipboard}, \
{ "context_menu", OPTION_BOOL, &option_context_menu}, \
+{ "sticky_context_menu", OPTION_BOOL, &option_sticky_context_menu}, \
{ "truecolour_mouse_pointers", OPTION_BOOL, &option_truecolour_mouse_pointers}, \
{ "os_mouse_pointers", OPTION_BOOL, &option_use_os_pointers}, \
{ "always_open_tabs", OPTION_BOOL, &option_force_tabs}, \
diff --git a/amiga/plotters.c b/amiga/plotters.c
index 65b70135c..8c51dc95d 100755
--- a/amiga/plotters.c
+++ b/amiga/plotters.c
@@ -307,7 +307,7 @@ bool ami_bitmap_tile(int x, int y, int width, int height,
ri.RGBFormat = RGBFB_R8G8B8A8;
max_width = (repeat_x ? scrn->Width : width);
- max_height = (repeat_y ? scrn->Height: height);
+ max_height = (repeat_y ? scrn->Height : height);
for(xf=0;xf<max_width;xf+=bitmap->width)
{