Skip to content

Commit

Permalink
glw: Inherit core property so it can be overridden
Browse files Browse the repository at this point in the history
  • Loading branch information
andoma committed Nov 25, 2015
1 parent a86eb5a commit 2dfac19
Show file tree
Hide file tree
Showing 11 changed files with 70 additions and 36 deletions.
3 changes: 2 additions & 1 deletion src/ui/glw/glw.c
Expand Up @@ -395,7 +395,8 @@ glw_load_universe(glw_root_t *gr)

gr->gr_universe = glw_view_create(gr,
universe, NULL, NULL, page,
NULL, NULL, NULL, NULL, 0);
NULL, NULL, NULL, gr->gr_prop_core,
NULL, 0);

rstr_release(universe);
}
Expand Down
8 changes: 5 additions & 3 deletions src/ui/glw/glw.h
Expand Up @@ -436,7 +436,7 @@ typedef struct glw_class {
int (*gc_set_prop)(struct glw *w, glw_attribute_t a, prop_t *p);

void (*gc_set_roots)(struct glw *w, prop_t *self, prop_t *parent,
prop_t *clone);
prop_t *clone, prop_t *core);

int (*gc_bind_to_id)(struct glw *w, const char *id);

Expand Down Expand Up @@ -611,7 +611,8 @@ typedef struct glw_class {
const char **pname,
prop_t *view,
prop_t *args,
prop_t *clone);
prop_t *clone,
prop_t *core);

/**
*
Expand Down Expand Up @@ -720,6 +721,7 @@ typedef struct glw_program glw_program_t;
typedef struct glw_root {
prop_t *gr_prop_ui;
prop_t *gr_prop_nav;

prop_t *gr_prop_core;

void (*gr_prop_dispatcher)(prop_courier_t *pc, int timeout);
Expand Down Expand Up @@ -1371,7 +1373,7 @@ void glw_lp(float *v, glw_root_t *gr, float t, float alpha);
*/
glw_t *glw_view_create(glw_root_t *gr, rstr_t *url, rstr_t *alturl,
glw_t *parent, prop_t *prop, prop_t *prop_parent,
prop_t *args, prop_t *prop_clone,
prop_t *args, prop_t *prop_clone, prop_t *prop_core,
rstr_t *file, int line);

void glw_view_eval_signal(glw_t *w, glw_signal_t sig);
Expand Down
5 changes: 3 additions & 2 deletions src/ui/glw/glw_keyintercept.c
Expand Up @@ -201,7 +201,8 @@ prop_callback(void *opaque, prop_event_t event, ...)
*/
static void
bind_to_property(glw_t *w, prop_t *p, const char **pname,
prop_t *view, prop_t *args, prop_t *clone)
prop_t *view, prop_t *args, prop_t *clone,
prop_t *core)
{
glw_keyintercept_t *ki = (glw_keyintercept_t *)w;
ki_unbind(ki);
Expand All @@ -215,9 +216,9 @@ bind_to_property(glw_t *w, prop_t *p, const char **pname,
PROP_TAG_NAMED_ROOT, view, "view",
PROP_TAG_NAMED_ROOT, args, "args",
PROP_TAG_NAMED_ROOT, clone, "clone",
PROP_TAG_NAMED_ROOT, core, "core",
PROP_TAG_NAMED_ROOT, w->glw_root->gr_prop_ui, "ui",
PROP_TAG_NAMED_ROOT, w->glw_root->gr_prop_nav, "nav",
PROP_TAG_NAMED_ROOT, w->glw_root->gr_prop_core, "core",
NULL);
}

Expand Down
5 changes: 3 additions & 2 deletions src/ui/glw/glw_slider.c
Expand Up @@ -545,7 +545,8 @@ glw_slider_ctor(glw_t *w)
*/
static void
bind_to_property(glw_t *w, prop_t *p, const char **pname,
prop_t *view, prop_t *args, prop_t *clone)
prop_t *view, prop_t *args, prop_t *clone,
prop_t *core)
{
glw_slider_t *s = (glw_slider_t *)w;
slider_unbind(s);
Expand All @@ -558,9 +559,9 @@ bind_to_property(glw_t *w, prop_t *p, const char **pname,
PROP_TAG_NAMED_ROOT, view, "view",
PROP_TAG_NAMED_ROOT, args, "args",
PROP_TAG_NAMED_ROOT, clone, "clone",
PROP_TAG_NAMED_ROOT, core, "core",
PROP_TAG_ROOT, w->glw_root->gr_prop_ui,
PROP_TAG_NAMED_ROOT, w->glw_root->gr_prop_nav, "nav",
PROP_TAG_NAMED_ROOT, w->glw_root->gr_prop_core, "core",
NULL);
}

