From ce1527754c94d2b2aece71235383f26bcf3501b9 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 30 Sep 2014 19:27:27 +0000 Subject: limit max width, pass setval to children --- Display.c | 9 +++++++++ Sgraph.c | 13 ++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/Display.c b/Display.c index 7b0aea1..e80c939 100644 --- a/Display.c +++ b/Display.c @@ -177,6 +177,9 @@ static Boolean SetValues(Widget old, Widget req, Widget new, ArgList args, Cardinal *n) { XExposeEvent xeev; + DisplayWidget dw = (DisplayWidget)new; + Widget child; + int i; //Trace(new); @@ -188,6 +191,12 @@ SetValues(Widget old, Widget req, Widget new, ArgList args, Cardinal *n) xeev.width = new->core.width; xeev.height = new->core.height; + for (i = 0; i < dw->composite.num_children; i++) { + child = dw->composite.children[i]; + if (XtIsManaged(child)) + XtSetValues(child, args, *n); + } + XtClass(new)->core_class.expose(new, (XEvent *)&xeev, NULL); return False; diff --git a/Sgraph.c b/Sgraph.c index f5625f1..36fc9ea 100644 --- a/Sgraph.c +++ b/Sgraph.c @@ -45,7 +45,7 @@ static XtResource resources[] = { { XtNdata, XtCData, XtRPointer, sizeof(int *), Offset(data), XtRPointer, NULL }, { XtNsize, XtCsize, XtRInt, sizeof(int), - Offset(size), XtRImmediate, (XtPointer)2048 }, + Offset(size), XtRImmediate, (XtPointer)1960 }, { XtNsamples, XtCsamples, XtRInt, sizeof(int), Offset(samples), XtRImmediate, (XtPointer)0 }, }; @@ -144,7 +144,7 @@ Initialize(Widget request, Widget w, ArgList args, Cardinal *nargs) sw->core.width = 320; sw->core.height = 120; - sw->sgraph.data = (int *)XtCalloc(sw->sgraph.size, sizeof(int)); + sw->sgraph.data = (int *)XtCalloc(sw->sgraph.samples, sizeof(int)); GetGC(w); } @@ -174,7 +174,9 @@ Resize(Widget w) if (!XtIsRealized(w)) return; - sw->sgraph.size = w->core.width; + sw->sgraph.size = 2 * w->core.width; + if (sw->sgraph.size > sw->sgraph.samples) + sw->sgraph.size = sw->sgraph.samples; warnx("win: %dx%d", w->core.width, w->core.height); warnx("size: %zu", sw->sgraph.size); warnx("samples: %zu", sw->sgraph.samples); @@ -195,7 +197,7 @@ static void Redisplay(Widget w, XEvent *event, Region r) { SgraphWidget sw = (SgraphWidget)w; - Dimension i, x, y; + Dimension i, x, y, visible; XdbeSwapInfo swap; //Trace(w); @@ -203,7 +205,8 @@ Redisplay(Widget w, XEvent *event, Region r) if (!XtIsRealized(w)) return; - for (i = 0; i < sw->core.width - 1; i++) { + visible = sw->sgraph.size / 2; + for (i = 0; i < visible - 1; i++) { y = sw->sgraph.data[i]; if (sw->sgraph.mirror) x = sw->core.width - i; -- cgit v1.2.3