ui/motif/Grid.c

Sat, 04 Jul 2026 17:46:17 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Sat, 04 Jul 2026 17:46:17 +0200
changeset 1217
c1d4c331c28b
parent 921
c2b318b93062
permissions
-rw-r--r--

small fixes in the motif grid widget

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,
921
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
63 grid.columnspacing),
426
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,
921
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
73 grid.rowspacing),
426
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 {
901
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
78 gridPaddingLeft,
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
79 gridPaddingLeft,
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
80 XmRDimension,
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
81 sizeof (Dimension),
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
82 XtOffsetOf( GridRec,
921
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
83 grid.padding_left),
901
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
84 XmRImmediate,
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
85 (XtPointer) 0
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
86 },
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
87 {
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
88 gridPaddingRight,
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
89 gridPaddingRight,
426
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
90 XmRDimension,
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
91 sizeof (Dimension),
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
92 XtOffsetOf( GridRec,
921
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
93 grid.padding_right),
901
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
94 XmRImmediate,
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
95 (XtPointer) 0
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
96 },
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
97 {
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
98 gridPaddingTop,
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
99 gridPaddingTop,
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
100 XmRDimension,
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
101 sizeof (Dimension),
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
102 XtOffsetOf( GridRec,
921
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
103 grid.padding_top),
901
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
104 XmRImmediate,
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
105 (XtPointer) 0
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
106 },
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
107 {
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
108 gridPaddingBottom,
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
109 gridPaddingBottom,
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
110 XmRDimension,
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
111 sizeof (Dimension),
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
112 XtOffsetOf( GridRec,
921
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
113 grid.padding_bottom),
426
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
114 XmRImmediate,
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
115 (XtPointer) 0
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
116 }
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
117 };
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
118
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
119 ///*
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
120 static XtResource constraints[] =
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 gridColumn,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
124 gridColumn,
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.x),
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 gridRow,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
134 gridRow,
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.y),
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 gridColspan,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
144 gridColspan,
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.colspan),
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 gridRowspan,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
154 gridRowspan,
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.rowspan),
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 gridMarginLeft,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
164 gridMarginLeft,
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_left),
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 gridMarginRight,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
174 gridMarginRight,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
175 XmRDimension,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
176 sizeof (Dimension),
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.margin_right),
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 gridMarginTop,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
184 gridMarginTop,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
185 XmRDimension,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
186 sizeof (Dimension),
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.margin_top),
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 gridMarginBottom,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
194 gridMarginBottom,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
195 XmRDimension,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
196 sizeof (Dimension),
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.margin_bottom),
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 gridHExpand,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
204 gridHExpand,
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.hexpand),
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
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
211 },
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
212 {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
213 gridVExpand,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
214 gridVExpand,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
215 XmRBoolean,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
216 sizeof (Boolean),
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
217 XtOffsetOf( GridConstraintRec,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
218 grid.vexpand),
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
219 XmRImmediate,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
220 (XtPointer) 0
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 gridHFill,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
224 gridHFill,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
225 XmRBoolean,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
226 sizeof (Boolean),
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
227 XtOffsetOf( GridConstraintRec,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
228 grid.hfill),
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
229 XmRImmediate,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
230 (XtPointer) 0
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
231 },
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
232 {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
233 gridVFill,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
234 gridVFill,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
235 XmRBoolean,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
236 sizeof (Boolean),
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
237 XtOffsetOf( GridConstraintRec,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
238 grid.vfill),
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
239 XmRImmediate,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
240 (XtPointer) 0
433
605bb5dc34f1 implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 429
diff changeset
241 },
605bb5dc34f1 implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 429
diff changeset
242 {
605bb5dc34f1 implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 429
diff changeset
243 gridMinWidth,
605bb5dc34f1 implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 429
diff changeset
244 gridMinWidth,
605bb5dc34f1 implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 429
diff changeset
245 XmRDimension,
605bb5dc34f1 implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 429
diff changeset
246 sizeof (Dimension),
605bb5dc34f1 implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 429
diff changeset
247 XtOffsetOf( GridConstraintRec,
605bb5dc34f1 implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 429
diff changeset
248 grid.min_width),
605bb5dc34f1 implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 429
diff changeset
249 XmRImmediate,
605bb5dc34f1 implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 429
diff changeset
250 (XtPointer) 0
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
251 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
252 };
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
253 //*/
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
254
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
255 GridClassRec gridClassRec = {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
256 // Core Class
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
257 {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
258 //(WidgetClass)&constraintClassRec, // superclass
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
259 (WidgetClass)&xmManagerClassRec,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
260 "Grid", // class_name
426
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
261 sizeof(GridRec), // widget_size
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
262 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
263 NULL, // class_part_initialize
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
264 FALSE, // class_inited
426
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
265 (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
266 NULL, // initialize_hook
426
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
267 grid_realize, // realize
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
268 actionslist, // actions
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
269 XtNumber(actionslist), // num_actions
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
270 resources, // resources
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
271 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
272 NULLQUARK, // xrm_class
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
273 True, // compress_motion
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
274 True, // compress_exposure
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
275 True, // compress_enterleave
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
276 False, // visible_interest
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
277 (XtWidgetProc)grid_destroy, // destroy
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
278 (XtWidgetProc)grid_resize, // resize
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
279 (XtExposeProc)grid_expose, // expose
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
280 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
281 NULL, // set_values_hook
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
282 XtInheritSetValuesAlmost, // set_values_almost
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
283 NULL, // get_values_hook
1217
c1d4c331c28b small fixes in the motif grid widget
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 921
diff changeset
284 (XtAcceptFocusProc)NULL, // accept_focus
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
285 XtVersion, // version
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
286 NULL, // callback_offsets
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
287 //NULL, // tm_table
1217
c1d4c331c28b small fixes in the motif grid widget
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 921
diff changeset
288 XtInheritTranslations, //defaultTranslations,
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
289 XtInheritQueryGeometry, // query_geometry
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
290 NULL, // display_accelerator
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
291 NULL, // extension
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 // Composite 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 GridGeometryManager, /* geometry_manager */
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
296 GridChangeManaged, /* change_managed */
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
297 XtInheritInsertChild, /* insert_child */
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
298 XtInheritDeleteChild, /* delete_child */
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
299 NULL, /* extension */
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 // Constraint Class
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
302 {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
303 constraints, /* resources */
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
304 XtNumber(constraints), /* num_resources */
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
305 sizeof(GridConstraintRec), /* constraint_size */
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
306 grid_constraint_init, /* initialize */
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
307 NULL, /* destroy */
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
308 ConstraintSetValues, /* set_values */
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
309 NULL, /* extension */
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 // XmManager Class
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
312 ///*
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
313 {
425
effdc7283337 fix Grid XmManager class fields
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 424
diff changeset
314 XtInheritTranslations,
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
315 NULL,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
316 0,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
317 NULL,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
318 0,
425
effdc7283337 fix Grid XmManager class fields
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 424
diff changeset
319 XmInheritParentProcess,
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
320 NULL
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 //*/
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
323 // MyWidget Class
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
324 {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
325 0
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
326 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
327 };
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 WidgetClass gridClass = (WidgetClass)&gridClassRec;
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
752
08a2421957f1 fix motif build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 459
diff changeset
332 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
333
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 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
336 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
337
921
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
338 mn->grid.max_col = 0;
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
339 mn->grid.max_row = 0;
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
340
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
341 }
752
08a2421957f1 fix motif build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 459
diff changeset
342 void grid_realize(Widget w,XtValueMask *valueMask,XSetWindowAttributes *attributes) {
08a2421957f1 fix motif build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 459
diff changeset
343 Grid grid = (Grid)w;
08a2421957f1 fix motif build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 459
diff changeset
344 XtMakeResizeRequest(w, 400, 400, NULL, NULL);
1217
c1d4c331c28b small fixes in the motif grid widget
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 921
diff changeset
345 (*xmManagerClassRec.core_class.realize)(w, valueMask, attributes);
752
08a2421957f1 fix motif build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 459
diff changeset
346 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
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
752
08a2421957f1 fix motif build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 459
diff changeset
350 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
351
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
352 }
752
08a2421957f1 fix motif build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 459
diff changeset
353 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
354 grid_place_children(widget);
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
355 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
356
752
08a2421957f1 fix motif build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 459
diff changeset
357 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
358
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
359 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
360
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
361
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
362 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
363 return False;
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
752
08a2421957f1 fix motif build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 459
diff changeset
367 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
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
752
08a2421957f1 fix motif build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 459
diff changeset
371 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
372
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
373 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
374
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
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
377 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
378 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
379 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
380 //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
381 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
382 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
383 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
384 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
385 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
386 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
387 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
388 }
752
08a2421957f1 fix motif build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 459
diff changeset
389 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
390 return XtGeometryYes;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
391 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
392
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
393 void GridChangeManaged(Widget widget) {
921
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
394 grid_place_children((Grid)widget);
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
395 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
396
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
397 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
398 GridConstraintRec *constraints = neww->core.constraints;
752
08a2421957f1 fix motif build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 459
diff changeset
399 Grid grid = (Grid)XtParent(neww);
921
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
400 if(constraints->grid.x > grid->grid.max_col) {
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
401 grid->grid.max_col = constraints->grid.x;
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
402 }
921
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
403 if(constraints->grid.y > grid->grid.max_row) {
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
404 grid->grid.max_row = constraints->grid.y;
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
405 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
406 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
407
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
408
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
409 void grid_constraint_init(
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
410 Widget request,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
411 Widget neww,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
412 ArgList args,
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
413 Cardinal* num_args
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
414 )
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
415 {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
416 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
417
752
08a2421957f1 fix motif build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 459
diff changeset
418 Grid grid = (Grid)XtParent(neww);
921
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
419 if(constraints->grid.x > grid->grid.max_col) {
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
420 grid->grid.max_col = constraints->grid.x;
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
421 }
921
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
422 if(constraints->grid.y > grid->grid.max_row) {
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
423 grid->grid.max_row = constraints->grid.y;
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
424 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
425 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
426 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
427 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
428
752
08a2421957f1 fix motif build
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 459
diff changeset
429 void grid_place_children(Grid w) {
921
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
430 if(!XtIsRealized((Widget)w)) {
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
431 return;
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
432 }
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
433
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
434 int ncols = w->grid.max_col+1;
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
435 int nrows = w->grid.max_row+1;
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
436 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
437 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
438 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
439 int num_rows_expanding = 0;
921
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
440 int req_width = w->grid.padding_left + w->grid.padding_right;
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
441 int req_height = w->grid.padding_top + w->grid.padding_bottom;
913
3012ec57d84a fix grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 901
diff changeset
442 int width = w->core.width;
3012ec57d84a fix grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 901
diff changeset
443 int height = w->core.height;
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
444
424
51e856688fba add form widget to a window to fix layout problems (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 408
diff changeset
445 //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
446
408
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
447 // 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
448 // 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
449 // and then again for colspan/rowspan > 1
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
450 int span_max = 1;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
451 for(int r=0;r<2;r++) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
452 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
453 Widget child = w->composite.children[i];
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
454 GridConstraintRec *constraints = child->core.constraints;
429
0921f8a5d535 implement progressbar (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 426
diff changeset
455 if(constraints->grid.pref_width == 0) {
0921f8a5d535 implement progressbar (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 426
diff changeset
456 constraints->grid.pref_width = child->core.width;
0921f8a5d535 implement progressbar (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 426
diff changeset
457 }
0921f8a5d535 implement progressbar (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 426
diff changeset
458 if(constraints->grid.pref_height == 0) {
0921f8a5d535 implement progressbar (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 426
diff changeset
459 constraints->grid.pref_height = child->core.height;
0921f8a5d535 implement progressbar (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 426
diff changeset
460 }
433
605bb5dc34f1 implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 429
diff changeset
461 if(constraints->grid.pref_width < constraints->grid.min_width) {
605bb5dc34f1 implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 429
diff changeset
462 constraints->grid.pref_width = constraints->grid.min_width;
605bb5dc34f1 implement progress spinner (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 429
diff changeset
463 }
901
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
464 int elm_width = constraints->grid.pref_width + constraints->grid.margin_left + constraints->grid.margin_right;
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
465 int elm_height = constraints->grid.pref_height + constraints->grid.margin_top + constraints->grid.margin_bottom;
921
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
466 if(!XtIsManaged(child)) {
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
467 elm_width = 0;
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
468 elm_height = 0;
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
469 }
408
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
470
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
471 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
472 continue;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
473 }
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 int x = constraints->grid.x;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
476 int y = constraints->grid.y;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
477 // make sure ncols/nrows is correct
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
478 // 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
479 if(x >= ncols) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
480 fprintf(stderr, "Error: widget x out of bounds\n");
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
481 continue;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
482 }
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
483 if(y >= nrows) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
484 fprintf(stderr, "Error: widget y out of bounds\n");
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
485 continue;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
486 }
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
487 GridDef *col = &cols[x];
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
488 GridDef *row = &rows[y];
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
489
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
490 if(constraints->grid.hexpand) {
408
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
491 if(constraints->grid.colspan > 1) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
492 // check if any column in the span is expanding
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
493 // if not, make the last column expanding
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
494 GridDef *last_col = col;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
495 for(int c=x;c<ncols;c++) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
496 last_col = &cols[c];
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
497 if(last_col->expand) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
498 break;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
499 }
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
500 }
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
501 last_col->expand = TRUE;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
502 } else {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
503 col->expand = TRUE;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
504 }
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
505 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
506 if(constraints->grid.vexpand) {
408
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
507 if(constraints->grid.rowspan > 1) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
508 GridDef *last_row = row;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
509 for(int c=x;c<nrows;c++) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
510 last_row = &rows[c];
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
511 if(last_row->expand) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
512 break;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
513 }
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
514 }
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
515 last_row->expand = TRUE;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
516 } else {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
517 row->expand = TRUE;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
518 }
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
519 }
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
520
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
521 // column size
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
522 if(constraints->grid.colspan > 1) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
523 // check size of all columns in span
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
524 Dimension span_width = col->size;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
525 GridDef *last_col = col;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
526 for(int s=x+1;s<ncols;s++) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
527 last_col = &cols[s];
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
528 span_width = last_col->size;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
529
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
530 }
901
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
531 int diff = elm_width - span_width;
408
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
532 if(diff > 0) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
533 last_col->size += diff;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
534 }
901
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
535 } else if(elm_width > col->size) {
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
536 col->size = elm_width;
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
537 }
408
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
538 // row size
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
539 if(constraints->grid.rowspan > 1) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
540 Dimension span_height = row->size;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
541 GridDef *last_row = row;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
542 for(int s=x+1;s<nrows;s++) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
543 last_row = &rows[s];
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
544 span_height = last_row->size;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
545
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
546 }
901
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
547 int diff = elm_height - span_height;
408
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
548 if(diff > 0) {
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
549 last_row->size += diff;
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
550 }
901
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
551 } else if(elm_height > row->size) {
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
552 row->size = elm_height;
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
553 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
554 }
408
b06e43f1edd4 fix grid colspan/rowspan
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 407
diff changeset
555 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
556 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
557
426
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
558 // calc required size
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
559 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
560 if(cols[i].expand) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
561 num_cols_expanding++;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
562 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
563 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
564 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
565 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
566 if(rows[i].expand) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
567 num_rows_expanding++;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
568 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
569 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
570 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
571
921
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
572 int total_colspacing = 0;
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
573 int total_rowspacing = 0;
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
574 for(int i=0;i+1<ncols;i++) {
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
575 if(cols[i].size > 0) {
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
576 total_colspacing += w->grid.columnspacing;
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
577 }
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
578 }
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
579 for(int i=0;i+1<nrows;i++) {
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
580 if(rows[i].size > 0) {
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
581 total_rowspacing += w->grid.rowspacing;
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
582 }
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
583 }
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
584
407
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
585 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
586 // add col/row spacing
921
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
587 req_width += total_colspacing; //(ncols-1)*w->grid.columnspacing;
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
588 req_height += total_rowspacing; //(nrows-1)*w->grid.rowspacing;
426
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
589
407
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
590 Widget parent = w->core.parent;
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
591 Dimension rwidth = req_width;
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
592 Dimension rheight = req_height;
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
593 if(rwidth < w->core.width) {
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
594 //rwidth = w->core.width;
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
595 }
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
596 if(rheight < w->core.height) {
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
597 //rheight = w->core.height;
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
598 }
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
599
921
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
600 if(!w->grid.sizerequest) {
407
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
601 Dimension actual_width, actual_height;
921
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
602 w->grid.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
603
459
4ea4bb379273 limit textarea width (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 433
diff changeset
604 //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
605
424
51e856688fba add form widget to a window to fix layout problems (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 408
diff changeset
606 //XtWidgetGeometry request;
51e856688fba add form widget to a window to fix layout problems (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 408
diff changeset
607 //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
608 //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
609 //XtWidgetGeometry reply;
51e856688fba add form widget to a window to fix layout problems (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 408
diff changeset
610 //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
611
407
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
612 XtMakeResizeRequest((Widget)w, req_width, req_height, &actual_width, &actual_height);
921
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
613 w->grid.sizerequest = FALSE;
407
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
614 //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
615 }
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
616
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
617
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
618
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
619 }
8ea123dd89db semi functional grid container (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 406
diff changeset
620
426
3eb26df703bf implement Grid col/row spacing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 425
diff changeset
621 // 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
622 int hexpand = 0;
913
3012ec57d84a fix grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 901
diff changeset
623 int width_diff = width - req_width;
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
624 int hexpand2 = 0;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
625 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
626 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
627 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
628 }
921
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
629 int x = w->grid.padding_left;
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
630 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
631 cols[i].pos = x;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
632 if(cols[i].expand) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
633 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
634 }
921
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
635 if(cols[i].size > 0) {
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
636 x += cols[i].size + w->grid.columnspacing;
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
637 }
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
638
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
639 hexpand2 = 0;
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
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
642 int vexpand = 0;
913
3012ec57d84a fix grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 901
diff changeset
643 int height_diff = height - req_height;
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
644 int vexpand2 = 0;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
645 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
646 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
647 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
648 }
921
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
649 int y = w->grid.padding_bottom;
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
650 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
651 rows[i].pos = y;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
652 if(rows[i].expand) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
653 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
654 }
921
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
655 if(rows[i].size > 0) {
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
656 y += rows[i].size += w->grid.rowspacing;
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
657 }
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
658
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
659 vexpand2 = 0;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
660 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
661
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
662 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
663 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
664 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
665 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
666 GridDef r = rows[constraints->grid.y];
901
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
667 int x = c.pos + constraints->grid.margin_left;
884d70e847a3 implement grid margin (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 900
diff changeset
668 int y = r.pos + constraints->grid.margin_top;
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
669 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
670 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
671 if(constraints->grid.hfill) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
672 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
673 Dimension cwidth = 0;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
674 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
675 if(constraints->grid.x+j < ncols) {
921
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
676 cwidth += cols[constraints->grid.x+j].size + (j > 0 ? w->grid.columnspacing : 0);
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
677 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
678 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
679 width = cwidth;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
680 } else {
921
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
681 width = c.size - w->grid.columnspacing - constraints->grid.margin_left - constraints->grid.margin_right;
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
682 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
683 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
684 if(constraints->grid.vfill) {
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
685 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
686 Dimension cheight = 0;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
687 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
688 if(constraints->grid.y+j < nrows) {
921
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
689 cheight += rows[constraints->grid.y+j].size + (j > 0 ? w->grid.rowspacing : 0);
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
690 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
691 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
692 height = cheight;
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
693 } else {
921
c2b318b93062 take manage status of child widgets into account in the grid layout (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 913
diff changeset
694 height = r.size - w->grid.rowspacing - constraints->grid.margin_top - constraints->grid.margin_bottom;
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
695 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
696 }
900
6e1485d5451a fix tabbar resizing (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 752
diff changeset
697
429
0921f8a5d535 implement progressbar (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 426
diff changeset
698 if(width > 0 && height > 0) {
0921f8a5d535 implement progressbar (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 426
diff changeset
699 XtConfigureWidget(child, x, y, width, height, child->core.border_width);
0921f8a5d535 implement progressbar (Motif)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 426
diff changeset
700 }
406
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
701 //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
702 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
703
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
704 free(cols);
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
705 free(rows);
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
706 }
0ebf9d7b23e8 add first code of the new Motif implementation, implement buttons
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
707

mercurial