Expand Down
3 changes: 2 additions & 1 deletion src/ui/glw/glw_slideshow.c
Expand Up @@ -298,7 +298,8 @@ glw_slideshow_set_float(glw_t *w, glw_attribute_t attrib, float value,
*
*/
static void
glw_slideshow_set_roots(glw_t *w, prop_t *self, prop_t *parent, prop_t *clone)
glw_slideshow_set_roots(glw_t *w, prop_t *self, prop_t *parent, prop_t *clone,
prop_t *core)
{
glw_slideshow_t *s = (glw_slideshow_t *)w;

Expand Down
5 changes: 3 additions & 2 deletions src/ui/glw/glw_text_bitmap.c
Expand Up @@ -927,7 +927,8 @@ gtb_set_rstr(glw_t *w, glw_attribute_t a, rstr_t *str, glw_style_t *origin)
*/
static void
bind_to_property(glw_t *w, prop_t *p, const char **pname,
prop_t *view, prop_t *args, prop_t *clone)
prop_t *view, prop_t *args, prop_t *clone,
prop_t *core)
{
glw_text_bitmap_t *gtb = (void *)w;
gtb_unbind(gtb);
Expand All @@ -941,9 +942,9 @@ bind_to_property(glw_t *w, prop_t *p, const char **pname,
PROP_TAG_NAMED_ROOT, view, "view",
PROP_TAG_NAMED_ROOT, args, "args",
PROP_TAG_NAMED_ROOT, clone, "clone",
PROP_TAG_NAMED_ROOT, core, "core",
PROP_TAG_ROOT, w->glw_root->gr_prop_ui,
PROP_TAG_NAMED_ROOT, w->glw_root->gr_prop_nav, "nav",
PROP_TAG_NAMED_ROOT, w->glw_root->gr_prop_core, "core",
NULL);

if(w->glw_flags2 & GLW2_AUTOHIDE)
Expand Down
3 changes: 2 additions & 1 deletion src/ui/glw/glw_video_common.c
Expand Up @@ -857,7 +857,8 @@ glw_video_set_int(glw_t *w, glw_attribute_t attrib, int value,
*
*/
static void
glw_video_set_roots(glw_t *w, prop_t *self, prop_t *parent, prop_t *clone)
glw_video_set_roots(glw_t *w, prop_t *self, prop_t *parent, prop_t *clone,
prop_t *core)
{
glw_video_t *gv = (glw_video_t *)w;
prop_link(gv->gv_mp->mp_prop_root, prop_create(self, "media"));
Expand Down
13 changes: 9 additions & 4 deletions src/ui/glw/glw_view.c
Expand Up @@ -172,7 +172,7 @@ gcv_release(glw_root_t *gr, glw_cached_view_t *gcv)
static void
eval_loaded_view(glw_root_t *gr, glw_cached_view_t *gcv, glw_view_t *view,
prop_t *prop_self, prop_t *prop_parent, prop_t *prop_args,
prop_t *prop_clone)
prop_t *prop_clone, prop_t *prop_core)
{
if(gcv->gcv_error) {
glw_view_error(&view->w, gcv->gcv_error,
Expand All @@ -195,6 +195,7 @@ eval_loaded_view(glw_root_t *gr, glw_cached_view_t *gcv, glw_view_t *view,
ec.prop_parent = prop_parent;
ec.prop_args = prop_args;
ec.prop_clone = prop_clone;
ec.prop_core = prop_core;
ec.prop_view = view->viewprop;

ec.sublist = &ec.w->glw_prop_subscriptions;
Expand Down Expand Up @@ -294,6 +295,7 @@ typedef struct glw_view_load_request {
prop_t *prop_parent;
prop_t *args;
prop_t *prop_clone;
prop_t *prop_core;
glw_cached_view_t *gcv;
} glw_view_load_request_t;

Expand All @@ -313,6 +315,7 @@ gvlr_destroy(glw_root_t *gr, glw_view_load_request_t *r)
prop_ref_dec(r->prop_parent);
prop_ref_dec(r->args);
prop_ref_dec(r->prop_clone);
prop_ref_dec(r->prop_core);
gcv_release(gr, r->gcv);
free(r);
}
Expand Down Expand Up @@ -363,7 +366,8 @@ glw_view_loader_eval(glw_root_t *gr)

if(!(r->w->glw_flags & GLW_DESTROYING))
eval_loaded_view(gr, r->gcv, (glw_view_t *)r->w,
r->prop, r->prop_parent, r->args, r->prop_clone);
r->prop, r->prop_parent, r->args, r->prop_clone,
r->prop_core);

gvlr_destroy(gr, r);
}
Expand Down Expand Up @@ -396,7 +400,7 @@ glw_view_loader_flush(glw_root_t *gr)
glw_t *
glw_view_create(glw_root_t *gr, rstr_t *url, rstr_t *alturl, glw_t *parent,
prop_t *prop, prop_t *prop_parent, prop_t *args,
prop_t *prop_clone, rstr_t *file, int line)
prop_t *prop_clone, prop_t *prop_core, rstr_t *file, int line)
{
glw_cached_view_t *gcv;

Expand Down Expand Up @@ -442,6 +446,7 @@ glw_view_create(glw_root_t *gr, rstr_t *url, rstr_t *alturl, glw_t *parent,
r->prop_parent = prop_ref_inc(prop_parent);
r->args = prop_ref_inc(args);
r->prop_clone = prop_ref_inc(prop_clone);
r->prop_core = prop_ref_inc(prop_core);
r->gcv = gcv;

TAILQ_INSERT_TAIL(&gr->gr_view_load_requests, r, link);
Expand All @@ -467,7 +472,7 @@ glw_view_create(glw_root_t *gr, rstr_t *url, rstr_t *alturl, glw_t *parent,
}

eval_loaded_view(gr, gcv, (glw_view_t *)w,
prop, prop_parent, args, prop_clone);
prop, prop_parent, args, prop_clone, prop_core);

return w;
}
Expand Down
1 change: 1 addition & 0 deletions src/ui/glw/glw_view.h
Expand Up @@ -225,6 +225,7 @@ typedef struct glw_view_eval_context {
struct prop *prop_args;
struct prop *prop_clone;
struct prop *prop_event;
struct prop *prop_core;

struct glw_root *gr;
const struct glw_rctx *rc;
Expand Down

0 comments on commit 2dfac19

Please sign in to comment.