aboutsummaryrefslogtreecommitdiff
path: root/Display.c
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2014-09-29 11:19:47 +0000
committerDimitri Sokolyuk <demon@dim13.org>2014-09-29 11:19:47 +0000
commit068539d8dbe1259e9d3fd6d199f8ffabb2e044b3 (patch)
treeb7a475c3d0fc32b8ae23a84ad69685c798b03bcb /Display.c
parent6e1f4abab272d451f3a5ce3824eda832ffba107b (diff)
semi-working prototype
Diffstat (limited to 'Display.c')
-rw-r--r--Display.c42
1 files changed, 37 insertions, 5 deletions
diff --git a/Display.c b/Display.c
index 08488df..c8d866b 100644
--- a/Display.c
+++ b/Display.c
@@ -13,11 +13,15 @@ static void Initialize(Widget, Widget, ArgList, Cardinal *);
static XtGeometryResult GeometryManager(Widget, XtWidgetGeometry *, XtWidgetGeometry *);
static void ChangeManaged(Widget);
static void Resize(Widget);
+static void Redisplay(Widget, XEvent *, Region);
+static Boolean SetValues(Widget, Widget, Widget, ArgList, Cardinal *);
#define Offset(field) XtOffsetOf(DisplayRec, display.field)
static XtResource resources[] = {
{ XtNspace, XtCSpace, XtRDimension, sizeof(Dimension),
Offset(space), XtRImmediate, (XtPointer)2 },
+ { XtNdata, XtCData, XtRPointer, sizeof(int **),
+ Offset(data), XtRPointer, NULL },
};
#undef Offset
@@ -53,8 +57,9 @@ DisplayClassRec displayClassRec = {
.visible_interest = False,
.destroy = NULL,
.resize = Resize,
- .expose = XtInheritExpose,
- .set_values = NULL,
+ //.expose = XtInheritExpose,
+ .expose = Redisplay,
+ .set_values = SetValues,
.set_values_hook = NULL,
.set_values_almost = XtInheritSetValuesAlmost,
.get_values_hook = NULL,
@@ -101,18 +106,25 @@ ChangeManaged(Widget w)
DisplayWidget dw = (DisplayWidget)w;
Dimension width, height;
Widget child;
+ int **data;
int i;
+ Arg arg;
warnx("Change Managed %s", XtClass(w)->core_class.class_name);
width = w->core.width;
height = w->core.height;
+ data = (int **)XtRealloc((char *)dw->display.data, dw->composite.num_children * sizeof(int *));
+ dw->display.data = data;
+
for (i = 0; i < dw->composite.num_children; i++) {
child = dw->composite.children[i];
- XtMoveWidget(child,
- width + dw->display.space, dw->display.space);
if (XtIsManaged(child)) {
+ XtSetArg(arg, XtNdata, &dw->display.data[i]);
+ XtGetValues(child, &arg, 1);
+ XtMoveWidget(child,
+ width + dw->display.space, dw->display.space);
width += child->core.width
+ 2 * child->core.border_width
+ 2 * dw->display.space;
@@ -134,7 +146,7 @@ Resize(Widget w)
int n = dw->composite.num_children;
int i;
- width = (w->core.width - 2 * dw->display.space) / n;
+ width = w->core.width / n - (n + 1) * dw->display.space;
height = w->core.height - 2 * dw->display.space;
Printd(w, "Resize");
@@ -150,3 +162,23 @@ Resize(Widget w)
}
}
}
+
+static void
+Redisplay(Widget w, XEvent *event, Region region)
+{
+ DisplayWidget dw = (DisplayWidget)w;
+ Widget child;
+ int i;
+
+ for (i = 0; i < dw->composite.num_children; i++) {
+ child = dw->composite.children[i];
+ if (XtIsManaged(child))
+ XtClass(child)->core_class.expose(child, event, region);
+ }
+}
+
+static Boolean
+SetValues(Widget old, Widget req, Widget new, ArgList args, Cardinal *n)
+{
+ return True;
+}