summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Fryatt <stevef@netsurf-browser.org>2013-12-30 12:39:21 +0000
committerSteve Fryatt <stevef@netsurf-browser.org>2013-12-30 12:39:21 +0000
commit01b85ff7c54f8250083700aa6ec7dceb52c233a1 (patch)
tree0c412c15e782a0a94b4e3ae46e174e3947594b54
parentb8dd4f282b521f881f33841a9e3bb101f933c349 (diff)
parente65c91807e554737445916cfb25235b5d0a10c83 (diff)
downloadnetsurf-01b85ff7c54f8250083700aa6ec7dceb52c233a1.tar.gz
netsurf-01b85ff7c54f8250083700aa6ec7dceb52c233a1.tar.bz2
Merge branch 'master' of git://git.netsurf-browser.org/netsurf
-rw-r--r--atari/clipboard.c8
-rw-r--r--atari/ctxmenu.c54
-rwxr-xr-xatari/findfile.c4
-rw-r--r--atari/gemtk/gemtk.h4
-rw-r--r--atari/gemtk/utils.c28
-rw-r--r--atari/gui.c3
6 files changed, 93 insertions, 8 deletions
diff --git a/atari/clipboard.c b/atari/clipboard.c
index bcd4ee6df..254579bba 100644
--- a/atari/clipboard.c
+++ b/atari/clipboard.c
@@ -28,6 +28,7 @@
#include <mint/osbind.h>
#include <cflib.h>
#include "atari/clipboard.h"
+#include "atari/gemtk/gemtk.h"
static int filesize(char * path)
@@ -49,6 +50,13 @@ static int filesize(char * path)
int scrap_txt_write(char *str)
{
scrap_wtxt(str);
+
+
+ // Send SC_CHANGED message:
+ gemtk_send_msg(SC_CHANGED, 0, 2, 0, 0, 0, 0);
+
+ return(0);
+
}
char *scrap_txt_read(void)
diff --git a/atari/ctxmenu.c b/atari/ctxmenu.c
index 2170dec8c..fb687b809 100644
--- a/atari/ctxmenu.c
+++ b/atari/ctxmenu.c
@@ -23,7 +23,10 @@
#include <string.h>
#include <stdbool.h>
#include <assert.h>
-#include <mint/osbind.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <mint/osbind.h>
+#include <cflib.h>
#include "desktop/gui.h"
#include "desktop/netsurf.h"
@@ -36,7 +39,8 @@
#include "content/urldb.h"
#include "css/css.h"
#include "utils/log.h"
-#include "utils/messages.h"
+#include "utils/messages.h"
+#include "utils/utils.h"
#include "atari/gui.h"
#include "atari/rootwin.h"
@@ -107,6 +111,42 @@ static struct s_context_info * get_context_info( struct gui_window * gw, short m
return(&ctxinfo);
+}
+
+/***
+ * Generates an unique filename for temp. files
+ * The generated filename includes the path.
+ * If TMPDIR environmenrt vairable is set, this will be used as path,
+ * otherwise U:\tmp\
+ * \param prefix
+ * \param sufffix
+ * \return pointer to static buffer owned by get_tmpfilename()
+ */
+static char * get_tmpfilename(const char * prefix, const char * suffix)
+{
+ int i=0;
+ static char tmpfilename[PATH_MAX];
+ char * tmpdir;
+ const char * tmp_path_suffix = "";
+
+ // TODO: make function public?
+ tmpdir = getenv("TMPDIR");
+ if(tmpdir == NULL){
+ tmpdir = (char*)"u:\\tmp\\";
+ }
+
+ if(tmpdir[strlen(tmpdir)-1] != '\\'){
+ tmp_path_suffix = "\\";
+ }
+
+ do{
+ /* generate a new filename: */
+ snprintf(tmpfilename, PATH_MAX, "%s%s%s%d%s", tmpdir,
+ tmp_path_suffix, prefix, i++, suffix);
+ /* check with cflib: */
+ } while(file_exists(tmpfilename));
+
+ return(tmpfilename);
}
//TODO: do not open popup for gui_window, but for a rootwin?
@@ -273,9 +313,11 @@ void context_popup(struct gui_window * gw, short x, short y)
editor = nsoption_charp(atari_editor);
if (editor != NULL && strlen(editor)>0) {
data = content_get_source_data(gw->browser->bw->current_content,
- &size);
+ &size);
if (size > 0 && data != NULL){
- snprintf(tempfile, 127, "%s%s.htm", "u:", tmpnam(NULL));
+ snprintf(tempfile, 127, "%s", get_tmpfilename("ns-", ".html"));
+ /* the GEMDOS cmdline contains the length of the commandline
+ in the first byte: */
cmdline[0] = (unsigned char)strlen(tempfile);
LOG(("Creating temporay source file: %s\n", tempfile));
fp_tmpfile = fopen(tempfile, "w");
@@ -283,6 +325,10 @@ void context_popup(struct gui_window * gw, short x, short y)
fwrite(data, size, 1, fp_tmpfile);
fclose(fp_tmpfile);
+ // Send SH_WDRAW to notify files changed:
+ gemtk_send_msg(SH_WDRAW, 0, -1, 0, 0, 0, 0);
+
+ // start application:
if(strlen(tempfile)<=125){
shel_write(1, 1, 1, editor, cmdline);
}
diff --git a/atari/findfile.c b/atari/findfile.c
index 61dc3a292..7badc7149 100755
--- a/atari/findfile.c
+++ b/atari/findfile.c
@@ -124,14 +124,14 @@ char *url_to_path(const char *url)
/**
* Locate a shared resource file by searching known places in order.
+ * Search order is: ./, NETSURF_GEM_RESPATH, ./$HOME/.netsurf/, $NETSURFRES/
+ * (where NETSURFRES is an environment variable)
*
* \param buf buffer to write to. must be at least PATH_MAX chars
* \param filename file to look for
* \param def default to return if file not found
* \return buf
*
- * Search order is: ./, NETSURF_GEM_RESPATH, ./$HOME/.netsurf/, $NETSURFRES/ (where NETSURFRES is an
- * environment variable),
*/
#ifndef NETSURF_GEM_RESPATH
#define NETSURF_GEM_RESPATH "./res/"
diff --git a/atari/gemtk/gemtk.h b/atari/gemtk/gemtk.h
index 44baba429..f16b4a7c0 100644
--- a/atari/gemtk/gemtk.h
+++ b/atari/gemtk/gemtk.h
@@ -60,6 +60,10 @@ void gemtk_clip_grect(VdiHdl vh, GRECT *rect);
void gemtk_wind_get_str(short aes_handle, short mode, char *str, int len);
+/* send application message */
+void gemtk_send_msg(short msg_type, short data2, short data3, short data4,
+ short data5, short data6, short data7);
+
#ifndef POINT_WITHIN
# define POINT_WITHIN(_x,_y, r) ((_x >= r.g_x) && (_x <= r.g_x + r.g_w ) \
diff --git a/atari/gemtk/utils.c b/atari/gemtk/utils.c
index 20fe5d424..aac293d21 100644
--- a/atari/gemtk/utils.c
+++ b/atari/gemtk/utils.c
@@ -95,10 +95,38 @@ void gemtk_clip_grect(VdiHdl vh, GRECT *rect)
vs_clip_pxy(vh, pxy);
}
+/** Send an Message to a GUIWIN using AES message pipe
+* \param win the GUIWIN which shall receive the message
+* \param msg_type the WM_ message definition
+* \param a the 4th parameter to appl_write
+* \param b the 5th parameter to appl_write
+* \param c the 6th parameter to appl_write
+* \param d the 7th parameter to appl_write
+*/
+void gemtk_send_msg(short msg_type, short data2, short data3, short data4,
+ short data5, short data6, short data7)
+{
+ short msg[8];
+
+ msg[0] = msg_type;
+ msg[1] = gl_apid;
+ msg[2] = data2;
+ msg[3] = data3;
+ msg[4] = data4;
+ msg[5] = data5;
+ msg[6] = data6;
+ msg[7] = data7;
+
+ appl_write(gl_apid, 16, &msg);
+}
+
+
void gemtk_wind_get_str(short aes_handle, short mode, char *str, int len)
{
char tmp_str[255];
+ // TODO: remove or implement function
+
if(len>255) {
len = 255;
}
diff --git a/atari/gui.c b/atari/gui.c
index ace0f9848..e52a6589c 100644
--- a/atari/gui.c
+++ b/atari/gui.c
@@ -359,8 +359,7 @@ void gui_window_set_scale(struct gui_window *gw, float scale)
gw->scale = MAX(scale, 0.25);
- browser_window_reload(gw->browser->bw, false);
- gui_window_get_dimensions(gw, &width, &heigth, true);
+ gui_window_get_dimensions(gw, &width, &heigth, true);
browser_window_reformat(gw->browser->bw, false, width, heigth);
}