mirror of
https://github.com/rkd77/elinks.git
synced 2024-11-02 08:57:19 -04:00
ECMAScript: added writeonly property window.status
This commit is contained in:
parent
6e08e1bf5d
commit
f4e66f1fc6
@ -194,7 +194,13 @@ display_status_bar(struct session *ses, struct terminal *term, int tabs_count)
|
|||||||
if (ses->kbdprefix.repeat_count) {
|
if (ses->kbdprefix.repeat_count) {
|
||||||
msg = msg_text(term, N_("Keyboard prefix: %d"),
|
msg = msg_text(term, N_("Keyboard prefix: %d"),
|
||||||
ses->kbdprefix.repeat_count);
|
ses->kbdprefix.repeat_count);
|
||||||
} else if (download) {
|
}
|
||||||
|
#ifdef CONFIG_ECMASCRIPT
|
||||||
|
else if (ses->status.window_status) {
|
||||||
|
msg = stracpy(ses->status.window_status);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
else if (download) {
|
||||||
struct document_view *doc_view = current_frame(ses);
|
struct document_view *doc_view = current_frame(ses);
|
||||||
|
|
||||||
/* Show S_INTERRUPTED message *once* but then show links
|
/* Show S_INTERRUPTED message *once* but then show links
|
||||||
|
@ -96,6 +96,7 @@ struct SEE_string *s_hidden;
|
|||||||
|
|
||||||
struct SEE_string *s_timeout;
|
struct SEE_string *s_timeout;
|
||||||
struct SEE_string *s_setTimeout;
|
struct SEE_string *s_setTimeout;
|
||||||
|
struct SEE_string *s_status;
|
||||||
|
|
||||||
void
|
void
|
||||||
init_intern_strings(void)
|
init_intern_strings(void)
|
||||||
@ -195,4 +196,5 @@ init_intern_strings(void)
|
|||||||
|
|
||||||
s_timeout = SEE_intern_global("timeout");
|
s_timeout = SEE_intern_global("timeout");
|
||||||
s_setTimeout = SEE_intern_global("setTimeout");
|
s_setTimeout = SEE_intern_global("setTimeout");
|
||||||
|
s_status = SEE_intern_global("status");
|
||||||
}
|
}
|
||||||
|
@ -101,4 +101,5 @@ extern struct SEE_string *s_hidden;
|
|||||||
|
|
||||||
extern struct SEE_string *s_timeout;
|
extern struct SEE_string *s_timeout;
|
||||||
extern struct SEE_string *s_setTimeout;
|
extern struct SEE_string *s_setTimeout;
|
||||||
|
extern struct SEE_string *s_status;
|
||||||
#endif
|
#endif
|
||||||
|
@ -103,7 +103,7 @@ window_get(struct SEE_interpreter *interp, struct SEE_object *o,
|
|||||||
|
|
||||||
if (p == s_closed) {
|
if (p == s_closed) {
|
||||||
SEE_SET_BOOLEAN(res, 0);
|
SEE_SET_BOOLEAN(res, 0);
|
||||||
} else if (p == s_self || p == s_parent || p == s_top) {
|
} else if (p == s_self || p == s_parent || p == s_top || p == s_status) {
|
||||||
SEE_SET_OBJECT(res, o);
|
SEE_SET_OBJECT(res, o);
|
||||||
#if 0
|
#if 0
|
||||||
} else if (p == s_parent || p == s_top) {
|
} else if (p == s_parent || p == s_top) {
|
||||||
@ -169,6 +169,16 @@ window_put(struct SEE_interpreter *interp, struct SEE_object *o,
|
|||||||
location_goto(doc_view, str);
|
location_goto(doc_view, str);
|
||||||
mem_free(str);
|
mem_free(str);
|
||||||
}
|
}
|
||||||
|
} else if (p == s_status) {
|
||||||
|
struct global_object *g = (struct global_object *)interp;
|
||||||
|
struct js_window_object *win = g->win;
|
||||||
|
struct view_state *vs = win->vs;
|
||||||
|
struct document_view *doc_view = vs->doc_view;
|
||||||
|
struct session *ses = doc_view->session;
|
||||||
|
unsigned char *stat = SEE_value_to_unsigned_char(interp, val);
|
||||||
|
|
||||||
|
mem_free_set(&ses->status.window_status, stat);
|
||||||
|
print_screen_status(ses);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -176,7 +186,7 @@ static int
|
|||||||
window_canput(struct SEE_interpreter *interp, struct SEE_object *o,
|
window_canput(struct SEE_interpreter *interp, struct SEE_object *o,
|
||||||
struct SEE_string *p)
|
struct SEE_string *p)
|
||||||
{
|
{
|
||||||
if (p == s_location)
|
if (p == s_location || p == s_status)
|
||||||
return 1;
|
return 1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -60,6 +60,7 @@ enum window_prop {
|
|||||||
JSP_WIN_CLOSED,
|
JSP_WIN_CLOSED,
|
||||||
JSP_WIN_PARENT,
|
JSP_WIN_PARENT,
|
||||||
JSP_WIN_SELF,
|
JSP_WIN_SELF,
|
||||||
|
JSP_WIN_STATUS,
|
||||||
JSP_WIN_TOP,
|
JSP_WIN_TOP,
|
||||||
};
|
};
|
||||||
/* "location" is special because we need to simulate "location.href"
|
/* "location" is special because we need to simulate "location.href"
|
||||||
@ -72,6 +73,7 @@ const JSPropertySpec window_props[] = {
|
|||||||
{ "closed", JSP_WIN_CLOSED, JSPROP_ENUMERATE | JSPROP_READONLY },
|
{ "closed", JSP_WIN_CLOSED, JSPROP_ENUMERATE | JSPROP_READONLY },
|
||||||
{ "parent", JSP_WIN_PARENT, JSPROP_ENUMERATE | JSPROP_READONLY },
|
{ "parent", JSP_WIN_PARENT, JSPROP_ENUMERATE | JSPROP_READONLY },
|
||||||
{ "self", JSP_WIN_SELF, JSPROP_ENUMERATE | JSPROP_READONLY },
|
{ "self", JSP_WIN_SELF, JSPROP_ENUMERATE | JSPROP_READONLY },
|
||||||
|
{ "status", JSP_WIN_STATUS, JSPROP_ENUMERATE },
|
||||||
{ "top", JSP_WIN_TOP, JSPROP_ENUMERATE | JSPROP_READONLY },
|
{ "top", JSP_WIN_TOP, JSPROP_ENUMERATE | JSPROP_READONLY },
|
||||||
{ "window", JSP_WIN_SELF, JSPROP_ENUMERATE | JSPROP_READONLY },
|
{ "window", JSP_WIN_SELF, JSPROP_ENUMERATE | JSPROP_READONLY },
|
||||||
{ NULL }
|
{ NULL }
|
||||||
@ -251,6 +253,10 @@ window_set_property(JSContext *ctx, JSObject *obj, jsval id, jsval *vp)
|
|||||||
return JS_TRUE;
|
return JS_TRUE;
|
||||||
|
|
||||||
switch (JSVAL_TO_INT(id)) {
|
switch (JSVAL_TO_INT(id)) {
|
||||||
|
case JSP_WIN_STATUS:
|
||||||
|
mem_free_set(&vs->doc_view->session->status.window_status, stracpy(jsval_to_string(ctx, vp)));
|
||||||
|
print_screen_status(vs->doc_view->session);
|
||||||
|
return JS_TRUE;
|
||||||
default:
|
default:
|
||||||
INTERNAL("Invalid ID %d in window_set_property().", JSVAL_TO_INT(id));
|
INTERNAL("Invalid ID %d in window_set_property().", JSVAL_TO_INT(id));
|
||||||
return JS_TRUE;
|
return JS_TRUE;
|
||||||
|
@ -1171,6 +1171,9 @@ destroy_session(struct session *ses)
|
|||||||
mem_free_if(ses->search_word);
|
mem_free_if(ses->search_word);
|
||||||
mem_free_if(ses->last_search_word);
|
mem_free_if(ses->last_search_word);
|
||||||
mem_free_if(ses->status.last_title);
|
mem_free_if(ses->status.last_title);
|
||||||
|
#ifdef CONFIG_ECMASCRIPT
|
||||||
|
mem_free_if(ses->status.window_status);
|
||||||
|
#endif
|
||||||
del_from_list(ses);
|
del_from_list(ses);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -92,6 +92,9 @@ struct session_status {
|
|||||||
|
|
||||||
unsigned int set_window_title:1;
|
unsigned int set_window_title:1;
|
||||||
unsigned char *last_title;
|
unsigned char *last_title;
|
||||||
|
#ifdef CONFIG_ECMASCRIPT
|
||||||
|
unsigned char *window_status;
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_LEDS
|
#ifdef CONFIG_LEDS
|
||||||
unsigned int show_leds:1;
|
unsigned int show_leds:1;
|
||||||
|
@ -67,6 +67,11 @@ detach_formatted(struct document_view *doc_view)
|
|||||||
assert(doc_view);
|
assert(doc_view);
|
||||||
if_assert_failed return;
|
if_assert_failed return;
|
||||||
|
|
||||||
|
#ifdef CONFIG_ECMASCRIPT
|
||||||
|
if (doc_view->session) {
|
||||||
|
mem_free_set(&doc_view->session->status.window_status, NULL);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
if (doc_view->document) {
|
if (doc_view->document) {
|
||||||
release_document(doc_view->document);
|
release_document(doc_view->document);
|
||||||
doc_view->document = NULL;
|
doc_view->document = NULL;
|
||||||
|
Loading…
Reference in New Issue
Block a user