diff --git a/cmd/xfe/src/HTMLView.cpp b/cmd/xfe/src/HTMLView.cpp
index 0c3d2c0c357..2de051d9fae 100644
--- a/cmd/xfe/src/HTMLView.cpp
+++ b/cmd/xfe/src/HTMLView.cpp
@@ -40,7 +40,10 @@
#include "BookmarkMenu.h" // Need for file bookmark generate function
#endif
+#ifdef OLD_BOOKMARKS
#include "bkmks.h"
+#endif /*OLD_BOOKMARKS*/
+#include "htrdf.h"
#include "net.h"
#include "layers.h"
#include "ntypes.h"
@@ -68,6 +71,7 @@
extern int XFE_ERROR_SAVING_OPTIONS;
extern int XFE_COMMANDS_OPEN_FILE_USAGE;
+extern int XFE_COMMANDS_ADD_BOOKMARK_USAGE;
#ifdef EDITOR
extern int XFE_EDITOR_ALERT_ABOUT_DOCUMENT;
extern int XFE_EDITOR_ALERT_FRAME_DOCUMENT;
@@ -523,7 +527,9 @@ XFE_HTMLView::doCommand(CommandType cmd, void *callData, XFE_CommandInfo* info)
}
else if (IS_CMD(xfeCmdOpenPageChooseFile))
{
- openFileAction(info->params, info->nparams);
+ XP_ASSERT(info);
+
+ openFileAction(info->params, *info->nparams);
getToplevel()->notifyInterested(XFE_View::chromeNeedsUpdating);
return;
@@ -763,18 +769,30 @@ XFE_HTMLView::doCommand(CommandType cmd, void *callData, XFE_CommandInfo* info)
HG28732
else if (IS_CMD(xfeCmdAddBookmark))
{
- History_entry *h = SHIST_GetCurrent (&m_contextData->hist);
- BM_Entry *bm;
- char *new_title;
+ XP_ASSERT(info);
- if (!h) return;
-
- if (!h->title || !*h->title) new_title = h->address;
- else new_title = h->title;
- bm = (BM_Entry*)BM_NewUrl( new_title, h->address, NULL, h->last_access);
-
- BM_AppendToHeader (XFE_BookmarkFrame::main_bm_context,
- BM_GetAddHeader(XFE_BookmarkFrame::main_bm_context), bm);
+ Cardinal ac = *info->nparams;
+ String *av = info->params;
+
+ if (ac == 1 && av[0])
+ {
+ HT_AddBookmark (av[0], NULL);
+ }
+ else if (ac == 2 && av[0] && av[1])
+ {
+ HT_AddBookmark (av[0], av[1]);
+ }
+ else if (ac > 2)
+ {
+ fprintf (stderr, XP_GetString(XFE_COMMANDS_ADD_BOOKMARK_USAGE),
+ fe_progname);
+ }
+ else
+ {
+ History_entry *h = SHIST_GetCurrent (&m_contextData->hist);
+ if (h)
+ HT_AddBookmark (h->address, h->title);
+ }
return;
}
else if (IS_CMD(xfeCmdAddFrameBookmark))
@@ -787,35 +805,16 @@ XFE_HTMLView::doCommand(CommandType cmd, void *callData, XFE_CommandInfo* info)
History_entry *h = SHIST_GetCurrent (&context->hist);
- if (!h) return;
-
- BM_Entry *bm;
- char *new_title;
+ if (h)
+ HT_AddBookmark (h->address, h->title);
- if (!h->title || !*h->title) new_title = h->address;
- else new_title = h->title;
-
- bm = (BM_Entry*)BM_NewUrl( new_title, h->address, NULL, h->last_access);
-
- BM_AppendToHeader (XFE_BookmarkFrame::main_bm_context,
- BM_GetAddHeader(XFE_BookmarkFrame::main_bm_context), bm);
return;
}
else if (IS_CMD(xfeCmdAddLinkBookmark))
{
- if (!m_urlUnderMouse) return;
-
- BM_Entry *bm;
- char *new_title;
+ if (m_urlUnderMouse)
+ HT_AddBookmark (m_urlUnderMouse->address, NULL);
- new_title = m_urlUnderMouse->address; /* Maybe we can do something
- smart someday. -slamm */
-
- bm = (BM_Entry*)BM_NewUrl( new_title, m_urlUnderMouse->address,
- NULL, 0);
-
- BM_AppendToHeader (XFE_BookmarkFrame::main_bm_context,
- BM_GetAddHeader(XFE_BookmarkFrame::main_bm_context), bm);
return;
}
else if (IS_CMD(xfeCmdPrint))
@@ -2485,42 +2484,29 @@ fe_openTargetUrl(MWContext * context,LO_AnchorData * anchor_data)
}
void
-XFE_HTMLView::openFileAction (String *av, Cardinal *ac)
+XFE_HTMLView::openFileAction (String *av, Cardinal ac)
{
MWContext *context = m_contextData;
- MWContext *old_context = NULL;
+ Boolean useNewWindow = False;
- /* See also fe_open_url_action() */
- Boolean other_p = False;
-
- fe_UserActivity (context);
- if (*ac && av[*ac-1] && !strcmp (av[*ac-1], ""))
- (*ac)--;
-
- if (*ac > 1 && av[*ac-1] )
+ if (ac > 1 && av[ac-1] )
{
- if ((!strcasecomp (av[*ac-1], "new-window") ||
- !strcasecomp (av[*ac-1], "new_window") ||
- !strcasecomp (av[*ac-1], "newWindow") ||
- !strcasecomp (av[*ac-1], "new")))
- {
- other_p = True;
- (*ac)--;
- }
- else if ((old_context = XP_FindNamedContextInList(context, av[*ac-1])))
- {
- context = old_context;
- other_p = False;
- (*ac)--;
- }
+ // Search context list for the parameter string
+ // If there is a match, use that context.
+ // Otherwise, the param was probably a "new_window" param.
+ // If not "new_window", too bad, give a new window anyway.
+
+ MWContext *named_context = XP_FindNamedContextInList(context, av[ac-1]);
+
+ if (named_context)
+ context = named_context;
else
- {
- other_p = True;
- (*ac)--;
- }
+ useNewWindow = True;
+
+ ac--;
}
- if (*ac == 1 && av[0])
+ if (ac == 1 && av[0])
{
#ifndef PATH_MAX
#define PATH_MAX 1024
@@ -2540,11 +2526,8 @@ XFE_HTMLView::openFileAction (String *av, Cardinal *ac)
PR_snprintf (newURL, sizeof (newURL), "file:%s/%.900s",
cwd_buf, av[0]);
}
-#ifdef DEBUG_slamm
- fprintf(stderr,"%s",newURL);
-#endif
url_struct = NET_CreateURLStruct (newURL, NET_DONT_RELOAD);
- if (other_p)
+ if (useNewWindow)
{
fe_MakeWindow (XtParent (CONTEXT_WIDGET (context)),
context, url_struct, NULL,
@@ -2553,7 +2536,7 @@ XFE_HTMLView::openFileAction (String *av, Cardinal *ac)
else
fe_GetURL (context, url_struct, FALSE);
}
- else if (*ac > 1)
+ else if (ac > 1)
{
fprintf (stderr,
XP_GetString(XFE_COMMANDS_OPEN_FILE_USAGE),
diff --git a/cmd/xfe/src/HTMLView.h b/cmd/xfe/src/HTMLView.h
index 9bcc738a429..a581abe04fe 100644
--- a/cmd/xfe/src/HTMLView.h
+++ b/cmd/xfe/src/HTMLView.h
@@ -136,7 +136,7 @@ private:
void makeScroller(Widget parent);
void findLayerForPopupMenu(Widget widget, XEvent *event);
void reload(Widget, XEvent *event, XP_Bool onlyReloadFrame = FALSE);
- void openFileAction (String *av, Cardinal *ac);
+ void openFileAction (String *av, Cardinal ac);
// This gets called by our toplevel when the encoding has
// changed for this window.