ui/motif/Grid.c

Mon, 29 Sep 2025 21:14:46 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Mon, 29 Sep 2025 21:14:46 +0200
changeset 779
b84cbe57e0bd
parent 752
08a2421957f1
child 900
6e1485d5451a
permissions
-rw-r--r--

change UiCellValue from struct to union and pass it as pointer to the onsave function, for better compatibility with other languages

406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
1 /*
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
3 *
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
4 * Copyright 2024 Olaf Wintermann. All rights reserved.
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
5 *
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
6 * Redistribution and use in source and binary forms, with or without
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
7 * modification, are permitted provided that the following conditions are met:
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
8 *
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
9 * 1. Redistributions of source code must retain the above copyright
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
10 * notice, this list of conditions and the following disclaimer.
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
11 *
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
12 * 2. Redistributions in binary form must reproduce the above copyright
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
13 * notice, this list of conditions and the following disclaimer in the
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
14 * documentation and/or other materials provided with the distribution.
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
15 *
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
26 * POSSIBILITY OF SUCH DAMAGE.
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
27 */
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
28
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
29 /*
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
30 *
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
31 */
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
32
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
33 #define _GNU_SOURCE
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
34 #include <stdio.h>
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
35 #include <stdlib.h>
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
36 #include <string.h>
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
37
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
38 #include "Grid.h"
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
39
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
40 #include <X11/Xlib.h>
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
41
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
42
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
43
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
44 static XtActionsRec actionslist[] = {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
45 {"getfocus",grid_getfocus},
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
46 {"loosefocus",grid_loosefocus},
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
47 {"NULL",NULL}
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
48 };
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
49
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
50 //static char defaultTranslations[] = "<BtnDown>: mousedown()\n";
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
51 static char defaultTranslations[] = "\
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
52 <EnterWindow>: getfocus()\n\
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
53 <LeaveWindow>: loosefocus()\n";
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
54
426
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
55 static XtResource resources[] =
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
56 {
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
57 {
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
58 gridColumnSpacing,
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
59 gridColumnSpacing,
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
60 XmRDimension,
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
61 sizeof (Dimension),
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
62 XtOffsetOf( GridRec,
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
63 mywidget.columnspacing),
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
64 XmRImmediate,
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
65 (XtPointer) 0
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
66 },
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
67 {
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
68 gridRowSpacing,
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
69 gridRowSpacing,
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
70 XmRDimension,
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
71 sizeof (Dimension),
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
72 XtOffsetOf( GridRec,
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
73 mywidget.rowspacing),
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
74 XmRImmediate,
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
75 (XtPointer) 0
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
76 },
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
77 {
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
78 gridMargin,
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
79 gridMargin,
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
80 XmRDimension,
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
81 sizeof (Dimension),
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
82 XtOffsetOf( GridRec,
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
83 mywidget.margin),
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
84 XmRImmediate,
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
85 (XtPointer) 0
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
86 }
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
87 };
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
88
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
89 ///*
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
90 static XtResource constraints[] =
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
91 {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
92 {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
93 gridColumn,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
94 gridColumn,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
95 XmRDimension,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
96 sizeof (Dimension),
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
97 XtOffsetOf( GridConstraintRec,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
98 grid.x),
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
99 XmRImmediate,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
100 (XtPointer) 0
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
101 },
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
102 {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
103 gridRow,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
104 gridRow,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
105 XmRDimension,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
106 sizeof (Dimension),
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
107 XtOffsetOf( GridConstraintRec,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
108 grid.y),
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
109 XmRImmediate,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
110 (XtPointer) 0
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
111 },
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
112 {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
113 gridColspan,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
114 gridColspan,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
115 XmRDimension,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
116 sizeof (Dimension),
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
117 XtOffsetOf( GridConstraintRec,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
118 grid.colspan),
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
119 XmRImmediate,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
120 (XtPointer) 0
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
121 },
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
122 {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
123 gridRowspan,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
124 gridRowspan,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
125 XmRDimension,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
126 sizeof (Dimension),
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
127 XtOffsetOf( GridConstraintRec,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
128 grid.rowspan),
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
129 XmRImmediate,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
130 (XtPointer) 0
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
131 },
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
132 {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
133 gridMarginLeft,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
134 gridMarginLeft,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
135 XmRDimension,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
136 sizeof (Dimension),
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
137 XtOffsetOf( GridConstraintRec,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
138 grid.margin_left),
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
139 XmRImmediate,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
140 (XtPointer) 0
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
141 },
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
142 {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
143 gridMarginRight,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
144 gridMarginRight,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
145 XmRDimension,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
146 sizeof (Dimension),
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
147 XtOffsetOf( GridConstraintRec,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
148 grid.margin_right),
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
149 XmRImmediate,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
150 (XtPointer) 0
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
151 },
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
152 {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
153 gridMarginTop,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
154 gridMarginTop,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
155 XmRDimension,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
156 sizeof (Dimension),
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
157 XtOffsetOf( GridConstraintRec,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
158 grid.margin_top),
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
159 XmRImmediate,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
160 (XtPointer) 0
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
161 },
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
162 {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
163 gridMarginBottom,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
164 gridMarginBottom,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
165 XmRDimension,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
166 sizeof (Dimension),
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
167 XtOffsetOf( GridConstraintRec,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
168 grid.margin_bottom),
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
169 XmRImmediate,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
170 (XtPointer) 0
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
171 },
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
172 {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
173 gridHExpand,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
174 gridHExpand,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
175 XmRBoolean,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
176 sizeof (Boolean),
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
177 XtOffsetOf( GridConstraintRec,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
178 grid.hexpand),
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
179 XmRImmediate,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
180 (XtPointer) 0
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
181 },
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
182 {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
183 gridVExpand,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
184 gridVExpand,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
185 XmRBoolean,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
186 sizeof (Boolean),
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
187 XtOffsetOf( GridConstraintRec,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
188 grid.vexpand),
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
189 XmRImmediate,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
190 (XtPointer) 0
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
191 },
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
192 {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
193 gridHFill,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
194 gridHFill,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
195 XmRBoolean,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
196 sizeof (Boolean),
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
197 XtOffsetOf( GridConstraintRec,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
198 grid.hfill),
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
199 XmRImmediate,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
200 (XtPointer) 0
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
201 },
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
202 {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
203 gridVFill,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
204 gridVFill,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
205 XmRBoolean,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
206 sizeof (Boolean),
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
207 XtOffsetOf( GridConstraintRec,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
208 grid.vfill),
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
209 XmRImmediate,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
210 (XtPointer) 0
433
605bb5dc34f1 implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 429
diff changeset
211 },
605bb5dc34f1 implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 429
diff changeset
212 {
605bb5dc34f1 implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 429
diff changeset
213 gridMinWidth,
605bb5dc34f1 implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 429
diff changeset
214 gridMinWidth,
605bb5dc34f1 implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 429
diff changeset
215 XmRDimension,
605bb5dc34f1 implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 429
diff changeset
216 sizeof (Dimension),
605bb5dc34f1 implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 429
diff changeset
217 XtOffsetOf( GridConstraintRec,
605bb5dc34f1 implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 429
diff changeset
218 grid.min_width),
605bb5dc34f1 implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 429
diff changeset
219 XmRImmediate,
605bb5dc34f1 implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 429
diff changeset
220 (XtPointer) 0
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
221 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
222 };
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
223 //*/
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
224
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
225 GridClassRec gridClassRec = {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
226 // Core Class
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
227 {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
228 //(WidgetClass)&constraintClassRec, // superclass
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
229 (WidgetClass)&xmManagerClassRec,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
230 "Grid", // class_name
426
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
231 sizeof(GridRec), // widget_size
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
232 grid_class_initialize, // class_initialize
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
233 NULL, // class_part_initialize
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
234 FALSE, // class_inited
426
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
235 (XtInitProc)grid_initialize, // initialize
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
236 NULL, // initialize_hook
426
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
237 grid_realize, // realize
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
238 actionslist, // actions
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
239 XtNumber(actionslist), // num_actions
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
240 resources, // resources
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
241 XtNumber(resources), // num_resources
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
242 NULLQUARK, // xrm_class
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
243 True, // compress_motion
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
244 True, // compress_exposure
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
245 True, // compress_enterleave
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
246 False, // visible_interest
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
247 (XtWidgetProc)grid_destroy, // destroy
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
248 (XtWidgetProc)grid_resize, // resize
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
249 (XtExposeProc)grid_expose, // expose
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
250 grid_set_values, // set_values
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
251 NULL, // set_values_hook
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
252 XtInheritSetValuesAlmost, // set_values_almost
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
253 NULL, // get_values_hook
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
254 (XtAcceptFocusProc)grid_acceptfocus, // accept_focus
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
255 XtVersion, // version
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
256 NULL, // callback_offsets
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
257 //NULL, // tm_table
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
258 defaultTranslations,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
259 XtInheritQueryGeometry, // query_geometry
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
260 NULL, // display_accelerator
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
261 NULL, // extension
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
262 },
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
263 // Composite Class
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
264 {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
265 GridGeometryManager, /* geometry_manager */
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
266 GridChangeManaged, /* change_managed */
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
267 XtInheritInsertChild, /* insert_child */
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
268 XtInheritDeleteChild, /* delete_child */
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
269 NULL, /* extension */
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
270 },
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
271 // Constraint Class
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
272 {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
273 constraints, /* resources */
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
274 XtNumber(constraints), /* num_resources */
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
275 sizeof(GridConstraintRec), /* constraint_size */
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
276 grid_constraint_init, /* initialize */
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
277 NULL, /* destroy */
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
278 ConstraintSetValues, /* set_values */
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
279 NULL, /* extension */
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
280 },
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
281 // XmManager Class
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
282 ///*
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
283 {
425
effdc7283337 fix Grid XmManager class fields
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 424
diff changeset
284 XtInheritTranslations,
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
285 NULL,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
286 0,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
287 NULL,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
288 0,
425
effdc7283337 fix Grid XmManager class fields
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 424
diff changeset
289 XmInheritParentProcess,
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
290 NULL
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
291 },
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
292 //*/
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
293 // MyWidget Class
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
294 {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
295 0
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
296 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
297 };
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
298
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
299 WidgetClass gridClass = (WidgetClass)&gridClassRec;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
300
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
301
752
08a2421957f1 fix motif build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 459
diff changeset
302 void grid_class_initialize(void) {
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
303
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
304 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
305 void grid_initialize(Widget request, Widget new, ArgList args, Cardinal num_args) {
752
08a2421957f1 fix motif build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 459
diff changeset
306 Grid mn = (Grid)new;
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
307
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
308 mn->mywidget.max_col = 0;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
309 mn->mywidget.max_row = 0;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
310
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
311 }
752
08a2421957f1 fix motif build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 459
diff changeset
312 void grid_realize(Widget w,XtValueMask *valueMask,XSetWindowAttributes *attributes) {
08a2421957f1 fix motif build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 459
diff changeset
313 Grid grid = (Grid)w;
08a2421957f1 fix motif build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 459
diff changeset
314 XtMakeResizeRequest(w, 400, 400, NULL, NULL);
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
315 (coreClassRec.core_class.realize)((Widget)w, valueMask, attributes);
752
08a2421957f1 fix motif build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 459
diff changeset
316 grid_place_children(grid);
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
317 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
318
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
319
752
08a2421957f1 fix motif build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 459
diff changeset
320 void grid_destroy(Grid widget) {
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
321
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
322 }
752
08a2421957f1 fix motif build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 459
diff changeset
323 void grid_resize(Grid widget) {
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
324 grid_place_children(widget);
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
325 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
326
752
08a2421957f1 fix motif build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 459
diff changeset
327 void grid_expose(Grid widget, XEvent *event, Region region) {
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
328
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
329 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
330
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
331
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
332 Boolean grid_set_values(Widget old, Widget request, Widget neww, ArgList args, Cardinal *num_args) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
333 return False;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
334 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
335
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
336 Boolean grid_acceptfocus(Widget w, Time *t) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
337
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
338 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
339
752
08a2421957f1 fix motif build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 459
diff changeset
340 void grid_getfocus(Widget myw, XEvent *event, String *params, Cardinal *nparam) {
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
341
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
342 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
343
752
08a2421957f1 fix motif build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 459
diff changeset
344 void grid_loosefocus(Widget myw, XEvent *event, String *params, Cardinal *nparam) {
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
345
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
346 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
347
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
348
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
349
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
350 XtGeometryResult GridGeometryManager(Widget widget, XtWidgetGeometry *request, XtWidgetGeometry *reply) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
351 GridRec *grid = (GridRec*)XtParent(widget);
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
352 GridConstraintRec *constraints = widget->core.constraints;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
353 //XtVaSetValues(widget, XmNwidth, request->width, XmNheight, request->height, NULL);
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
354 if((request->request_mode & CWWidth) == CWWidth) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
355 widget->core.width = request->width;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
356 constraints->grid.pref_width = request->width;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
357 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
358 if((request->request_mode & CWHeight) == CWHeight) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
359 widget->core.height = request->height;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
360 constraints->grid.pref_height = request->height;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
361 }
752
08a2421957f1 fix motif build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 459
diff changeset
362 grid_place_children((Grid)XtParent(widget));
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
363 return XtGeometryYes;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
364 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
365
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
366 void GridChangeManaged(Widget widget) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
367
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
368 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
369
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
370 Boolean ConstraintSetValues(Widget old, Widget request, Widget neww, ArgList args, Cardinal *num_args) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
371 GridConstraintRec *constraints = neww->core.constraints;
752
08a2421957f1 fix motif build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 459
diff changeset
372 Grid grid = (Grid)XtParent(neww);
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
373 if(constraints->grid.x > grid->mywidget.max_col) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
374 grid->mywidget.max_col = constraints->grid.x;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
375 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
376 if(constraints->grid.y > grid->mywidget.max_row) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
377 grid->mywidget.max_row = constraints->grid.y;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
378 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
379 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
380
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
381
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
382 void grid_constraint_init(
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
383 Widget request,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
384 Widget neww,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
385 ArgList args,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
386 Cardinal* num_args
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
387 )
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
388 {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
389 GridConstraintRec *constraints = neww->core.constraints;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
390
752
08a2421957f1 fix motif build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 459
diff changeset
391 Grid grid = (Grid)XtParent(neww);
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
392 if(constraints->grid.x > grid->mywidget.max_col) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
393 grid->mywidget.max_col = constraints->grid.x;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
394 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
395 if(constraints->grid.y > grid->mywidget.max_row) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
396 grid->mywidget.max_row = constraints->grid.y;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
397 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
398 constraints->grid.pref_width = neww->core.width;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
399 constraints->grid.pref_height = neww->core.height;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
400 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
401
752
08a2421957f1 fix motif build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 459
diff changeset
402 void grid_place_children(Grid w) {
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
403 int ncols = w->mywidget.max_col+1;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
404 int nrows = w->mywidget.max_row+1;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
405 GridDef *cols = calloc(ncols, sizeof(GridDef));
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
406 GridDef *rows = calloc(nrows, sizeof(GridDef));
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
407 int num_cols_expanding = 0;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
408 int num_rows_expanding = 0;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
409 int req_width = 0;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
410 int req_height = 0;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
411
424
51e856688fba add form widget to a window to fix layout problems (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 408
diff changeset
412 //printf("container width: %d\n", (int)w->core.width);
51e856688fba add form widget to a window to fix layout problems (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 408
diff changeset
413
408
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
414 // calculate the minimum size requirements for all columns and rows
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
415 // we need to run this 2 times: for widgets without colspan/rowspan first
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
416 // and then again for colspan/rowspan > 1
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
417 int span_max = 1;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
418 for(int r=0;r<2;r++) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
419 for(int i=0;i<w->composite.num_children;i++) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
420 Widget child = w->composite.children[i];
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
421 GridConstraintRec *constraints = child->core.constraints;
429
0921f8a5d535 implement progressbar (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 426
diff changeset
422 if(constraints->grid.pref_width == 0) {
0921f8a5d535 implement progressbar (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 426
diff changeset
423 constraints->grid.pref_width = child->core.width;
0921f8a5d535 implement progressbar (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 426
diff changeset
424 }
0921f8a5d535 implement progressbar (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 426
diff changeset
425 if(constraints->grid.pref_height == 0) {
0921f8a5d535 implement progressbar (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 426
diff changeset
426 constraints->grid.pref_height = child->core.height;
0921f8a5d535 implement progressbar (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 426
diff changeset
427 }
433
605bb5dc34f1 implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 429
diff changeset
428 if(constraints->grid.pref_width < constraints->grid.min_width) {
605bb5dc34f1 implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 429
diff changeset
429 constraints->grid.pref_width = constraints->grid.min_width;
605bb5dc34f1 implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 429
diff changeset
430 }
408
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
431
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
432 if(constraints->grid.colspan > span_max || constraints->grid.rowspan > span_max) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
433 continue;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
434 }
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
435
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
436 int x = constraints->grid.x;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
437 int y = constraints->grid.y;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
438 // make sure ncols/nrows is correct
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
439 // errors shouldn't happen, unless someone messes up the grid internals
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
440 if(x >= ncols) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
441 fprintf(stderr, "Error: widget x out of bounds\n");
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
442 continue;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
443 }
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
444 if(y >= nrows) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
445 fprintf(stderr, "Error: widget y out of bounds\n");
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
446 continue;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
447 }
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
448 GridDef *col = &cols[x];
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
449 GridDef *row = &rows[y];
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
450
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
451 if(constraints->grid.hexpand) {
408
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
452 if(constraints->grid.colspan > 1) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
453 // check if any column in the span is expanding
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
454 // if not, make the last column expanding
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
455 GridDef *last_col = col;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
456 for(int c=x;c<ncols;c++) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
457 last_col = &cols[c];
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
458 if(last_col->expand) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
459 break;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
460 }
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
461 }
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
462 last_col->expand = TRUE;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
463 } else {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
464 col->expand = TRUE;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
465 }
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
466 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
467 if(constraints->grid.vexpand) {
408
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
468 if(constraints->grid.rowspan > 1) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
469 GridDef *last_row = row;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
470 for(int c=x;c<nrows;c++) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
471 last_row = &rows[c];
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
472 if(last_row->expand) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
473 break;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
474 }
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
475 }
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
476 last_row->expand = TRUE;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
477 } else {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
478 row->expand = TRUE;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
479 }
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
480 }
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
481
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
482 // column size
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
483 if(constraints->grid.colspan > 1) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
484 // check size of all columns in span
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
485 Dimension span_width = col->size;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
486 GridDef *last_col = col;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
487 for(int s=x+1;s<ncols;s++) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
488 last_col = &cols[s];
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
489 span_width = last_col->size;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
490
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
491 }
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
492 int diff = constraints->grid.pref_width - span_width;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
493 if(diff > 0) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
494 last_col->size += diff;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
495 }
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
496 } else if(constraints->grid.pref_width > col->size) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
497 col->size = constraints->grid.pref_width;
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
498 }
408
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
499 // row size
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
500 if(constraints->grid.rowspan > 1) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
501 Dimension span_height = row->size;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
502 GridDef *last_row = row;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
503 for(int s=x+1;s<nrows;s++) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
504 last_row = &rows[s];
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
505 span_height = last_row->size;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
506
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
507 }
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
508 int diff = constraints->grid.pref_height - span_height;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
509 if(diff > 0) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
510 last_row->size += diff;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
511 }
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
512 } else if(constraints->grid.pref_height > row->size) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
513 row->size = constraints->grid.pref_height;
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
514 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
515 }
408
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
516 span_max = 50000; // not sure if this is unreasonable low or high
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
517 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
518
426
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
519 // calc required size
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
520 for(int i=0;i<ncols;i++) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
521 if(cols[i].expand) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
522 num_cols_expanding++;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
523 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
524 req_width += cols[i].size;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
525 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
526 for(int i=0;i<nrows;i++) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
527 if(rows[i].expand) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
528 num_rows_expanding++;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
529 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
530 req_height += rows[i].size;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
531 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
532
407
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
533 if(req_width > 0 && req_height > 0) {
426
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
534 // add col/row spacing
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
535 req_width += (ncols-1)*w->mywidget.columnspacing;
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
536 req_height += (nrows-1)*w->mywidget.rowspacing;
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
537
407
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
538 Widget parent = w->core.parent;
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
539 Dimension rwidth = req_width;
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
540 Dimension rheight = req_height;
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
541 if(rwidth < w->core.width) {
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
542 //rwidth = w->core.width;
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
543 }
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
544 if(rheight < w->core.height) {
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
545 //rheight = w->core.height;
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
546 }
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
547
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
548 if(!w->mywidget.sizerequest) {
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
549 Dimension actual_width, actual_height;
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
550 w->mywidget.sizerequest = TRUE;
424
51e856688fba add form widget to a window to fix layout problems (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 408
diff changeset
551
459
4ea4bb379273 limit textarea width (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 433
diff changeset
552 //printf("sizerequest: %d x %d\n", (int)req_width, (int)req_height);
4ea4bb379273 limit textarea width (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 433
diff changeset
553
424
51e856688fba add form widget to a window to fix layout problems (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 408
diff changeset
554 //XtWidgetGeometry request;
51e856688fba add form widget to a window to fix layout problems (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 408
diff changeset
555 //request.width = req_width;
51e856688fba add form widget to a window to fix layout problems (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 408
diff changeset
556 //request.request_mode = CWWidth;
51e856688fba add form widget to a window to fix layout problems (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 408
diff changeset
557 //XtWidgetGeometry reply;
51e856688fba add form widget to a window to fix layout problems (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 408
diff changeset
558 //XtGeometryResult result = XtMakeGeometryRequest((Widget)w, &request, &reply);
51e856688fba add form widget to a window to fix layout problems (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 408
diff changeset
559
407
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
560 XtMakeResizeRequest((Widget)w, req_width, req_height, &actual_width, &actual_height);
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
561 w->mywidget.sizerequest = FALSE;
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
562 //printf("size request: %d %d\n", (int)actual_width, (int)actual_height);
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
563 }
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
564
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
565
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
566
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
567 }
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
568
426
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
569 // how much space can we add to each expanding col/row
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
570 int hexpand = 0;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
571 int width_diff = (int)w->core.width - req_width;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
572 int hexpand2 = 0;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
573 if(width_diff > 0 && num_cols_expanding > 0) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
574 hexpand = width_diff / num_cols_expanding;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
575 hexpand2 = width_diff-hexpand*num_cols_expanding;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
576 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
577 int x = 0;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
578 for(int i=0;i<ncols;i++) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
579 cols[i].pos = x;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
580 if(cols[i].expand) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
581 cols[i].size += hexpand + hexpand2;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
582 }
426
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
583 x += cols[i].size + w->mywidget.columnspacing;
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
584
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
585 hexpand2 = 0;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
586 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
587
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
588 int vexpand = 0;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
589 int height_diff = (int)w->core.height - req_height;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
590 int vexpand2 = 0;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
591 if(height_diff > 0 && num_rows_expanding > 0) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
592 vexpand = height_diff / num_rows_expanding;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
593 vexpand2 = height_diff-vexpand*num_rows_expanding;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
594 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
595 int y = 0;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
596 for(int i=0;i<nrows;i++) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
597 rows[i].pos = y;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
598 if(rows[i].expand) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
599 rows[i].size += vexpand + vexpand2;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
600 }
426
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
601 y += rows[i].size += w->mywidget.rowspacing;
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
602
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
603 vexpand2 = 0;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
604 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
605
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
606 for(int i=0;i<w->composite.num_children;i++) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
607 Widget child = w->composite.children[i];
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
608 GridConstraintRec *constraints = child->core.constraints;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
609 GridDef c = cols[constraints->grid.x];
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
610 GridDef r = rows[constraints->grid.y];
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
611 int x = c.pos;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
612 int y = r.pos;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
613 int width = constraints->grid.pref_width;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
614 int height = constraints->grid.pref_height;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
615 if(constraints->grid.hfill) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
616 if(constraints->grid.colspan > 1) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
617 Dimension cwidth = 0;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
618 for(int j=0;j<constraints->grid.colspan;j++) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
619 if(constraints->grid.x+j < ncols) {
426
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
620 cwidth += cols[constraints->grid.x+j].size + (j > 0 ? w->mywidget.columnspacing : 0);
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
621 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
622 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
623 width = cwidth;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
624 } else {
426
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
625 width = c.size - w->mywidget.columnspacing;
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
626 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
627 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
628 if(constraints->grid.vfill) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
629 if(constraints->grid.rowspan > 1) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
630 Dimension cheight = 0;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
631 for(int j=0;j<constraints->grid.rowspan;j++) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
632 if(constraints->grid.y+j < nrows) {
426
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
633 cheight += rows[constraints->grid.y+j].size + (j > 0 ? w->mywidget.rowspacing : 0);
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
634 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
635 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
636 height = cheight;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
637 } else {
426
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
638 height = r.size - w->mywidget.rowspacing;
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
639 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
640 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
641
429
0921f8a5d535 implement progressbar (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 426
diff changeset
642 if(width > 0 && height > 0) {
0921f8a5d535 implement progressbar (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 426
diff changeset
643 XtConfigureWidget(child, x, y, width, height, child->core.border_width);
0921f8a5d535 implement progressbar (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 426
diff changeset
644 }
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
645 //printf("child %d %d - %d %d\n", (int)child->core.x, (int)child->core.y, (int)child->core.width, (int)child->core.height);
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
646 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
647
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
648 free(cols);
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
649 free(rows);
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
650 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
651

mercurial