diff options
author | Steve Fryatt <stevef@netsurf-browser.org> | 2013-12-30 12:39:21 +0000 |
---|---|---|
committer | Steve Fryatt <stevef@netsurf-browser.org> | 2013-12-30 12:39:21 +0000 |
commit | 01b85ff7c54f8250083700aa6ec7dceb52c233a1 (patch) | |
tree | 0c412c15e782a0a94b4e3ae46e174e3947594b54 | |
parent | b8dd4f282b521f881f33841a9e3bb101f933c349 (diff) | |
parent | e65c91807e554737445916cfb25235b5d0a10c83 (diff) | |
download | netsurf-01b85ff7c54f8250083700aa6ec7dceb52c233a1.tar.gz netsurf-01b85ff7c54f8250083700aa6ec7dceb52c233a1.tar.bz2 |
Merge branch 'master' of git://git.netsurf-browser.org/netsurf
-rw-r--r-- | atari/clipboard.c | 8 | ||||
-rw-r--r-- | atari/ctxmenu.c | 54 | ||||
-rwxr-xr-x | atari/findfile.c | 4 | ||||
-rw-r--r-- | atari/gemtk/gemtk.h | 4 | ||||
-rw-r--r-- | atari/gemtk/utils.c | 28 | ||||
-rw-r--r-- | atari/gui.c | 3 |
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); } |